getblocktemplate to metoda JSON-RPC do pobierania danych potrzebnych do złożenia kandydata na blok albo oceny propozycji. Opis dotyczy Bitcoin Core 29; zachowanie konkretnej implementacji nie obowiązuje automatycznie wszystkich serwerów protokołu.
Domyślny mode to template. Odpowiedź dostarcza dane oprogramowaniu górniczemu, a nie znaleziony proof of work. To żądanie nie przyjmuje adresu wypłaty jako parametru; zbudowanie coinbase i szukanie rozwiązania są kolejnymi krokami. [Bitcoin Core 29 — getblocktemplate RPC]
Bitcoin Core v29.0 wymaga segwit w rules żądania, a w sieci signet także signet. Wpisanie ciągu znaków nie zastępuje implementacji reguł. capabilities opisuje funkcje interfejsu i nie zastępuje obowiązkowych rules. [Bitcoin Core v29.0 — Mining RPC implementation]
BIP 145 rozróżnia txid bez witness od hash z witness. Główny Merkle root używa txid, nie hasha witness. data zawiera zserializowaną transakcję w zapisie szesnastkowym; sam identyfikator nie zawiera wszystkich jej bajtów. [BIP 145 — SegWit template fields]
Klient odsyła otrzymany longpollid w kolejnym oczekującym żądaniu. BIP 22 nakazuje nie zakładać konkretnego znaczenia; przenośny klient nie powinien rozkładać go według własnego formatu. Long polling wymaga długiego timeoutu i przerw po kolejnych błędach zamiast ciasnej pętli ponowień. [BIP 22 — Long polling]
Bitcoin Core v29.0 buforuje szablon: zmienia go przy zmianie poprzednika lub zmianie mempoolu po ponad pięciu sekundach od utworzenia. Czas nagłówka aktualizuje oddzielnie. Każde wywołanie nie musi więc obejmować najnowszej transakcji ani tworzyć niezależnej pracy wydobywczej. [Bitcoin Core v29.0 — Mining RPC implementation]
W trybie proposal data zawiera cały blok kandydujący szesnastkowo. Core sprawdza Merkle root, ale nie wymaga poprawnego proof of work. inconclusive-not-best-prevblk oznacza innego poprzednika niż aktualny koniec łańcucha; nie jest pełną oceną poprawności propozycji. [Bitcoin Core v29.0 — Mining RPC implementation]
submitblock otrzymuje cały blok jako hexdata, nie tylko hash. Bitcoin Core 29 przy przyjęciu zwraca null; w innym przypadku może zwrócić ciąg opisujący wynik. Opcjonalny dummy jest ignorowany. Przyjęcie przez węzeł nie gwarantuje trwałego potwierdzenia w aktywnym łańcuchu. [Bitcoin Core 29 — submitblock RPC]
W mainnet Bitcoin Core v29.0 odmawia szablonu bez połączonych peerów lub podczas initial block download. To opisuje gotowość węzła, nie niepoprawność konkretnego bloku. Odróżniaj te błędy od przyczyn odrzucenia w walidacji i od normalnie oczekującego long polling. [Bitcoin Core v29.0 — Mining RPC implementation]
Pełniejszy obraz uzyskasz, czytając to hasło razem z Block Template, Górnictwo Bitcoin, Stratum V2, Extranonce. Do tego hasła prowadzą również odsyłacze z ASIC Miner, Solo Mining, Job Negotiation.