GetBlockTemplate
GetBlockTemplate (BIP-22/23) est le RPC permettant à un mineur de demander un block template à son nœud. Standard pour le solo mining et les pools. Successeur de GetWork. Plus flexible que Stratum V1.
Définition et origine
GetBlockTemplate, souvent abrégé GBT, est un appel RPC standardisé par les BIP-22 (2012) et BIP-23 (2012). Il permet à un mineur ou à un pool d'obtenir auprès de son nœud Bitcoin Core un block template : la liste des transactions à inclure, la cible de difficulté, le coinbase à compléter, etc. C'est l'alternative ouverte au protocole GetWork historique, qui était devenu obsolète face aux ASICs.
Comment ça fonctionne
Le mineur envoie un appel JSON-RPC getblocktemplate à un nœud complet. Le nœud répond avec un objet contenant notamment :
- la version du bloc, la racine de Merkle des transactions à inclure
- le hash du bloc précédent et la cible de difficulté
- la liste des transactions sélectionnées (typiquement les plus rémunératrices)
- les contraintes pour le coinbase (montant exact à coder)
Le mineur construit le coinbase, recalcule la racine de Merkle, puis itère sur le nonce et l'extranonce pour trouver un hash sous la cible. S'il trouve une solution, il soumet le bloc via submitblock.
Comparaison avec Stratum
| Protocole | Couche | Usage typique | |-----------|--------|---------------| | GetWork | RPC | Historique, abandonné | | GetBlockTemplate | RPC | Solo mining, pools internes | | Stratum V1 | TCP | Pools commerciaux | | Stratum V2 | TCP | Future norme, plus sécurisée |
GBT laisse au mineur le contrôle total du contenu du bloc. C'est essentiel pour le solo mining décentralisé, et c'est précisément ce que Stratum V2 cherche à réintroduire dans le minage de pool.
Cas d'usage actuels
- Solo mining via Bitaxe, NerdMiner ou un ASIC connecté en direct à son nœud.
- Pools open source comme Public Pool ou Solo CKpool, qui exposent GBT.
- Pools propriétaires qui utilisent GBT en interne pour générer les jobs distribués via Stratum.
Limites
GBT échange beaucoup de données pour chaque template (la liste complète des transactions), ce qui n'est pas adapté aux fermes ASIC de millions de TH/s qui doivent rafraîchir les jobs en permanence. D'où l'invention de Stratum, qui ne transmet que les delta.
À retenir
GetBlockTemplate est la fondation ouverte du minage Bitcoin : il garantit que tout mineur peut, avec son propre nœud, construire et publier un bloc sans dépendre d'un intermédiaire.
Termes lies
- Block templateUn block template est le squelette d'un bloc à miner, fourni par un nœud (getblocktemplate, BIP-22) ou un pool (Stratum). Inclut la coinbase, la liste des transactions et la cible. Le mineur n'a plus qu'à itérer le nonce. Stratum V2 redonne au mineur le contrôle du template.
- GetWorkGetWork est le protocole historique de minage pré-2012. Limité à un nonce de 32 bits, vite obsolète face aux ASIC. Remplacé par GetBlockTemplate puis Stratum. Ne sert plus aujourd'hui.
- RPCRPC (Remote Procedure Call) est l'interface JSON-RPC de Bitcoin Core pour interroger ou commander un nœud. Utilisé par bitcoin-cli et tous les outils.
- StratumStratum (V1) est le protocole standard de communication entre mineurs et pools. Basé sur JSON-RPC. Critiqué pour donner au pool le contrôle du template (censure possible). Remplacé progressivement par Stratum V2.
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.