93 / 736SV1

Stratum V1

Comment une machine de minage communique avec son pool

Stratum V1 est le langage commun de la machine de minage et du pool : il transmet les tâches, retourne les résultats et permet de mesurer le travail fourni. Marek Palatinus, connu sous le nom de Slush, l’a présenté en 2012.

Stratum V1 est un protocole de communication pour le minage collectif de Bitcoin. Le pool envoie des tâches sur une connexion maintenue ouverte, et les machines retournent leurs résultats. Le protocole ne fixe ni la rémunération ni les règles de validité des blocs.

Eva a branché un ASIC, une machine spécialisée dans le minage de Bitcoin, puis l’a relié à un pool. Le pool coordonne les mineurs qui cherchent le prochain bloc, un ensemble de transactions à ajouter à l’historique de Bitcoin. La puissance de calcul ne suffit pourtant pas : il faut fournir une tâche à la machine et permettre au pool de mesurer le travail d’Eva. Stratum V1 organise cet échange. Le pool transmet de quoi chercher le prochain bloc ; la machine calcule et renvoie des résultats intermédiaires. Comme la langue d’une conversation téléphonique, le protocole permet aux deux parties de se comprendre. Il ne fixe pas le prix du travail. Celui-ci dépend des règles de rémunération du pool, tandis que les nœuds Bitcoin vérifient la validité du bloc trouvé. [4] [2]

Avec des machines toujours plus rapides, l’ancien getwork devenait peu adapté. Il distribuait de petites portions de travail, qu’il fallait renouveler par des demandes fréquentes. Marek Palatinus a présenté une nouvelle proposition le 11 septembre 2012. Stratum maintient la connexion ouverte : le pool peut envoyer une nouvelle tâche sans attendre une autre demande, ce qui réduit les échanges nécessaires. Cela ne remplace pas toutes les composantes du minage. Le pool peut encore obtenir un bloc candidat auprès d’un nœud Bitcoin avec getblocktemplate, décrit dans BIP 22. [11] [3] [5]

Le logiciel de contrôle envoie généralement mining.subscribe pour demander à recevoir du travail. Il obtient les données de connexion et les informations permettant de distinguer ses calculs. mining.authorize rattache ensuite la machine à un compte. Ici, worker désigne un identifiant de machine ou de connexion, pas un salarié. Eva peut ainsi distinguer plusieurs appareils sous un même compte. L’éventuel mot de passe ne prouve toutefois pas l’authenticité du serveur et ne chiffre pas les échanges. Une connexion au compte réussie ne garantit donc pas une liaison sécurisée. [2] [13]

mining.notify transmet une tâche identifiée par job_id, avec le lien vers le bloc précédent, des éléments relatifs aux transactions, l’heure et d’autres données de l’en-tête, un ensemble compact d’informations sur le bloc. Le paramètre clean_jobs est important. true impose d’abandonner les anciennes tâches ; false permet de continuer la précédente tout en passant à la nouvelle. Chaque nouveau message n’invalide donc pas automatiquement tous les résultats en cours. Et la tâche reste une proposition à calculer, pas un bloc déjà valide. [2] [13]

Cette partie est technique ; inutile de connaître chaque champ pour un branchement ordinaire. Le pool fournit deux morceaux de la transaction coinbase, qui verse la récompense du bloc et n’a rien à voir avec la plateforme du même nom. Le logiciel insère entre eux extranonce1, attribué par le pool, et son propre extranonce2, ce qui produit davantage de variantes. À partir de la transaction et des Merkle branches reçues, valeurs intermédiaires d’un résumé des transactions en arbre, il calcule la Merkle root. Avec la référence au bloc précédent, la version, l’heure et la limite encodée que le hash doit respecter, elle forme la base d’un en-tête de 80 octets. L’ASIC calcule sans cesse son hash, une empreinte numérique, en faisant varier nonce, un nombre permettant de nouveaux essais. [2] [4] [13] [14]

