의견.png

블록헤더

위키원
leejia1222 (토론 | 기여)님의 2019년 6월 7일 (금) 13:23 판
이동: 둘러보기, 검색

블록헤더(block header)는 블록을 구성하는 요소를 구분한 단위 중 하나이다. 각각의 블록은 머리와 몸이라고 할 수 있는 블록헤더와 블록바디로 구성되어 있다. 블록헤더와 블록바디는 서로의 정보를 비교하면서 위변조 가능성을 확인하며 무결성을 높인다. 비트코인의 블록헤더에는 현재 블록과 이전 블록의 해시값, 해당 블록을 만든 비트코인의 버전, 머클루트, 타임스탬프, 현재 채굴 난이도, 논스가 포함되어 있다. 블록체인 네트워크마다 헤더에 저장되어 있는 내용은 다를 수 있다.

현재 블록의 값은 이전 블록의 값을 해시화해 만들기 때문에 언제든지 해시함수만 알고 있으면 두 블록의 위변조 여부를 확인할 수 있다. 머클루트도 블록바디의 거래내역들을 해시함수로 암호화해 보관하기 때문에 거래내역의 위변조 위험을 차단한다. 여기서 블록체인의 절대적인 보안성을 확인할 수가 있다. 블록헤더와 블록바디에 포함되어 있는 정보가 모두 유기적으로 연결되어 있기 때문이다. 현재 블록의 해시값과 이전 블록의 해시값, 머클루트와 블록바디의 거래내역, 채굴 난이도와 자동으로 주어지는 비츠값이 개별젹으로 존재함과 동시에 서로의 값에 영향을 주기 때문에 하나의 값이 조금만 틀어지더라도 전체의 값이 크게 바뀌게 된다.[1]

  • 비트코인 블록헤더의 구성요소
  1. 버전(version) : 해당 블록의 버전 숫자
  2. 이전 블록 해시(previous block hash) : 이전 블록헤더를 sha256 해시함수를 이용하여 두 번 해싱한 해시값 – SHA256(SHA256( ))
  3. 머클루트(merkle root) : 해당 블록에 포함된 거래정보의 거래 해시를 2진 트리 형태로 구성할 때 트리의 루트에 위치하는 해시값
  4. 타임테이블(time) : 해당 블록의 대략적인 생성 시간, 1970년 01월 01일 이후의 초단위 시간
  5. 비츠(bits) : 블록의 작업증명 알고리즘에 대한 난이도 해시 목표값
  6. 논스(nonce) : 특정 목표값보다 낮은 값을 구하기 위한 카운터
  • 이더리움 블록헤더의 구성요소
  1. 부모해시(parentHash) : 부모 블록의 해시값
  2. 엉클해시(uncleHash) : 현재 블록의 엉클 블록들의 해시값
  3. 주소(beneficiary) : 채굴 후 해당 트랜잭션의 수수료를 받을 계정 주소
  4. 상태루트(stateRoot) : 계정의 상태정보가 모여있는 머클 패트리시아 트리의 루트 노드 해시값
  5. 트랜잭션루트(transactionsRoot) : 블록의 모든 트랜잭션에 대한 머클트리의 루트노드 해시값
  6. 영수증루트(receiptsRoot) : 해당 블록 내 모든 트랜잭션에 대한 일종의 영수증 머클트리의 루트노드 해시값
  7. 로그블룸(logsBloom) : 로그 정보를 사용하는데 필요한 32바이트 블룸필터
  8. 난이도(difficulity) : 블록 생성 난이도
  9. 블록번호(number) : 해당 블록 번호
  10. 가스한도(gasLimit) : 블록 당 지급 가능한 최대 가스의 제한량
  11. 사용된 가스(gasUsed) : 해당 블록 내 트랜잭션에 사용된 가스의 총합
  12. 타임테이블(time : 해당 블록의 최초 생성시간
  13. 믹스해시, 논스(mixHash, nonce : 해당 블록이 충분한 연산을 했음을 입증하는 해시값
  14. 기타(extra) : 블록의 기타 정보

참고자료

같이 보기


  의견.png 이 블록헤더 문서는 블록체인 기술에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.