첫 번째로 릴리즈된 Casper 0.1.0 코드분석 (1)

in kr-join •  6 years ago  (edited)

안녕하세요 레몬그랩입니다.

이더리움 캐스퍼가 드디어 첫번째 릴리즈를 출시했습니다.

https://github.com/ethereum/casper/releases/tag/v0.1.0

캐스퍼에 대해서 잘 모르시는 분들도 계실텐데요. 캐스퍼는 기존의 PoW 방식의 채굴에서 PoS 방식을 더하여 확장성을 넓혀보겠다는 이더리움 내부 프로젝트입니다.
이렇게 두 가지 종류의 채굴방식을 혼용하는 것을 Hybrid consensus algorithm 을 사용한다고 합니다. Decred 같은 경우가 대표적으로 PoW + PoS 를 사용하는 블럭체인인데요. PoW로 채굴하되 가끔 몇 개를 뽑아서 PoS로 검증하게 됩니다.

캐스퍼도 비슷하게 작동하는 것으로 알고 있구요. 당장 엄청나게 채굴속도가 향상되지는 않겠지만 지속적으로 캐스퍼의 검증비율을 늘려 나가면서 PoW의 난이도를 조금씩 낮춰가면 장기적으로는 속도향상이 있을 것으로 예상됩니다.

캐스퍼 코드 분석

살짝 코드를 흩어 봤는데요. 이더리움 스마트 컨트랙트로 작성되어 있고 솔리디티가 아닌 바이퍼(Vyper)를 사용하고 있네요. 바이퍼의 경우는 이더리움 재단에서 개발중인 Python을 닮은 스마트 컨트랙트 전용 언어입니다. v.py를 확장자로 사용하고 있어요.

https://github.com/ethereum/casper/blob/master/casper/contracts/simple_casper.v.py

Validator

Validator 들이 있고 각 validator들은 dynasty의 range를 가지고 있도록 설계가 되어 있습니다. 대부분의 로직에서 dynasty를 체크하고 있는데 Dynasty란 Finalized 된 checkpoint들을 지칭합니다. (Current dynasty, it measures the number of finalized checkpoints in the chain from root to the parent of current block)

timestamp는 int128 epoch으로 구성하고 있구요. dynasty나 checkpoint들의 timestamp로 사용됩니다.

Reward

마이너에게 reward 를 주는 부분도 보이네요.

send(block.coinbase, floor(reward * self.deposit_scale_factor[self.current_epoch] / 8))

Reward는 총 deposit 에서 high-voting levels의 dynasty 에 해당하는 비율의 보상을 주게 됩니다. 요 부분은 아직 좀 더 봐야 할 것 같네요.

요약

코드를 보고 대충 요약하자면, Deposit 함수를 통해 자신의 지분(Stake)를 맡기고, 이를 통해서 validator 등록을 합니다. 이 validator들이 vote를 하게 되고 해당 vote 결과는 체인에 기록됩니다. target epoch에 두 개 이상의 vote를 할 수 없습니다. Withdraw 함수로 deposit을 꺼낼 수 있고 모든 deposit을 꺼내게 되면 validator에서 제거되게 됩니다.

잠깐 흩어본 거라 엄청난 인사이트는 없었지만 차근차근 시간을 가지고 볼 만한 내용이라고 생각이 되네요.

시간이 허락하는 대로 추가적인 분석을 해 보도록 하겠습니다.

감사합니다~

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

kr-join 태그는 지우려고 했는데 글 수정 시 태그 삭제가 안되네요 ㅠ.ㅠ...다음 번 부터 빼고 쓰도록 하겠습니다!

  ·  6 years ago (edited)

괂찮아요ㅎ 첫 태그는 못지워요ㅎ반가워요 저는 수채화그려드리고 서평도 써요
@raah 오셔서 맘에드시면 팔로 후 댓글 남기세요
다시 뵐께요^^

5월 다시 파이팅해요!
호출에 감사드립니다!