Trouver un bloc entier est rare. Le pool fixe donc un seuil plus facile à atteindre, le target. Un résultat qui le respecte est une mining share, preuve du travail réalisé. La plupart des shares ne respectent pas le seuil plus exigeant du réseau Bitcoin ; l’une d’elles peut néanmoins y parvenir et contribuer à un bloc valide. mining.set_difficulty et l’ajustement automatique vardiff modifient la difficulté des shares pour obtenir une fréquence raisonnable. Ils ne changent pas la difficulté du réseau. Satisfaire une condition plus difficile demande en moyenne davantage de calculs : un tel résultat pèse donc plus dans la mesure du travail. Moins de shares, mais plus difficiles, ne signifie pas nécessairement moins de rémunération : leur poids et les règles du pool comptent aussi. [2] [4] [13]

Avec mining.submit, l’appareil transmet l’identifiant du worker, job_id, extranonce2, nTime (l’horodatage de l’en-tête) et nonce. Le pool reconstitue puis vérifie le résultat. duplicate désigne un travail soumis deux fois, low difficulty un résultat insuffisant, et stale un travail sur une tâche qui n’est plus acceptée. Eva surveille donc les rejets et les délais de connexion autant que la puissance de la machine. Même une share acceptée n’est pas encore un versement au portefeuille : Stratum transmet le travail, tandis que le crédit et le paiement des récompenses suivent des règles distinctes. [2] [13]

BIP 310, proposé en 2018, décrit la négociation de fonctions supplémentaires avec mining.configure. Le document vérifié le 17 octobre 2026 porte toujours le statut Draft, c’est-à-dire projet. Version-rolling autorise uniquement la modification des bits convenus dans la version de l’en-tête ; une fois négocié, il ajoute un sixième champ à mining.submit. Il ne permet pas de modifier librement les règles de Bitcoin. minimum-difficulty et subscribe-extranonce concernent la difficulté minimale demandée pour les shares et les notifications de nouvelles valeurs extranonce. Négocier ces fonctions évite les malentendus entre logiciels, mais ne chiffre pas la connexion. [6]

V1 utilise souvent une connexion TCP non chiffrée. Sans protection supplémentaire, une personne sur le chemin des échanges peut les lire ou les modifier et tenter de détourner le travail. L’étude Hardening Stratum de 2017 a examiné ces risques en pratique. Il s’agit de la liaison entre machine et pool, pas d’une rupture de la sécurité de Bitcoin lui-même. Dans le fonctionnement habituel, le pool choisit aussi les transactions du bloc. Posséder la machine ne signifie donc pas qu’Eva en décide le contenu. Les nœuds Bitcoin continuent de rejeter les blocs contraires aux règles, même produits par un grand pool. [7] [4]

Stratum V2 apporte des messages binaires plus compacts et une connexion protégée par cryptographie. Son composant distinct Job Declaration peut permettre au mineur de proposer sa propre sélection de transactions pour un bloc, si les deux côtés le prennent en charge et l’utilisent. Un traducteur V1/V2 ou la simple mention V2 ne le prouve pas. Eva doit vérifier la compatibilité du firmware, l’adresse du serveur, la protection de la connexion, les rejets et les connexions de secours. L’idée centrale de V1 reste simple : fournir des tâches, attester le calcul et distinguer cela du choix du bloc et du paiement. [8] [12] [10]

Pour une vision complète, lisez aussi Bitcoin, Minage, Mining Pool, Braiins, Braiins Pool, Marek « Slush » Palatinus. Cette entrée est également citée par Mining Pool, Marek « Slush » Palatinus, Braiins, Braiins Pool.

DOC · 001Original Stratum mining protocol announcementSource primaire DOC · 002Bitcoin Wiki — Stratum mining protocolDocumentation DOC · 003Braiins — Past and future of mining protocolsSource primaire DOC · 004Bitcoin Developer Guide — Pooled MiningDocumentation DOC · 005BIP 22 — getblocktemplate fundamentalsSource primaire DOC · 006BIP 310 — Stratum protocol extensionsSource primaire DOC · 007Hardening Stratum research paperSource primaire DOC · 008Stratum V2 Mining Protocol specificationSource primaire DOC · 009Galaxy Research — Future of Bitcoin mining protocolsDocumentation DOC · 010Braiins Academy — Stratum V2 ManualDocumentation DOC · 011Slush — Stratum proposal, 11 September 2012Source primaire DOC · 012Stratum V2 — Job Declaration ProtocolSource primaire DOC · 013Original Stratum protocol specification (archived)Source primaire DOC · 014Bitcoin Developer Reference — Block HeadersSource primaire
Révisé le: Sources d’abord · Pas un conseil financier