Block Header의 6가지 정보
BlockChain,NFT,Web3.0 2021. 12. 19. 19:25Block
블록은 블록체인의 원소로서 개념적으로는 다수의 거래 정보의 묶음을 의미한다.
블록은 블록 헤더와 거래 정보, 기타 정보로 구성된다.
블록 헤더는 version, previousblockhash, merklehash, time, bits, nonce 이렇게 6개의 정보로 구성된다.
거래 정보는 입출금과 관련한 여러가지 정보를 가지고 있다.
기타 정보는 블록 내에 있는 정보 중에서 블록 헤더와 거래 정보에 해당하지 않는 정보를 말하며, 블록 해쉬 계산에 사용되지 않는다.
Block Header
블록 헤더는 다음의 6가지 정보로 구성
version : 소프트웨어/프로토콜 버전
previousblockhash : 블록 체인에서 바로 앞에 위치하는 블록의 블록 해쉬
merklehash : 개별 거래 정보의 거래 해쉬를 2진 트리 형태로 구성할 때, 트리 루트에 위치하는 해쉬값
time : 블록이 생성된 시간
bits : 난이도 조절용 수치
nonce : 최초 0에서 시작하여 조건을 만족하는 해쉬값을 찾아낼때까지의 1씩 증가하는 계산 회수
참고:https://homoefficio.github.io/2016/01/23/BlockChain-%EA%B8%B0%EC%B4%88-%EA%B0%9C%EB%85%90/
머클트리
머클트리(Merkle Tree)는 블록에 포함된 거래 내역을 나무 형태로 요약한 것이다.
1979년 머클트리를 개발한 랄프 머클(Ralph Merkle)의 이름을 따서 머클트리라고 부르며 해시트리(Hash Tree),
혹은 이진트리(Binary Tree)라고도 한다.
http://wiki.hash.kr/index.php/%EB%A8%B8%ED%81%B4%ED%8A%B8%EB%A6%AC
논스(nonce)는 블록체인에서 목표값 이하의 블록 해시를 찾기 위해 임시로 사용하는 숫자이다. 넌스, 난스 또는 임시값이라고도 한다.
논스(nonce)는 비트코인의 창시자인 사토시 나카모토(Satoshi Nakamoto)가 쓴 비트코인 백서에 나오는 용어이다.[1]
블록체인은 다수의 거래내역을 모아 하나의 블록을 구성하고, 그 블록을 대표하는 해시값을 생성하여 다른 블록과 체인처럼 연결된다. 이 때, 블록을 대표하는 해시값인 블록해시를 생성하려면, 일정한 조건을 만족해야 한다. 그 일정한 조건이란, 블록 난이도에 따라 자동으로 설정된 '목표값'보다 더 작은 블록해시값을 찾아야 한다는 제약조건이다. 해시는 랜덤하게 생성되기 때문에, 수없이 많은 연산을 반복해서 미리 정해진 목표값 이하의 해시값이 나오도록 해야 한다. 이때 랜덤한 해시값을 생성할 수 있도록 매번 임시값을 사용해야 하는데, 그 임시값이 바로 논스이다.
일반적으로 블록의 해시값은 해당 블록의 생성일시, 버전, 비츠(bits), 루트해시, 이전 블록의 해시, 그리고 논스(nonce)라고 불리는 임시값 등을 조합한 후 해시로 변환하여 생성한다.[2] 해당 블록의 생성일시, 버전, 난이도, 루트해시와 이전 블록의 해시값은 이미 확정되어 정해진 값을 가지고 있지만, 논스라는 임시값이 달라짐에 따라 해시 연산 결과로 생성되는 블록 해시값도 다양하게 나올 수 있다. 예를 들어 논스가 1인 경우의 해시값과 2인 경우의 해시값은 전혀 다르다. 이 논스 값을 수없이 바꿔가면서 하나씩 대입하다가 새로 생성된 해시값이 일정한 목표값보다 더 작을 경우에 새로운 블록이 성공적으로 생성된다.
이처럼 특정한 블록에 대해 목표값 이하의 크기를 가진 해시값을 생성하는 논스값을 찾음으로써 새로운 블록을 생성하는 행위를 작업증명(PoW)이라고 한다. 작업증명의 대가로 일정한 개수의 암호화폐를 지급받는 것을 채굴(採掘) 또는 마이닝(mining)이라고 한다. 결국 채굴을 통한 작업증명 과정은 목표값 이하의 블록해시를 생성하는 '논스값'을 찾는 행위이다.
http://wiki.hash.kr/index.php/%EB%85%BC%EC%8A%A4_(%EC%9E%84%EC%8B%9C%EA%B0%92)
'BlockChain,NFT,Web3.0' 카테고리의 다른 글
Unity + Metamask (Android) (2) | 2022.01.06 |
---|---|
Unity + MetaMask (WebGL) (0) | 2022.01.06 |
Step 04. javascript로 블록 체인 만들기_블록 만들기 (0) | 2021.12.17 |
Step 03. javascript로 블록 체인 만들기_생성자 함수 (0) | 2021.12.17 |
Step 02. javascript로 블록 체인 만들기_환경설정 (0) | 2021.12.17 |