블록체인 2.0에서의 블록

박도준·2020년 11월 25일
1

블록체인

목록 보기
8/13

앞서 알아본 블록체인의 블록은 블록체인 1.0(작업 증명 알고리즘을 사용한 블록체인 기술)에서의 블록이었다.

이번에는 블록체인 2.0(스마트 컨트렉트 기능이 추가된 블록체인 기술)의 블록에 대해서 알아본다.



블록의 구성요소

블록체인 1.0을 기반으로 한 비트코인과 블록체인 2.0을 기반으로 한 이더리움의 블록을 통해 살펴본다.

비트코인의 블록은 헤더와 바디로 나누어 볼 수 있다.

이더리움도 비트코인의 블록 구조와 크게 다르진 않지만 블록의 헤더부분에 stack trace와 바디부분에 uncle list값이 추가되어 있다.

  • stack trace : 프로그램 실행 중 특정한 시점에서의 스택 프레임에 대한 리포트

  • uncle list : 비트코인의 이전블록을 이더리움에서는 parent 블록이라고 말하기 때문에 생긴 용어. stale 블록을 unlce 블록이라고 칭함

    • stale 블록 : 정상적인 블록이지만 블록 경쟁에서 밀려 최종적으로 블록체인에 연결이 되지 못한 블록


이더리움 블록 구성

이더리움의 코드(GO)를 보면 아래와 같이 블록과 블록헤더가 struct로 선언되어 있다.

블록


블록헤더

  • ParentHash : 부모 블록의 해시값
  • UncleHash : 현재 블록의 엉클 블록들의 해시값
  • Coinbase : 채굴 후 해당 트랜잭션의 수수료를 받을 계정 주소
  • Root : 계정의 상태정보가 보여있는 머클 패트리시아 트리의 루트 노드 해시값
  • TxHash : 블록의 모든 트랜잭션에 대한 머클트리의 루트노드 해시값
  • ReceiptHash : 블록 내 모든 트랜잭션에 대한 receipt들의 머클트리의 루트노드 해시값
  • Bloom : 로그 정보를 사용하는데 사용하는 32바이트 블룸필터
  • Difficulty : 블록 난이도를 이전블록의 난이도와 타임스탬프로 계산
  • Number : 현재 블록번호
  • GasLimit : 블록당 지급가능한 최대 가스 총합
  • GasUsed : 블록내 트랜잭션에 사용된 가스의 총합
  • Time : 블록의 최초 생성시간
  • Extra : 블록의 기타정보
  • MixDigest,Nounce : 작업증명에서 해시값을 계산하는데 충분한 계산횟수를 보장하기 위해 사용하는 값

Root, TxHash, ReceiptHash는 머클트리의 각 노드를 해시한 최종 루트해시값에 해당하고 나머지 값들은 각각 하나의 상수로 볼 수 있다.


제네시스 블록

제네시스 블록은 블록의 첫번째에 위치하는 최조 블록을 말하며 블록번호 0번에 해당되고 어떤 트랜잭션도 포함되지 않는다.

  • Alloc : 일정량의 이더를 초기 계정에 할당할 때 사용하는 값으로 채굴작업 없이 초기 일정량의 이더를 발생하여 ICO(Initial Coin Offering)를 통해 판매하는데 사용할 수 있다.
  • Coinbase : 채굴 후 보상코인을 수령할 주소
  • Nounce, Mixhash : 채굴 시에 사용되는 값 (각각 8,32바이트)
  • Difficulty : 채굴시의 목표값
  • ExtraData : 32바이트 옵션항목
  • GasLimit : 블록의 최대 가스량
  • ParentHash : 이전 부모블록의 해시값, 제네시스 블록은 부모가 없기 때문에 0으로 할당
  • Time Stamp : 블록의 생성기간
profile
Better late than never

0개의 댓글