225 / 691TARGET

Mining Target

작업 증명의 수치 임계값

Mining Target은 헤더 해시를 비교하는 임계값이다. 숫자 자체, 압축 인코딩 nBits, 규칙이 해당 블록에 실제로 요구하는 목표값을 구분하자.

Mining Target은 작업 증명을 검증할 때 헤더 해시에 적용하는 음이 아닌 수치 임계값이다. 유효한 네트워크 목표값은 양수이며 규칙상 허용되어야 하고, 해시는 이를 넘으면 안 된다. 낮을수록 찾기 어렵다.

Bitcoin Core v29.0은 작업 증명 검사에서 계산된 목표값보다 큰 해시를 거절한다. 따라서 조건은 엄격한 미만이 아니라 hash ≤ target이다. nonce만이 아니라 전체 헤더 해시의 수치를 비교한다. [Bitcoin Core v29.0 — Proof-of-work checks]

수치가 다른 해시도 앞자리 0의 개수가 같을 수 있다. 나머지 숫자와 전체 수치가 목표값에 비해 어떤지도 중요하다. 0은 희소성을 설명하지만 전체 hash ≤ target 비교를 대신하지 못한다. [Bitcoin Core v29.0 — Proof-of-work checks]

nBits 필드는 32비트지만 목표값은 256비트 공간에서 해석한다. 인코딩에는 지수와 부호 비트가 있는 계수가 들어간다. 예를 들어 0x04123456은 0x12345600으로 디코딩된다. 이는 인코딩 예시이지 현재 요구되는 네트워크 목표값이 아니다. [Bitcoin Core v29.0 — Compact arithmetic]

80바이트 헤더에서 nBits는 네 개의 little-endian 바이트로 직렬화된다. 따라서 숫자 0x1d00ffff는 ff ff 00 1d에 해당한다. 데이터를 읽는 바이트 순서를 화면에 표시된 숫자의 자릿순서와 혼동하지 말자. [Bitcoin Developer Reference — Block headers and nBits]

Bitcoin Core v29.0의 DeriveTarget은 음수 목표값, 0, 오버플로, 네트워크 powLimit 초과를 거절한다. nBits의 숫자를 임의로 높이는 것만으로는 안 된다. 압축 표현을 성공적으로 풀었다고 목표값의 유효성이 증명되지는 않는다. [Bitcoin Core v29.0 — Proof-of-work checks]

맥락 검증은 이전 블록과 네트워크 규칙에 따라 nBits를 GetNextWorkRequired와 비교한다. 다르면 bad-diffbits가 발생한다. 임의로 고른 쉬운 목표값보다 낮은 해시라도 잘못된 nBits를 정당화하지 못한다. [Bitcoin Core v29.0 — Contextual and block validation]

균등한 256비트 해시 모델과 허용된 목표값 T에서 시도당 확률은 p = (T + 1) / 2^256이다. 0부터 T까지 양 끝을 포함한 값이 허용되기 때문이다. 이는 비교 규칙에서 도출한 것으로, 목표값만으로 해시레이트나 다음 블록의 정확한 시각을 정하지는 못한다. [Bitcoin Core v29.0 — Proof-of-work checks]

Bitcoin Core는 헤더 외에도 거래 루트, coinbase, 블록 제한, 거래 유효성을 검사한다. 올바른 목표값을 만족하는 것은 필요하지만 다른 검사를 대체하지 못한다. 낮은 해시가 무효한 블록 내용을 고쳐 주지는 않는다. [Bitcoin Core v29.0 — Contextual and block validation]

더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Share Difficulty, Proof of Work, Nonce, 블록 헤더. 다음 항목에서도 이 글을 참조합니다 ASIC Miner, Nonce, Mining Share, Share Difficulty.

DOC · 001Bitcoin Core v29.0 — Proof-of-work checks1차 출처 ↗DOC · 002Bitcoin Developer Reference — Block headers and nBits문서 ↗DOC · 003Bitcoin Core v29.0 — Compact arithmetic1차 출처 ↗DOC · 004Bitcoin Core v29.0 — Contextual and block validation1차 출처 ↗
1차 출처 우선 · 투자 조언이 아닙니다