getblocktemplate est une méthode JSON-RPC pour obtenir les données d’assemblage d’un bloc candidat ou évaluer une proposition. Cette description suit Bitcoin Core 29 ; le comportement d’une implémentation ne s’applique pas automatiquement à tous les serveurs du protocole.
Le mode par défaut est template. La réponse fournit des données au logiciel de minage, pas un proof of work trouvé. Cette requête ne reçoit pas d’adresse de paiement en paramètre ; construire la coinbase et chercher une solution sont des étapes suivantes. [Bitcoin Core 29 — getblocktemplate RPC]
Bitcoin Core v29.0 exige segwit dans les rules demandées, et signet sur le réseau signet. Écrire une chaîne ne remplace pas l’implémentation des règles concernées. capabilities décrit des fonctions de l’interface et ne remplace pas les rules obligatoires. [Bitcoin Core v29.0 — Mining RPC implementation]
BIP 145 distingue txid sans witness de hash avec witness. La Merkle root principale utilise txid, pas le hachage witness. data contient la transaction sérialisée en hexadécimal ; son seul identifiant ne représente pas l’ensemble de ses octets. [BIP 145 — SegWit template fields]
Le client renvoie le longpollid reçu dans sa prochaine requête en attente. BIP 22 demande de ne lui supposer aucun sens précis ; un client portable ne doit donc pas l’analyser comme son propre format. Long polling exige un délai d’expiration long et des pauses après échecs répétés, pas une boucle serrée de tentatives. [BIP 22 — Long polling]
Bitcoin Core v29.0 conserve le modèle en cache : il change avec le prédécesseur, ou si le mempool change plus de cinq secondes après sa création. Le temps de l’en-tête est actualisé séparément. Chaque appel n’inclut donc pas nécessairement la dernière transaction et ne crée pas forcément un travail indépendant. [Bitcoin Core v29.0 — Mining RPC implementation]
En mode proposal, data contient tout le bloc candidat en hexadécimal. Core vérifie la Merkle root mais n’exige pas de proof of work valide. inconclusive-not-best-prevblk signifie que le prédécesseur diffère de la tête actuelle ; ce n’est pas une évaluation complète de la validité du candidat. [Bitcoin Core v29.0 — Mining RPC implementation]
submitblock reçoit le bloc complet sous hexdata, pas seulement un hachage. Bitcoin Core 29 renvoie null en cas d’acceptation ; sinon il peut renvoyer une chaîne de résultat. Le dummy facultatif est ignoré. L’acceptation par le nœud ne garantit pas une confirmation permanente dans la chaîne active. [Bitcoin Core 29 — submitblock RPC]
Sur mainnet, Bitcoin Core v29.0 refuse de fournir un modèle sans pairs connectés ou pendant initial block download. Cela décrit la disponibilité du nœud, pas l’invalidité d’un bloc précis. Il faut distinguer ces erreurs des rejets de validation et d’un long polling normalement en attente. [Bitcoin Core v29.0 — Mining RPC implementation]
Pour une vision complète, lisez aussi Block Template, Minage, Stratum V2, Extranonce. Cette entrée est également citée par ASIC Miner, Solo Mining, Job Negotiation.