Blockchain/Niveau III · Le réseau/3.2 Le minage/Leçon 5
Modèles de blocs et Stratum V2
La tâche d’en-tête, le choix du modèle de bloc, et qui tient la plume
MatérielLa spécification Stratum V2 (stratumprotocol.org)BIP22 et BIP23
Curiosité
- Pourquoi un mineur disposant d’un matériel dédié compte-t-il encore sur un opérateur de pool pour décider quelles transactions entrent dans un bloc ?
- Qu’est-ce qui permet à un mineur en pool de choisir les transactions de ses propres blocs tout en partageant les récompenses du pool ?
- Comment le passage de JSON à des protocoles binaires améliore-t-il à la fois la sécurité et l’efficacité du minage à haut débit ?
Explorer
- Depuis la création du protocole, chaque bloc valide nécessite une sélection de transactions. Au début, les mineurs qui faisaient tourner des nœuds complets choisissaient eux-mêmes ces transactions. En 2012, le matériel étant devenu spécialisé et coûteux, la plupart avaient rejoint des pools. Le protocole Stratum, introduit par Slush cette même année, a standardisé la manière dont les serveurs des pools distribuaient le travail à leurs membres. Les pools construisaient les blocs depuis 2010 ; Stratum a rendu ce fonctionnement bien plus efficace et en a hérité la centralisation de la construction des blocs.
- Avec Stratum V1, l’opérateur du pool est l’unique architecte de chaque bloc candidat. Le serveur agrège les transactions de son propre mempool et envoie aux mineurs les éléments d’une tâche (job) : les deux moitiés de la transaction coinbase, la branche de Merkle, le hash du bloc précédent, la cible et l’horodatage. Le mineur insère son propre extra-nonce, calcule la racine de Merkle et cherche un hash valide, mais n’a pas son mot à dire sur les transactions incluses.
- Cette architecture confère aux opérateurs de pools un pouvoir considérable sur la sélection des transactions. Un pool contrôlant une part importante du hashrate du réseau peut de fait censurer des transactions en les excluant simplement de ses modèles. Bien que ce pouvoir soit rarement exercé, la capacité structurelle existe. Cela signifie aussi que si le serveur d’un pool tombe en panne ou subit une attaque par déni de service, tous les mineurs qui y sont connectés se retrouvent à l’arrêt, ce qui crée un point de défaillance unique pour leurs revenus.
- En 2012, BIP22 et BIP23 ont introduit `getblocktemplate`, qui permettait à un logiciel de minage de demander un modèle de bloc complet à un nœud et avait été conçu pour que les membres des pools puissent construire leurs propres blocs. Les pools utilisent getblocktemplate en interne pour obtenir des modèles de leurs propres nœuds, mais laisser les membres construire leurs propres blocs compliquait la validation et la comptabilisation des parts, et rares sont les pools qui l’ont proposé (Eligius faisait exception).
- Stratum V2, développé à partir de 2019 notamment par Braiins et Matt Corallo, a repensé le protocole pour résoudre ces problèmes. Il introduit un format binaire, plus léger, et le chiffrement pour la sécurité. Surtout, il inclut le Job Declaration Protocol, qui permet à un mineur faisant tourner son propre nœud complet de déclarer son propre modèle de bloc au serveur du pool. Le pool accepte alors les parts issues de cette tâche personnalisée et répartit les récompenses selon son mode de rémunération habituel, tandis que le mineur garde le contrôle des transactions incluses.
- D’autres initiatives, comme le protocole DATUM d’Ocean (2024), poursuivent des objectifs similaires de décentralisation de la construction des modèles de blocs. Lisez la section Job Declaration de la spécification Stratum V2 et comparez-la à la manière dont un pool que vous connaissez construit ses modèles. Là où ces protocoles sont adoptés, le choix des transactions revient vers les propriétaires du matériel.
Faits clés
- Stratum V1, introduit par Slush en 2012, centralise la création des modèles de blocs entre les mains des opérateurs de pool.
- Avec Stratum V1, les mineurs ne reçoivent que des tâches d’en-tête et n’ont aucune influence sur la sélection des transactions.
- BIP22/BIP23 (2012) ont défini getblocktemplate ; rares sont les pools qui ont permis à leurs membres de l’utiliser pour construire leurs propres blocs.
- Stratum V2 (depuis 2019) utilise un protocole binaire avec chiffrement pour améliorer la sécurité et l’efficacité.
- Le Job Declaration Protocol de Stratum V2 permet aux mineurs de soumettre leurs propres modèles de blocs au pool.
- Le protocole DATUM d’Ocean (2024) est une autre initiative visant à décentraliser la sélection des transactions parmi les mineurs en pool.
Exercice neuf, six, trois, un
9RassemblerÉnumérez 9 décisions qui interviennent dans la production d’un bloc (par exemple quelles transactions inclure, le message de la coinbase, l’horodatage, le nonce) et indiquez qui prend chacune d’elles sous Stratum V1.
6RegrouperRegroupez les 9 en 6 selon qui les contrôle : pool, mineur, logiciel de nœud, règles de consensus, hasard ou autre.
3DistillerRéduisez les 6 catégories à 3 raisons fondamentales pour lesquelles le pouvoir de sélection des transactions est économiquement et politiquement important pour les producteurs de blocs.
1CristalliserÉcrivez 1 phrase expliquant comment la Job Declaration de Stratum V2 modifie l’équilibre des pouvoirs entre les opérateurs de pool et les mineurs individuels.
Vérification des faits
Les dates, les chiffres et les affirmations ont été vérifiés à l’aide des sources publiées listées ci-dessous.