228 / 691GBT

getblocktemplate

노드에서 채굴 템플릿을 받는 인터페이스

getblocktemplate은 데이터 받기, 제안 사전 검사, 블록 제출을 구분합니다. 올바른 클라이언트는 규칙, 거래 식별자와 노드 응답을 이해해야 하며, RPC 호출 성공 자체로 아무것도 채굴되지는 않습니다.

getblocktemplate은 후보 블록 구성 데이터를 받거나 제안을 평가하는 JSON-RPC 메서드입니다. 이 설명은 Bitcoin Core 29에 근거하며, 특정 구현의 동작이 같은 프로토콜의 모든 서버에 자동 적용되지는 않습니다.

기본 mode는 template입니다. 응답은 채굴 소프트웨어에 데이터를 제공하며, 발견된 proof of work를 주는 것이 아닙니다. 이 요청에는 지급 주소 매개변수가 없으며, coinbase 구성과 해답 탐색은 다음 단계입니다. [Bitcoin Core 29 — getblocktemplate RPC]

Bitcoin Core v29.0은 요청 rules에 segwit을 요구하며 signet 네트워크에서는 signet도 요구합니다. 문자열을 쓰는 것은 규칙 구현을 대신하지 못합니다. capabilities는 인터페이스 기능을 설명하며 필수 rules를 대체할 수 없습니다. [Bitcoin Core v29.0 — Mining RPC implementation]

BIP 145는 witness를 제외한 txid와 포함한 hash를 구분합니다. 주 Merkle root에는 witness 해시가 아닌 txid를 사용합니다. data는 직렬화된 거래의 16진수 표현이며, 식별자만으로 전체 거래 바이트를 대신할 수 없습니다. [BIP 145 — SegWit template fields]

클라이언트는 받은 longpollid를 다음 대기 요청에 돌려보냅니다. BIP 22는 특정 의미를 가정하지 말라고 하므로 이식 가능한 클라이언트는 이를 자체 형식으로 분석해서는 안 됩니다. Long polling에는 긴 타임아웃과 반복 실패 후 지연이 필요하며, 즉시 재시도 반복은 피해야 합니다. [BIP 22 — Long polling]

Bitcoin Core v29.0은 템플릿을 캐시하며 이전 블록이 바뀌거나 생성 후 5초가 넘은 시점에 mempool이 바뀌면 갱신합니다. 헤더 시간은 별도로 갱신합니다. 따라서 매 호출이 최신 거래를 포함하거나 독립적인 채굴 작업을 만들지는 않습니다. [Bitcoin Core v29.0 — Mining RPC implementation]

proposal 모드의 data에는 전체 후보 블록을 16진수로 담습니다. Core는 Merkle root를 확인하지만 유효한 proof of work는 요구하지 않습니다. inconclusive-not-best-prevblk는 이전 블록이 현재 체인 끝과 다르다는 뜻이며 제안 유효성의 완전한 평가가 아닙니다. [Bitcoin Core v29.0 — Mining RPC implementation]

submitblock은 해시만이 아닌 전체 블록을 hexdata로 받습니다. Bitcoin Core 29는 수락 시 null을 반환하며, 아니면 결과 문자열을 반환할 수 있습니다. 선택적인 dummy는 무시됩니다. 노드 수락은 활성 체인에서 영구적인 확인을 보장하지 않습니다. [Bitcoin Core 29 — submitblock RPC]

mainnet에서 Bitcoin Core v29.0은 연결된 피어가 없거나 initial block download 중이면 템플릿을 제공하지 않습니다. 이는 노드의 준비 상태를 설명하며 특정 블록의 무효성을 뜻하지 않습니다. 검증 거부 이유나 정상 대기 중인 long polling과 구별해야 합니다. [Bitcoin Core v29.0 — Mining RPC implementation]

더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Block Template, 비트코인 채굴, Stratum V2, Extranonce. 다음 항목에서도 이 글을 참조합니다 ASIC Miner, Solo Mining, Job Negotiation.

DOC · 001Bitcoin Core 29 — getblocktemplate RPC문서 ↗DOC · 002Bitcoin Core v29.0 — Mining RPC implementation1차 출처 ↗DOC · 003BIP 145 — SegWit template fields명세 ↗DOC · 004BIP 22 — Long polling명세 ↗DOC · 005Bitcoin Core 29 — submitblock RPC문서 ↗
1차 출처 우선 · 투자 조언이 아닙니다