엉클블록
- 블록 생성에 성공하였고 검증에 오류가 없어서 이더리움 네트워크를 통해 다른 노드에 브로드 캐스팅은 되었으나, 메인 체인으로 채택되지 못한 블록들이 엉클 블록(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 | 효율적인 로그 검색을 위한 자료구조 |
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 |
댓글