clique

in #clique5 years ago

Ethereum PoA 합의 알고리즘은 문서가 부족하다.
코드를 분석하면서, 간단한 흐름도를 작성해 보았다.

PoA이기 때문에 authority라는 block producer리스트를 관리한다.
이 리스트는 투표를 통해 업데이트 할수 있고, 초기에 최소 1개의 프로듀서가 설정되어 있어야 한다.

생성자의 입장에서
기본적으로 마이닝 쓰레드는 계속 동작하지만, 내 순서가 아니기때문에 최종 블록이 생성되지 않는다. 내순서가 되면, 블록의 헤더를 생성하게 되는데 부모의 시간 + 나의 시간이 duration보다 작으면 wait을 호출하여 헤더 생성을 잠시 멈추는 방식으로 block duration을 조절한다.
이 후 블록이 Finalize되고 bloadcasting 된다.

수신자의 입장에서는 블록의 서명자가 authority리스트에 있으면 블록을 검증하고 추가한다.
투표내용이 있다면 수집하여 과반수 이상의 투표가 집계되면 인증자 리스트를 업데이트 한다.

도표1.png

Sort:  

Congratulations @sigmoid! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Do not miss the last post from @steemitboard:

SteemitBoard - Witness Update
Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Coin Marketplace

STEEM 0.28
TRX 0.13
JST 0.032
BTC 60918.56
ETH 2919.11
USDT 1.00
SBD 3.56