블록체인이 체인의 연속이고, 블록들이 무수히 많이 연결되었다는 것은 많은 블록체인에 호기심 많은 사람들은 다들 알 것이다. 하지만 블록체인의 블록 안에 실제로 어떠한 데이터들이 들어 있는지 모르는 사람들이 많다. 이러한 블록체인에 블록 안에는 실제로 어떠한 데이터들이 어떻게 들어 있는지 보자.
블록의 구조
1. 현재 블록 해시
2. 블록 Header
2-1) Version: 비트코인 소프트웨어 버전 정보를 나타냄
2-2) Previous block hahsh: 이전 블록의 해시 값을 펴시, 이 값은 이전 해시 값을 가리키는 해시 포인터의 역할을 하고, 블록들은 체인으로 연결됨, 블록 안에 있는 트랜잭션
2-3) Merkle hash root: 머클 루트는 머클 트리의 루트 노드 값이다. 머클 트리는 블록에 있는 모든 트랜잭션의 해시 값을 이진트리로 요약할 것이다. 머클트리는 트랜잭션 데이터를 보호할 목적으로 사용된다.
2-4) Timestamp: 타임스탬프는 이 블록이 생성된 날짜와 시각이다. 시간은 UTC를 기준으로 표시한다. 타임스태프는 유 닉스 시간으로 1970년 1월 1일 00:00:00시부터 현재까지 경과한 시간을 초로 표시한다.
2-5,6) Bits & Nonce: 이 정보는 채굴의 난이도와 일종의 해답에 관련된 것이다. 임의의 논스값을 헤더에 넣은 상태에서 헤더의 해시를 계산한 경우, 만약 이 해시값이 비츠가 표현하고 있는 어떤 값보다 작으면 채굴에 성공한 것이다. 즉 비 츠는 채굴의 성공 여부를 판단하는 정보이고 논스는 해답에 해당한다.
2-5) Bits: 채굴의 성공여부
2-6) Nonce: 해답
3. 거래 개수
4. 블록 body
4-1) 트랜잭션 카운트: 블록 바디에 기록된 트랜잭션의 개수, 이 트랜잭션들은 채굴자가 선택해서 이 블록에 포함시킨 것이다. 채굴자는 수수료가 높은 트랜잭션을 우선적으로 선택한다. 트랜잭션을 많이 선택할수록 보상은 커지지만 채굴 시간이 많이 소요되므로 채굴자들은 경쟁우위와 보상의 크기를 절충해서 트랜잭션의 최적 개수를 결정한다.
4-2) 트랜잭션: 비트코인을 주고받는 거래
5. 기타 정보
**비트코인 코어에서 블록 확인**
{
"hash": "hash"(문자열) 블록 해시(제공된 것과 동일)
"confirmations": n, (숫자) 확인 횟수 또는 블록이 메인 체인에 없는 경우 -1
"크기": n, (숫자) 블록 크기
"strippedsize": n, (숫자) 감시 데이터를 제외한 블록 크기
"weight": n(숫자) BIP 141에 정의된 블록 가중치
"height": n, (숫자) 블록 높이 또는 인덱스
"version": n, (숫자) 블록 버전
"versionHex": "00000000", (문자열) 16진수 형식의 블록 버전
"merkleroot": "xxxx", (문자열) 머클 루트
"tx": [(문자열 배열) 트랜잭션 ID
"transactionid"(문자열) 트랜잭션 ID
,...
],
"time": ttt, (숫자) epoch(1970년 1월 1일 GMT) 이후의 블록 시간(초)
"mediantime": ttt, (숫자) Epoch(1970년 1월 1일 GMT) 이후의 중앙 블록 시간(초)
"nonce": n, (숫자) nonce
"bits": "1 d00 ffff", (문자열) 비트
"difficulty": x.xxx, (숫자) 난이도
"chainwork": "xxxx", (문자열) 이 블록까지 체인을 생성하는 데 필요한 예상 해시 수(16진수)
"nTx": n, (숫자) 블록의 트랜잭션 수입니다.
"previousblockhash": "hash", (문자열) 이전 블록의 해시
"nextblockhash": "hash"(문자열) 다음 블록의 해시
}
'블록체인' 카테고리의 다른 글
토큰을 만들어보자! (0) | 2023.11.24 |
---|---|
블록체인 MultiCall (0) | 2023.11.21 |
블록체인 용어정리 (0) | 2021.07.27 |
P2P 네트워크 와 블록체인 네트워크 설계 (0) | 2021.07.19 |
데이터베이스와 분산원장? (0) | 2021.07.08 |