미리 알아야 할 내용들
[비트코인 구조] 비트코인 블록 기본 규칙
미리 알아야 할 내용들 [비트코인 구조] 비트코인 블록(Block) 기초 미리 알아야 할 내용들 [비트코인 기본 구조] 2. 타임스탬프(Timestamp) [비트코인 기본 구조] 1. 이중 지불 문제 익명의 비트코인 개
kwjdnjs.tistory.com
[비트코인 구조] 빅 엔디안(Big endian)과 리틀 엔디안(Little endian)
빅 엔디안(Big endian)과 리틀 엔디안(Little endian) 엔디안(Endian)은 바이트가 저장되는 순서입니다. 빅 엔디안은 일반적으로 사람이 읽는 순서로, 리틀 엔디안 빅 엔디안의 역순으로 저장합니다. 예를
kwjdnjs.tistory.com
블록 버전
비트코인 블록체인은 지금까지 여러 차례의 소프트포크를 통해 업그레이드 되어왔습니다. 이 과정에서 새로운 소프트포크에 대응하는 노드와 블록을 구별하는 방법과 규칙이 필요해졌습니다. 따라서 비트코인 개발자들은 비트코인 블록의 버전을 작성하는 표준을 만들었습니다.
버전 1~4
비트코인 블록은 4바이트(16진수 8자리)의 버전으로 시작합니다. 최초의 비트코인 블록은 다음과 같은 버전을 가지고 있습니다.
비트코인 제네시스 블록 버전: 01000000
블록의 버전은 리틀 엔디안 값이므로 실제 버전은 1 임을 알 수 있습니다.
비트코인 제네시스 블록 버전(빅 엔디안): 00000001
이후 몇 차례의 소프트포크를 통해 블록의 버전은 4로 증가하였습니다. 그리고 이 과정에서 보다 효율적인 버전 관리가 필요성이 제기되어 BIP0009가 등장하게 되었습니다.
BIP0009
BIP0009는 블록 버전 4 이후의 블록의 버전에 관한 표준을 다루고 있습니다. 지금부터는 이 표준에 대해 알아보겠습니다.
BIP0009를 따르는 블록은 해당 표준을 만족한다는 의미로 첫 3비트(바이트가 아닌 비트)를 001로 설정합니다. 블록 버전의 크기인 4바이트는 32비트이므로, 실제 사용할 수 있는 크기는 3비트를 제외한 29비트가 됩니다.
실제 소프트포크는 이 29개의 비트를 일부 활성화하여 진행됩니다. 소프트포크를 진행할 채굴자들은 시작시간과 종료시간을 정하고 이 기간 동안 블록의 버전 필드의 비트 활성화 여부를 통해 소프트포크 준비 여부를 확인합니다. 95% 이상의 노드가 준비 완료를 표시하게 된다면 소프트포크는 성공적으로 진행됩니다.
다음은 실제 최근에 채굴된 어떤 블록의 버전입니다.
- 버전(16진수): 20600000
- 버전(비트): 00100000011000000000000000000000
이를 분석해보면 다음과 같습니다. 비트의 순서는 뒤에서 0부터 세어야 합니다.
- BIP0009 표준을 뜻하는 비트(31~29): 001
- 활성화된 비트: 22, 21번 비트
활성화된 비트를 이용하면 해당 블록을 채굴한 노드가 어떤 BIP에 대한 소프트포크에 대응하고 있는지에 대해 알 수 있습니다.
지금까지 비트코인 블록 버전에 대해 간단하게 살펴봤습니다. 감사합니다.
이어지는 글들
[비트코인 구조] 머클 트리(Merkle Tree)
미리 알아야 할 내용들 [비트코인 구조] 비트코인 블록 기본 규칙 미리 알아야 할 내용들 [비트코인 구조] 비트코인 블록(Block) 기초 미리 알아야 할 내용들 [비트코인 기본 구조] 2. 타임스탬프(Tim
kwjdnjs.tistory.com
'비트코인 > 비트코인 구조' 카테고리의 다른 글
[비트코인 구조] SPV(Simplified Payment Verification) (0) | 2022.12.22 |
---|---|
[비트코인 구조] 머클 트리(Merkle Tree) (0) | 2022.12.14 |
[비트코인 구조] 비트코인 블록 기본 규칙 (0) | 2022.12.01 |
[비트코인 구조] 비트코인 블록(Block) 기초 (0) | 2022.11.29 |
[비트코인 구조] 세그윗에서 증인(Witness) 데이터를 전송하는 방식 (0) | 2022.11.19 |