228 / 691GBT

getblocktemplate

Rozhraní uzlu pro získání těžební šablony

getblocktemplate odděluje získání podkladů, předběžnou kontrolu návrhu a odevzdání bloku. Správný klient musí rozumět pravidlům, identifikátorům transakcí i odpovědím uzlu; úspěšné RPC volání samo nic nevytěží.

getblocktemplate je JSON-RPC metoda pro získání dat k sestavení kandidátního bloku nebo posouzení návrhu. Následující popis vychází z Bitcoin Core 29; konkrétní chování implementace není automaticky vlastností všech serverů stejného protokolu.

Výchozí mode je template. Odpověď obsahuje podklady pro těžební software, nikoli nalezený proof of work. Metoda nepřijímá výplatní adresu jako parametr tohoto požadavku; sestavení coinbase a hledání řešení patří do dalšího postupu. [Bitcoin Core 29 — getblocktemplate RPC]

Bitcoin Core v29.0 vyžaduje v požadavku rules položku segwit; na síti signet také signet. Napsání řetězce není náhradou za implementaci příslušných pravidel. Pole capabilities popisuje funkce rozhraní a nelze jím nahradit povinné rules. [Bitcoin Core v29.0 — Mining RPC implementation]

BIP 145 rozlišuje txid bez witness a hash zahrnující witness. Pro hlavní Merkle root se používá txid, nikoli witness hash. Pole data nese serializovanou transakci v hexadecimálním zápisu; samotný identifikátor není jejími úplnými bajty. [BIP 145 — SegWit template fields]

Klient vrací obdržený longpollid v další čekající žádosti. BIP 22 říká nepředpokládat jeho konkrétní význam; přenositelný klient ho tedy nemá rozebírat jako vlastní formát. Long polling potřebuje dlouhý timeout a po opakovaných chybách prodlevu, nikoli těsnou smyčku opakování. [BIP 22 — Long polling]

Bitcoin Core v29.0 používá cache šablony: mění ji při změně předchůdce nebo při změně mempoolu po více než pěti sekundách od jejího vytvoření. Čas hlavičky přitom aktualizuje zvlášť. Každé volání proto nemusí zahrnovat nejnovější transakci ani vytvářet nezávislou těžební práci. [Bitcoin Core v29.0 — Mining RPC implementation]

V režimu proposal nese data celý kandidátní blok v hexadecimálním zápisu. Core kontroluje Merkle root, ale nevyžaduje platný proof of work. Odpověď inconclusive-not-best-prevblk znamená jiného předchůdce než aktuální špičku; není to úplné posouzení platnosti návrhu. [Bitcoin Core v29.0 — Mining RPC implementation]

submitblock dostává celý blok jako hexdata, nikoli jen hash. Bitcoin Core 29 při přijetí vrací null; jinak může vrátit řetězec výsledku. Volitelný dummy ignoruje. Přijetí uzlem neznamená zaručené trvalé potvrzení v aktivním řetězci. [Bitcoin Core 29 — submitblock RPC]

Na mainnetu Bitcoin Core v29.0 odmítá vydat šablonu bez připojených peerů nebo během initial block download. To popisuje připravenost uzlu, nikoli neplatnost konkrétního bloku. Tyto chyby je třeba odlišit od validačního důvodu odmítnutí i od normálně čekajícího long pollingu. [Bitcoin Core v29.0 — Mining RPC implementation]

Pro nejúplnější obraz čtěte toto heslo společně s Block Template, Těžba, Stratum V2, Extranonce. Opačným směrem na něj odkazují také Solo Mining, Job Negotiation.

DOC · 001Bitcoin Core 29 — getblocktemplate RPCDokumentaceDOC · 002Bitcoin Core v29.0 — Mining RPC implementationPrimární zdrojDOC · 003BIP 145 — SegWit template fieldsSpecifikaceDOC · 004BIP 22 — Long pollingSpecifikaceDOC · 005Bitcoin Core 29 — submitblock RPCDokumentace
Primární zdroje · Nejde o investiční doporučení