[가상화폐] 이더리움 트렌젝션의 실행
- Work4Block
- 0
- 2,740
- 0
- 0
- 글주소
- 06-18
이더리움 트렌젝션은 어떻게 실행되는지 궁금하여 분석한 내용입니다.
아래 그림과 같이 이더리움 트렌젝션은 마이닝된 블록이 체인에 삽입될 때 실행됩니다.
블록에 포함된 트렌젝션을 루프안에서 Process함수로 처리하는데
- 기본 트렌젝션 비용인 Intrinsic가스(21000unit)을 소모합니다.
- 트렌젝션을 전송한 어카운트의 nonce를 1 증가시킵니다.
- 송/수신 계정의 이더리움 잔고를 업데이트합니다.
3-1. 계약계정일 경우엔, contract코드를 실행하고
3-2. 소모된 가스를 업데이트합니다.- gas를 refund한 후에, 보상을 마이닝한 노드의 coin base에 추가합니다.
- 이후 state가 업데이트 되었기 때문에, State루트를 재계산하고
- 트렌젝션의 실행 결과를 나타내는 영수증을 생성합니다.
- 마지막으로 합의를 거친후 블록을 체인에 기록하게 됩니다.
이더리움이 State머신이라는 의미가 무었인지 이제 조금 알 것 같네요
트렌젝션마다 어카운트의 balance값이 변하기 때문이였네요.
어카운트가 변하면 , 어카운트를 포함하는 StateObject가 변하고
그것을 저장하는 State DB가 변하기 때문에
Storage trie를 새로 만드는 부분까지 확인할 수 있었습니다..
지극히 개인적으로 이더리움 주석 한글화 프로젝트를 진행하고 있습니다.
https://github.com/NAKsir-melody/go-ethereum