Block template
Un 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.
Qu'est-ce qu'un block template
Un block template est un « bloc prêt à miner » : son en-tête est presque complet (version, hash du bloc parent, merkle root provisoire, timestamp, nBits reflétant la cible), il contient une coinbase template, une liste ordonnée de transactions du mempool, et il manque uniquement les bits que le mineur va faire varier (nonce, extranonce, parfois timestamp). Le rôle du mineur ASIC est purement de tester des hash jusqu'à en trouver un inférieur à la cible.
Deux producteurs possibles
Historiquement, deux acteurs construisent un template :
| Source | Protocole | Qui décide des tx ? |
|--------|-----------|---------------------|
| Nœud solo | getblocktemplate (BIP-22/23) | Le mineur |
| Pool de minage | Stratum V1 | Le pool |
| Pool moderne | Stratum V2 | Le mineur ou le pool (configurable) |
Sous Stratum V1, dominant depuis 2012, le pool envoie aux ASIC un template déjà décidé, ne laissant aux mineurs que l'itération du nonce. Cela concentre le pouvoir de censure entre quelques pools.
Le cas Stratum V2 et Job Negotiation
Stratum V2, finalisé par Braiins, Spiral et bitcoin-dev, redécentralise cette étape. Avec le Job Declarator Client, le mineur construit lui-même son template via son nœud bitcoind local, et n'utilise le pool que pour mutualiser la rémunération. C'est un pilier de la résistance à la censure : si Foundry ou AntPool décidaient de filtrer des transactions OFAC, leurs mineurs pourraient construire et soumettre leurs propres templates.
Anatomie de la coinbase template
La coinbase contient un script libre où le mineur ou le pool insère :
- Le block height (BIP-34)
- Le scriptSig typique avec extranonce
- Souvent un commitment SegWit dans un OP_RETURN
- Parfois une AsicBoost commitment ou la signature « /mined by
/ »
C'est aussi via la coinbase que se paie la subvention (block reward) et les frais agrégés.
Limites et points d'attention
Un template construit par un seul nœud reflète le mempool de ce nœud. Si une transaction n'est pas relayée par son réseau de pairs, elle ne sera jamais incluse. C'est tout l'enjeu autour de pools opaques comme Marathon Slipstream ou Mempool Accelerator : injecter des transactions hors-mempool dans des templates spécifiques.
À retenir
Le block template est l'interface entre la couche logicielle (qui choisit le contenu) et la couche physique (qui hashe). Qui contrôle le template contrôle ce qui entre dans la blockchain : Stratum V2 est donc une étape essentielle pour préserver la résistance à la censure.
Termes lies
- GetBlockTemplateGetBlockTemplate (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.
- 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.
- Stratum V2Stratum V2 est l'évolution majeure du protocole de pool : permet au mineur de choisir son template (job declaration), chiffrement, performance accrue. Renforce la décentralisation du minage. Adopté progressivement par les grands pools.
- MinageLe minage Bitcoin est le processus par lequel des ordinateurs specialises (ASICs) resolvent des calculs cryptographiques pour valider les transactions et creer de nouveaux blocs. Les mineurs sont recompenses en bitcoins pour leur travail. Ce mecanisme de Proof of Work securise le reseau et garantit son fonctionnement decentralise.
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.