본 글은 비트코인의 작동 원리를 이해하기 쉽게 설명해 놓은 해외 사이트 Learn me a bitcoin 내에 있는 Bits 페이지를 번역한 글입니다. 읽은 것을 개인적으로 이해하기 쉽게 정리하여 작성한 글이다 보니, 어색한 부분이 있을 수도 있습니다. 원문을 읽고자 하시는 분은 위의 링크를 참조해 주세요. 😀
Bits?
- 목푯값(Target)을 간결한 포맷으로 나타낸 값입니다.
bits 필드는 목표값(Target)을 블록 헤더(Block Header)에 저장하는 압축 방식입니다.
Example
Block 406,800번의 목표값을 살펴보겠습니다.
- Target: 0x00000000000000000696f4000000000000000000000000000000000000000000
그리고 이 블록 헤더에 있는 Bits 필드는 다음과 같습니다.
- Bits: 0x180696f4
Bits로 변환하기
Bits는 목표값(Target)의 약식 버전입니다. 처음에는 낯설게 느껴질 수 있지만, 기본적으로 두 부분으로 나누어집니다.
지수(Exponent): 이는 Target의 크기를 바이트로 표시합니다.
계수(Coefficient): 이는 Target의 초기 3바이트를 나타냅니다.
만약 특정 블록이 채굴될 당시의 Target을 알고자 한다면, 해당 블록의 "Bits" 필드를 통해 (약간의 올림 처리가 된) Target을 계산할 수 있습니다. (Bits to Target Tool)
❗️ hexadecimal number 이므로, 지수(Exponent) 값인 0x18 은 24 Bytes를 의미합니다. (10진수 값으로)
✏️ 계수(Coefficient) 부분은 항상 원래의 타겟 값에서 올림 처리됩니다.
✏️ Target은 종종 32바이트로 표시되며, 앞의 모든 0들이 들어갑니다. 하지만 사실상 다음의 모든 것들은 같은 숫자입니다. Target: 0x00000000000000000696f4000000000000000000000000000000000000000000
Target: 0x0696f4000000000000000000000000000000000000000000
Target: 0x696f4000000000000000000000000000000000000000000
왜 Bits를 사용하나요?
Q. 왜 타겟 값을 "Bits"로 변환해서 블록 헤더에 저장할까요? 왜 전체 타겟 값을 그대로 블록 헤더에 저장하지 않는 걸까요?
A. 블록 헤더는 전체 타겟 값의 절대적인 정확함을 굳이 저장할 필요가 없기 때문에, "Bits" 형식을 통해 공간을 절약할 수 있습니다.
'블록체인 > 비트코인' 카테고리의 다른 글
블록 해시(Block hash) (0) | 2023.04.07 |
---|---|
넌스 (Nonce) (0) | 2023.04.07 |
머클 루트 (Merkle Root) (0) | 2023.04.07 |
블록 헤더(Block header) (0) | 2023.04.07 |
블록(Blocks) (0) | 2023.04.07 |