Un ASIC Miner est un appareil équipé de puces conçues pour le minage de bitcoin. Il calcule sans cesse l'empreinte numérique de l'en-tête d'un bloc proposé, le résumé de ses principales données, à la recherche d'un résultat conforme aux règles du minage. Plus de puissance signifie davantage d'essais par seconde, pas une récompense certaine. Il faut aussi une alimentation, du refroidissement, un logiciel de commande et une source de tâches à effectuer.
Anna aperçoit un petit appareil de minage à côté d'un ordinateur. Son portable ne pourrait-il pas faire la même chose ? Un ordinateur ordinaire peut effectuer les calculs nécessaires. Mais un ASIC est conçu spécialement pour cela et réalise généralement beaucoup plus d'essais avec la même énergie. ASIC signifie Application-Specific Integrated Circuit : un circuit intégré destiné à un usage précis. Dans le langage courant, le mot désigne aussi la machine complète qui contient ces puces. Le mineur utilise SHA-256 pour chercher une empreinte numérique convenable, appelée hash. Il ne connaît pas à l'avance la bonne réponse : il modifie les données et recommence. Cette spécialisation a progressivement écarté du minage compétitif les processeurs CPU, les processeurs graphiques GPU et les circuits programmables FPGA. Une puce de minage SHA-256 ne se transforme toutefois pas simplement en ordinateur polyvalent. [6] [8]
Imaginons un mineur de 100 TH/s absorbant 3 000 W. Ce sont des valeurs d'exemple, pas les caractéristiques d'un produit. TH/s exprime des milliers de milliards de hashes par seconde : cet appareil effectue cent mille milliards d'essais chaque seconde. Ce débit s'appelle le Hashrate. Le compteur électrique mesure de l'énergie : à puissance constante de 3 kW, l'appareil consomme 72 kWh en 24 heures. On multiplie ensuite cette quantité par le prix du kWh. On compare aussi les machines en J/TH, soit des joules d'énergie pour mille milliards d'essais. Ici, 3 000 / 100 = 30 J/TH. Un chiffre plus bas signifie moins d'énergie pour le même travail. Encore faut-il comparer des mesures et des réglages équivalents. Le rendement annoncé pour la puce seule ne se compare pas directement à la consommation de toute la machine à la prise. [7] [8]
Presque toute l'énergie consommée finit sous forme de chaleur. Anna doit donc prévoir son évacuation et, selon la conception de l'appareil, tenir compte du bruit des ventilateurs. Un petit mineur domestique et une machine industrielle peuvent avoir des besoins très différents. Le mot ASIC ne renseigne à lui seul ni sur la taille ni sur la consommation. Outre les puces, l'appareil comprend une alimentation, des régulateurs de tension, un contrôleur et des cartes portant les puces de minage, les hashboards. Des ventilateurs ou un circuit liquide évacuent la chaleur. Poussière, ventilateur défectueux, alimentation inadaptée ou réglages trop poussés peuvent provoquer erreurs et arrêts. Mieux vaut examiner tout le fonctionnement que le plus gros chiffre d'une publicité. [7] [8]
Une fois relié à un Mining Pool, le mineur d'Anna reçoit des tâches d'un service qui coordonne les mineurs. Le pool possède son propre logiciel et son opérateur : il ne fait pas partie de la puce. Pour miner seule, Anna doit disposer de l'infrastructure correspondante. Le firmware, le logiciel de commande de l'appareil, transmet les tâches aux puces et renvoie les résultats. Il faut d'abord préparer une proposition de bloc contenant des transactions, appelée Block Template. Un Full Node ou un autre fournisseur de modèles s'en charge. Un Full Node est un logiciel qui vérifie lui-même les blocs et les transactions selon les règles de Bitcoin. BIP22 décrit l'interface getblocktemplate ; BIP23 y ajoute des extensions pour les pools. Stratum V2 distingue Mining Protocol pour les tâches, Job Declaration pour proposer son propre travail et Template Distribution pour fournir les modèles. Le choix des transactions par le mineur dépend de l'installation et des fonctions prises en charge. La puce ne les choisit pas elle-même. [1] [2] [4] [5] [9]
Anna voit des shares acceptées dans son tableau de bord, alors que son appareil n'a pas trouvé de bloc Bitcoin. Une share satisfait une condition moins exigeante du pool et apporte une indication statistique du travail accompli. Le pool s'en sert pour calculer les versements selon ses règles. Une share n'est ni une monnaie supplémentaire ni automatiquement une fraction de bloc. Seul un résultat bien plus rare satisfait aussi la condition plus difficile du réseau Bitcoin. Il permet de soumettre un bloc, qui doit encore réussir toutes les autres vérifications. Modifier la difficulté des shares change leur fréquence d'envoi. Cela n'augmente pas à lui seul la puissance réelle de la machine et ne modifie pas la difficulté du réseau. [4] [6]
Un résultat trouvé est une proposition au réseau, pas un ordre donné aux autres. Un Full Node vérifie lui-même les règles de Bitcoin et rejette un bloc invalide, même issu d'un mineur très puissant. Un ASIC ne permet ni une récompense supérieure au plafond, ni la dépense non autorisée des bitcoins d'autrui, ni l'imposition d'autres règles aux nœuds. L'opérateur conserve des choix importants : firmware, pool et, si l'installation le permet, transactions à miner. Il est utile de comparer la puissance affichée par l'appareil à l'estimation du pool sur une période plus longue, puis de surveiller les shares rejetées, la température et la consommation réelle. Une brève variation de l'estimation du pool ne prouve pas, à elle seule, une panne. [5] [10]
Deux mineurs identiques peuvent avoir des résultats économiques très différents. L'un fonctionne au frais avec une électricité moins chère ; l'autre subit des arrêts et paie davantage son énergie. Le prix d'achat, la dépréciation, les frais du pool, le cours du bitcoin, la difficulté du réseau et les frais des transactions incluses comptent également. L'efficacité technique ne promet donc pas de rentabilité. La spécialisation a aussi accru les exigences de fabrication des puces et d'exploitation des grands centres. Pour parler de concentration, il faut distinguer fabricants, propriétaires des machines, sites physiques et pools. Une part importante attribuée à un pool ne prouve pas qu'une même entreprise possède tous les appareils connectés. [6] [8]
La fréquence règle le rythme de la puce ; la tension contribue à la fiabilité des calculs. Deux puces du même type peuvent nécessiter des réglages différents, car leur fabrication introduit de petites variations électriques. Le firmware peut chercher un réglage adapté à chaque puce ou carte : c'est l'Autotuning. Réduire la fréquence avec une tension appropriée peut améliorer les J/TH tout en diminuant le Hashrate total. À l'inverse, l'overclocking peut apporter de la puissance au prix d'une hausse disproportionnée de la consommation et de la chaleur. Le résultat dépend du matériel, du refroidissement et des réglages. Le maximum atteignable n'est donc pas forcément le meilleur régime de fonctionnement durable. [7]
Le calcul porte sur un en-tête de bloc de 80 octets, un résumé compact de ses données essentielles. Il contient la version, le hash du bloc précédent, le Merkle Root résumant les transactions, un horodatage, la cible de difficulté encodée nBits et un champ Nonce de 32 bits. SHA-256(SHA-256(header)) signifie appliquer SHA-256 deux fois ; header désigne cet en-tête. Le hash obtenu est interprété comme un nombre. Pour satisfaire la preuve de travail requise, il ne doit pas dépasser la cible : hash ≤ target. La puce peut accélérer les calculs en réutilisant des résultats intermédiaires pour les parties inchangées de l'entrée. Les nœuds vérifient le résultat et la bonne cible, pas l'agencement des circuits. Les autres règles de validité du bloc restent indispensables. [6] [10]
Nonce offre 2^32 valeurs possibles. Un mineur rapide les parcourt très vite ; le système doit donc modifier d'autres données. Extranonce est une valeur auxiliaire de la Coinbase Transaction, la première transaction spéciale contenant la récompense du bloc. La modifier change cette transaction, le Merkle Root qui en découle et l'entrée de la prochaine série de calculs. On peut aussi faire varier le champ temporel nTime dans les limites autorisées ou utiliser les bits de version appropriés. La proposition BIP320 décrit la réservation de certains bits pour un usage général ; elle n'autorise pas à ignorer les règles du réseau. Stratum V2 exige une répartition du travail évitant que les appareils gaspillent leurs efforts sur les mêmes candidats. Ces mécanismes fournissent de nouvelles possibilités aux puces, sans augmenter la récompense par bloc. La proposition plus récente BIP323 prévoit de remplacer BIP320 et de réserver 24 bits de version à cet usage. La spécification actuelle de Stratum V2 renvoie déjà à BIP323. Son statut reste Draft, c’est-à-dire un projet : la publication d’une proposition ne modifie pas à elle seule les règles de Bitcoin. [3] [4] [11]
Pour une vision complète, lisez aussi Minage, Hashrate, SHA-256, Block Header, Nonce, Extranonce. Cette entrée est également citée par Mining Pool, Hashrate, Nonce, Braiins.