비트코인/비트코인 구조

[비트코인 구조] 비트코인 블록 기본 규칙

라이튼 2022. 12. 1. 22:26

미리 알아야 할 내용들


 

[비트코인 구조] 비트코인 블록(Block) 기초

미리 알아야 할 내용들 [비트코인 기본 구조] 2. 타임스탬프(Timestamp) [비트코인 기본 구조] 1. 이중 지불 문제 익명의 비트코인 개발자 사토시 나카모토는 2008년 논문과 함께 비트코인 코어를 처음

kwjdnjs.tistory.com

 

[비트코인 구조] 비트코인 해시 함수(sha-256, hash256, hash160)

비트코인 해시 함수(sha-256, hash256, hash160) 해시 함수는 입력 데이터를 고정된 길이의 해시값으로 변환하는 함수를 말합니다. 비트코인에서는 기본적인 해시 함수인 sha-256과 이를 응용한 hash256, has

kwjdnjs.tistory.com

 

[비트코인 구조] 빅 엔디안(Big endian)과 리틀 엔디안(Little endian)

빅 엔디안(Big endian)과 리틀 엔디안(Little endian) 엔디안(Endian)은 바이트가 저장되는 순서입니다. 빅 엔디안은 일반적으로 사람이 읽는 순서로, 리틀 엔디안 빅 엔디안의 역순으로 저장합니다. 예를

kwjdnjs.tistory.com

 

[비트코인 구조] 가변 길이 정수(VarInt)

미리 알아야 할 내용들 [비트코인 구조] 빅 엔디안(Big endian)과 리틀 엔디안(Little endian) 빅 엔디안(Big endian)과 리틀 엔디안(Little endian) 엔디안(Endian)은 바이트가 저장되는 순서입니다. 빅 엔디안은

kwjdnjs.tistory.com


비트코인 블록 기본 규칙

 

 이번 글에서는 저번 글에 이어서 실제 비트코인 블록의 기본 구조와 규칙에 대해 알아보겠습니다. 먼저 분석할 블록을 먼저 불러오겠습니다. 다음은 비트코인 블록체인에서 가장 처음 채굴된 블록인 제네시스 블록입니다.

 

 

Blockchain.com Explorer | BCH | ETH | BCH

The easiest and most trusted transaction search engine and block explorer.

www.blockchain.com

 

0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a29ab5f49ffff001d1dac2b7c0101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000

 

1. 블록 헤더와 트랜잭션

 블록은 크게 블록 헤더와 트랜잭션으로 나뉩니다. 블록의 헤더는 이전 블록의 해시 값, 작업증명을 위한 논스 값 등을 가지고 있는 블록의 핵심 부분이며, 트랜잭션은 비트코인 트랜잭션을 말합니다.

 

블록 헤더: 0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a29ab5f49ffff001d1dac2b7c

 

트랜잭션 전체 개수(가변 길이 정수): 01

 

트랜잭션: 01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000

 

트랜잭션의 구조에 대해서는 이전 글에서 다뤘으므로 이 글에서는 생략하겠습니다. 관련 내용에 대해서는 아래 글을 참조해주세요.

 

[비트코인 구조] 트랜잭션 기본 규칙

미리 알아야 할 내용들 [비트코인 구조] 비트코인 트랜잭션(Transaction) 기초 미리 알면 좋은 내용들 [블록체인 용어] 블록체인(Block Chain) 블록체인이란 발생한 거래들을 블록에 담고 블록들을 연결

kwjdnjs.tistory.com

 

2. 블록 헤더의 구성

블록 헤더 전체: 0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a29ab5f49ffff001d1dac2b7c

 

 

 블록의 헤더는 크게 블록의 버전, 이전 블록의 해시값, 머클 루트, 비트값, 논스값으로 구성되어 있습니다. 실제 블록을 보면서 하나씩 살펴보겠습니다.

 

 트랜잭션과 마찬가지로 블록의 첫 4바이트(16진수 8자리)는 버전입니다.

 

버전(리틀 엔디안, 4바이트): 01000000

 

  이어지는 32 바이트의 값은 이전 블록의 hash256 해시값입니다. 제네시스 블록의 이전 블록은 존재하지 않으므로 이 블록에서는 비어있는 값입니다.

 

이전 블록 해시(리틀 엔디안, 32바이트): 0000000000000000000000000000000000000000000000000000000000000000

 

 이전 블록 해시 이후에 등장하는 값은 바로 트랜잭션들이 이루는 머클 트리의 루트 해시값인 머클 루트입니다.

 

머클 루트(리틀 엔디안, 32바이트): 3ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a

 

 그다음 등장하는 값은 유닉스 시간으로 표현된 블록 생성시간인 타인스탬프입니다. 총 4 바이트의 값입니다.

 

타임스탬프(4바이트): 29ab5f49

 

 이어지는 값은 작업증명에서 사용되는 값인 비트값과 논스값입니다. 비트 값은 작업증명의 난이도를 결정하는 값이며, 논스값은 작업증명을 위해 노드가 변경하는 값입니다. 두 값 모두 4바이트로 구성되어 있습니다.

 

비트값(4바이트 리틀 엔디안): ffff001d

논스값(4바이트 리틀 엔디안): 1dac2b7c

 

 지금까지 블록의 전반적인 구성에 대해 살펴봤습니다. 이어지는 글에서는 머클 루트, 비트값, 논스값 등이 정확히 어떻게 생성되고 사용되는지에 대해 알아보겠습니다. 감사합니다.

 

이어지는 글들


 

[비트코인 구조] 블록 버전

미리 알아야 할 내용들 [비트코인 구조] 비트코인 블록 기본 규칙 미리 알아야 할 내용들 [비트코인 구조] 비트코인 블록(Block) 기초 미리 알아야 할 내용들 [비트코인 기본 구조] 2. 타임스탬프(Tim

kwjdnjs.tistory.com

 

[비트코인 구조] 머클 트리(Merkle Tree)

미리 알아야 할 내용들 [비트코인 구조] 비트코인 블록 기본 규칙 미리 알아야 할 내용들 [비트코인 구조] 비트코인 블록(Block) 기초 미리 알아야 할 내용들 [비트코인 기본 구조] 2. 타임스탬프(Tim

kwjdnjs.tistory.com

 

[비트코인 구조] 작업증명(Proof-of-Work)과 난이도

미리 알아야 할 내용들 [비트코인 기본 구조] 3. 작업증명(Proof-of-Work) [비트코인 기본 구조] 2. 타임스탬프(Timestamp) [비트코인 기본 구조] 1. 이중 지불 문제 익명의 비트코인 개발자 사토시 나카모

kwjdnjs.tistory.com