이더리움 트렌젝션의 실행

in #ethereum6 years ago (edited)
이더리움 트렌젝션은 어떻게 실행되는지 궁금하여 분석한 내용입니다.

아래 그림과 같이 이더리움 트렌젝션은 마이닝된 블록이 체인에 삽입될 때 실행됩니다.
블록에 포함된 트렌젝션을 루프안에서 Process함수로 처리하는데

  1. 기본 트렌젝션 비용인 Intrinsic가스(21000unit)을 소모합니다.
  2. 트렌젝션을 전송한 어카운트의 nonce를 1 증가시킵니다.
  3. 송/수신 계정의 이더리움 잔고를 업데이트합니다.
    3-1. 계약계정일 경우엔, contract코드를 실행하고
    3-2. 소모된 가스를 업데이트합니다.
  4. gas를 refund한 후에, 보상을 마이닝한 노드의 coin base에 추가합니다.
  5. 이후 state가 업데이트 되었기 때문에, State루트를 재계산하고
  6. 트렌젝션의 실행 결과를 나타내는 영수증을 생성합니다.
  7. 마지막으로 합의를 거친후 블록을 체인에 기록하게 됩니다.

이더리움이 State머신이라는 의미가 무었인지 이제 조금 알 것 같네요
트렌젝션마다 어카운트의 balance값이 변하기 때문이였네요.

어카운트가 변하면 , 어카운트를 포함하는 StateObject가 변하고
그것을 저장하는 State DB가 변하기 때문에
Storage trie를 새로 만드는 부분까지 확인할 수 있었습니다..

지극히 개인적으로 이더리움 주석 한글화 프로젝트를 진행하고 있습니다.
https://github.com/NAKsir-melody/go-ethereum

Coin Marketplace

STEEM 0.20
TRX 0.13
JST 0.029
BTC 65265.67
ETH 3326.63
USDT 1.00
SBD 2.63