본문 바로가기
블록체인/이더리움

이더리움 블록헤더

by 후닝훈 2021. 6. 19.
반응형

엉클블록

 

 

- 블록 생성에 성공하였고 검증에 오류가 없어서 이더리움 네트워크를 통해 다른 노드에 브로드 캐스팅은 되었으나, 메인 체인으로 채택되지 못한 블록들 엉클 블록(uncle block, stale block)이 됨

- Bitcoin은 보상 지급 X, 이더리움은 조금의 보상이 있음.

엉클블록이 많아지는 경우

- 블럭을 생성하는 속도가 빨라지면 엉클블럭은 많아진다.

- 속도가 빠르다면 블록에 컨펌받고, 검증 후 메인체인이 되기전에 새로운 블록이 생성되기 때문이다.

엉클블록이 많아지면 생기는 문제점

트랜잭션 처리를 지연 될 수 있다.

동시에 두 마이너가 블록을 생성한다면 마이너 들에게는 서로 다른 트랜잭션이 포함하지만 엉클블록에 포함된 트랜잭션은 처리 되지 않기 때문에 처리속도가 늦어짐

• Confirm을 받기 전에는 확정되지 않음.

  >컨펌이란 모든 사람이 동일한 블록체인을 가진 곳까지 컴펌 받았다 표현.

• t시간에 보냈으나, t+n 시간에 처리될 수 있음.

컴퓨팅 파워 낭비

엉클블록의 생성과정은 불필요한 해시계산을 위한 컴퓨팅 파워를 쓴 결과

보안문제

블록체인의 폭이 넓어 지고, 어떤게 메인체인인지 확인하는 과정이 어려워짐. 또한 자칫 컴퓨팅 파워가 강한 마이너에 의해 블록체인이 악의적으로 변경되는 문제 발생 가능.

• 블록체인의 속도를 매우 빠르게 할 수 없는 이유임. (컨펌되는 속도가 있기 때문에)

Cf

• 지연되기에 난이도가 하락된다.

 

블록 헤더의 구조

 

이더리움의 PoW - Ethash

- 시간을 단축시키거나, Difficulty 의 수식을 바꾼다거나 등 기능이 있는 이더리움의 PoW

- Ethash로 인해서 이더리움의 블록헤더엔 Mix Hash가 존재한다.

State Root / Transaction Root / Receipt Root

- State Root : A지갑 10eth, B지갑 5eth 가 있다는 모든 정보를 담긴 루트. (World State Trie)

- Transaction Root : A->B 에게 보냈다는 TX 정보.

- Receipt Root : 트랜잭션을 보내고 나서 처리된 내용. 가스는 얼마는 들었고, 소모된 가스는 얼마고의 정보가 담김.

 

World State Trie

Merkle patricia trie

- 비트코인은 TX에 대한 정보를 머클트리로 구성, 이더리움은 Account에 대한 정보

- Nonce : TX 수

- Balance : Eth 개수

- Codehash : 스마트 컨트랙트 코드

- SR : 코드를 수행할때 추가되는 변수

- 최종적으로 State Root의 해시루트 값만 저장.

- 리프노드 하나에 하나의 Account 정보저장. 

- 변경된 값만 새로 쓰고, 나머지는 이전의 블록의 정보를 참조해서 가져옴.

- 머클트리는 10분간의 TX 정보를 담음.

 

Transaction Tree

 

- s[0] : 블록을 만들기 전 초기 상태거래 내용

- ( Tx[0], Tx[1], … , Tx[n] )을 순차적으로 적용하여 상태 업데이트
  (S[1], S[2], … , S[n])

- 상태변화에 따른 각 계정의 변경된 balance 를 기록

- S_FINAL 상태의 Account 내용이 담긴 block을 배포

- Block에서 처리된 Tx들은 머클트리 형태로 Tx Tree에 기록 됨

 

Transaction Receipt

Transaction Receipt
Post-TX state TX 이 수행 된 후의 World State Root
Gas used TX 이 소모한 가스의 양
TX logs TX 이 발생시킨 로그
Bloom Filter 효율적인 로그 검색을 위한 자료구조

Bloom Filter의 자료구조

 

State Root / Transaction Root / Receipt Root

- Root : 리프노드에 해당하는 값들을 두개 합쳐 해쉬 하는것을 반복하여, 마지막 루트의 해쉬값을 저장 (검증, 메모리절약)

반응형

'블록체인 > 이더리움' 카테고리의 다른 글

이더리움 Merkle-Patricia Trie  (0) 2021.06.20
이더리움 Transaction 2  (2) 2021.06.11
이더리움 Transaction  (0) 2021.06.11
이더리움의 Account  (0) 2021.06.11
이더리움 가스  (0) 2021.06.10

댓글