Le minage est la compétition pour ajouter le prochain bloc à l’historique de Bitcoin. Les mineurs regroupent des transactions et effectuent un travail de calcul pour trouver un résultat facile à vérifier. Un bloc accepté peut leur rapporter des bitcoins nouvellement émis et les frais des paiements inclus. Ils ne fixent pas les règles pour autant : les autres ordinateurs du réseau vérifient leurs propositions de façon indépendante et rejettent les blocs invalides.
Le minage ne déterre pas des pièces cachées dans un ordinateur. Il s’agit de proposer le prochain bloc valide : un lot de transactions qui prolonge l’historique existant. Pour cette proposition, le mineur cherche un résultat de calcul difficile à obtenir. Une fois trouvé, il envoie le bloc aux autres. Ceux-ci vérifient le calcul et les transactions, puis appliquent les mêmes règles pour déterminer s’ils peuvent l’accepter. Les nouveaux bitcoins font partie de la rémunération, mais leur émission n’est pas l’unique rôle du minage. Pour une personne qui paie, l’essentiel est qu’une transaction en attente soit désormais inscrite dans un historique vérifiable. [1] [2]
Lorsque vous envoyez un paiement, il circule d’abord entre les nœuds. Un nœud est un ordinateur participant au réseau Bitcoin ; son mempool est une réserve locale de transactions non confirmées. Il n’existe pas de file unique administrée pour tout le monde. Le mineur assemble un bloc candidat à partir des transactions disponibles, en tenant compte des frais et de l’espace limité. Si une transaction dépense une sortie d’une autre transaction encore non confirmée, cette dernière doit apparaître avant elle dans le bloc. La commande getblocktemplate fournit les éléments nécessaires à la construction du bloc, notamment ces dépendances. Les limites de poids du bloc et de coût des vérifications de signatures encadrent aussi la sélection. [1]
La première transaction du bloc s’appelle Coinbase Transaction. Elle n’a rien à voir avec un compte sur la plateforme du même nom : c’est une transaction particulière par laquelle le mineur s’attribue la récompense autorisée. Elle réunit la subvention de bloc, des bitcoins nouvellement créés, et les frais des autres transactions du bloc. Les frais correspondent à la différence entre la valeur des entrées et celle des sorties : ils transfèrent donc uniquement des bitcoins existants. Si le mineur réclame trop, les nœuds rejettent tout le bloc. Même une récompense correcte n’est pas immédiatement dépensable : une sortie de Coinbase Transaction ne peut être dépensée qu’à partir d’un bloc situé 100 hauteurs plus loin. [2]
Imaginez une loterie dont personne ne connaît le résultat gagnant à l’avance, mais que chacun peut vérifier rapidement une fois annoncé. Les mineurs calculent un hash, une empreinte numérique des données qui peut aussi se lire comme un grand nombre. Pour un bloc Bitcoin, ce nombre doit être inférieur ou égal à un seuil appelé target. C’est l’exigence de Proof of Work. Concrètement, la fonction de hash SHA-256 est appliquée deux fois à l’en-tête de 80 octets du bloc, qui contient ses principales données récapitulatives. Les mineurs ne résolvent pas les paiements un par un. Ils modifient les données du calcul et vérifient si le nouveau résultat remplit la condition. [3]
Un ASIC est une puce conçue pour une tâche de calcul précise ; un ASIC de minage Bitcoin applique sans cesse le double SHA-256 à des variantes d’un en-tête de 80 octets. L’un des champs modifiés est le nonce, un nombre de quatre octets dans l’en-tête. Sa plage de valeurs est limitée. Une fois celle-ci parcourue, le mineur peut modifier l’extra nonce, une donnée supplémentaire dans la Coinbase Transaction. Cela change le Merkle Root, l’empreinte combinée des transactions, puis l’en-tête, et ouvre de nouveaux essais. Aucun échec ne rapproche la machine d’un succès garanti. Les dix minutes ne sont pas non plus promises à un mineur : c’est la moyenne visée pour l’ensemble du réseau. [3]
Les mineurs ont intérêt à construire des blocs valides : une proposition rejetée ne rapporte aucune récompense utilisable. Leur vérification ne remplace toutefois pas celle des autres. Un Full Node est un ordinateur qui vérifie lui-même les règles de Bitcoin, notamment les transactions, la récompense et Proof of Work. Il rejette par exemple un bloc créant plus de bitcoins qu’autorisé, même si le mineur a mobilisé une grande puissance de calcul. Avec son propre nœud, l’utilisateur n’a donc pas à croire le mineur sur parole lorsqu’il affirme qu’un bloc est correct. [2] [4]
Un mineur seul peut attendre très longtemps avant de réussir. Un Mining Pool permet de répartir le travail et les recettes entre plusieurs participants. Pour estimer la contribution des machines, l’opérateur accepte aussi des résultats satisfaisant un seuil interne plus facile. Un tel résultat s’appelle une share. La plupart des shares ne suffisent pas au réseau Bitcoin ; seules certaines remplissent aussi sa condition plus stricte. Les versements dépendent du modèle de rémunération, des conditions convenues et des frais du pool. Participer à un pool ne donne donc pas le droit de modifier les règles de Bitcoin. L’opérateur ne possède pas nécessairement les appareils connectés. Sa part des blocs trouvés ne prouve pas à elle seule qu’il est propriétaire des machines. [3]
Après un calcul réussi, le bloc complet doit encore parvenir aux autres nœuds. Deux mineurs peuvent trouver presque simultanément deux blocs valides différents rattachés au même prédécesseur. Une partie du réseau connaît alors brièvement une branche et une autre partie la seconde. Les nœuds suivent la branche valide qui possède le plus de travail cumulé, la somme du travail attribué à ses blocs. Le bloc suivant peut ainsi faire pencher le choix vers l’une des branches. Le bloc de la branche abandonnée peut être valide en lui-même, sans que sa récompense appartienne à l’historique actif. Les mineurs cherchent donc à diffuser leurs résultats rapidement et à ne pas continuer sur une proposition dépassée lorsqu’ils reçoivent un nouveau sommet de chaîne. [4]
Le Hashrate mesure le nombre d’essais de hash par seconde. La part d’un mineur dans la puissance totale du réseau aide à estimer la fréquence de ses succès, sans garantir des recettes régulières. Les recettes ne sont pas non plus le bénéfice : il faut déduire l’électricité, le refroidissement, les appareils, l’entretien et les frais du pool. Les arrêts peuvent encore dégrader le résultat. Attention aux unités : TH/s mesure la puissance de calcul, tandis que les watts mesurent la puissance électrique consommée. Une machine puissante peut perdre de l’argent si l’électricité coûte cher, et un succès chanceux ne prouve pas une rentabilité durable. [3]
Sur votre propre nœud, vous pouvez comparer la proposition de getblocktemplate avec l’en-tête, la Coinbase Transaction et les transactions ordinaires d’un bloc trouvé. Les commandes comme getblocktemplate appartiennent à l’interface technique du nœud ; ce ne sont pas des services auxquels il faudrait confier de l’argent. submitblock transmet un bloc terminé au nœud pour vérification. Une acceptation locale ne garantit toutefois pas qu’il restera dans l’historique du réseau. Pour un pool, distinguez les shares soumises, les blocs Bitcoin acceptés et les sommes effectivement versées. Avec les coûts de fonctionnement, ces éléments montrent le résultat économique du minage. [5]
Pour une vision complète, lisez aussi Proof of Work, Difficulty Adjustment, Block Subsidy, Transaction Fees, Mempool. Cette entrée est également citée par Proof of Work, Difficulty Adjustment, Block Subsidy, Halving.