226 / 691XNONCE

Extranonce

채굴용 추가 가변 데이터

Extranonce는 coinbase와 헤더 안의 커밋먼트를 바꾸어 검색 공간을 넓힌다. 독립적인 추가 헤더 필드가 아니며, 풀이 모든 채굴자에게 모든 바이트를 자유롭게 바꾸도록 허용하지는 않는다.

Extranonce는 보통 coinbase 거래 입력에 넣는 가변 데이터다. 이를 바꾸면 Merkle root와 헤더 해싱의 새 입력을 만들 수 있으며 헤더의 32비트 nonce 필드 자체는 늘어나지 않는다.

nonce 필드는 32비트이며 나머지가 같은 헤더에 2^32개의 값을 제공한다. Extranonce는 이 필드를 연장하지 않는다. 다른 데이터를 바꾸어 새 헤더를 구성하고 nonce 값을 다시 시도하게 한다. [Bitcoin Developer Guide — Mining and nonce space]

coinbase의 extranonce를 바꾸면 직렬화 내용과 TXID가 바뀌고 해당 Merkle 트리 가지와 헤더의 Merkle root를 다시 계산한다. 다른 거래를 바꿀 필요는 없다. 하지만 이전 루트를 재계산 없이 그대로 둘 수는 없다. [Bitcoin Developer Guide — Mining and nonce space]

완전히 자유로운 두 바이트는 2^16개의 변형을 허용한다. 32비트 nonce와 그 밖의 고정 데이터를 둔 모델에서는 2^48개의 입력 조합이다. 이는 서로 다른 시도의 공간이며 발견한 블록 수나 전부 탐색한 뒤의 성공 보장이 아니다. [Bitcoin Developer Guide — Mining and nonce space]

BIP 34는 coinbase scriptSig 앞부분에 올바르게 인코딩한 블록 높이를 요구한다. 100바이트 제한은 extranonce뿐 아니라 전체 scriptSig에 적용된다. 가변 영역이 높이를 덮어쓰거나 거래 형식을 위반해서는 안 된다. [BIP 34 — Height in coinbase] [Bitcoin Developer Reference — Coinbase input]

Stratum V2는 extended extranonce를 고정 upstream 접두사, 로컬 예약 부분, downstream 공간으로 나눈다. 이는 불필요한 중복 검색을 막는다. 배정된 extranonce_prefix가 자동으로 말단 채굴자가 자유롭게 바꿀 수 있는 영역이 되는 것은 아니다. [Stratum V2 — Extended extranonce and jobs]

SubmitSharesExtended에서는 coinbase_tx_prefix, extranonce_prefix, extranonce, coinbase_tx_suffix 순서로 coinbase를 구성한다. 제출하는 extranonce 바이트는 협의한 길이여야 한다. 같은 숫자라도 더 짧은 바이트열로 인코딩하면 같은 거래가 되지 않을 수 있다. [Stratum V2 — Extended extranonce and jobs]

Stratum V2의 Standard Job은 고정 Merkle root를 사용하며 version, nonce, nTime의 허용된 부분만 바뀐다. 따라서 표준 장치는 extended 채널처럼 스스로 extranonce를 제출하지 않는다. 상위 노드가 새 작업을 준비할 때 coinbase 변경을 처리할 수 있다. [Stratum V2 — Extended extranonce and jobs]

Stratum V2의 SetExtranoncePrefix는 해당 채널에서 그 메시지 이후 전송된 작업에 적용된다. 결과는 올바른 job_id 및 할당 공간과 계속 연결되어야 한다. 최신 접두사로 과거 결과가 나온 작업의 기록을 대신할 수 없다. [Stratum V2 — Extended extranonce and jobs]

더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Nonce, Merkle tree, Mining Share, Block Template. 다음 항목에서도 이 글을 참조합니다 ASIC Miner, Block Template, getblocktemplate.

DOC · 001Bitcoin Developer Guide — Mining and nonce space문서 ↗DOC · 002Stratum V2 — Extended extranonce and jobs명세 ↗DOC · 003BIP 34 — Height in coinbase명세 ↗DOC · 004Bitcoin Developer Reference — Coinbase input문서 ↗
1차 출처 우선 · 투자 조언이 아닙니다