Officine Bitcoin Leçon Bitcoin-only Ce projet est maintenu par valerio-vaccaro
đ Traduzioni
đšđł äžæ đŹđ§ English đȘđž Español đ”đč PortuguĂȘs đ·đș Đ ŃŃŃĐșĐžĐč đ«đ· Français đ©đȘ Deutsch đźđč Italiano đđș Magyar đłïž MilanĂ©s đłïž Veneto
Introduction au minage
Le minage de Bitcoin est un processus fondamental du protocole qui sert Ă proposer un ordre parmi les transactions prĂ©sentes dans la mempool, en sĂ©lectionnant un sous-ensemble pour crĂ©er un nouveau bloc et mettre Ă jour lâĂ©tat de la blockchain.
Le minage est conçu pour ĂȘtre dĂ©centralisĂ© et alĂ©atoire (entre guillemets, puisquâil repose sur une Ă©nigme cryptographique), Ă©vitant ainsi une gestion centralisĂ©e des transactions.
Objectif du minage
Le minage résout des problÚmes liés à la centralisation, tels que:
- Censure: une entitĂ© centrale pourrait bloquer certaines transactions, mais avec des mineurs dĂ©centralisĂ©s, les transactions ont davantage de chances dâĂȘtre incluses.
- Double dĂ©pense: sans mineur corruptible, il est difficile de réécrire lâhistoire ou de favoriser une transaction au dĂ©triment dâune autre.
- Timestamping: fournit un ordre temporel sĂ»r et partagĂ©, qui ne dĂ©pend pas dâune autoritĂ© centrale, mais du consensus entre mineurs et nĆuds.
Fonctionnement du minage
Le processus de minage peut ĂȘtre expliquĂ© Ă©tape par Ă©tape:
- SĂ©lection des transactions: le mineur choisit des transactions dans la mempool, en privilĂ©giant souvent celles dont les frais sont plus Ă©levĂ©s, afin dâoptimiser le profit (un problĂšme NP-complete similaire au âknapsack problemâ).
- Construction de la coinbase: le mineur crĂ©e une transaction spĂ©ciale (coinbase) qui sâattribue la rĂ©compense du bloc (actuellement 3.125 BTC, divisĂ©e par deux tous les quatre ans) plus les frais des transactions sĂ©lectionnĂ©es.
- Merkle Root: les transactions choisies sont organisées dans une structure de données en arbre (Merkle Tree), qui génÚre une Merkle Root, un hash représentant toutes les transactions et leur ordre.
- Block Header: le mineur construit le prototype de lâen-tĂȘte du bloc, comprenant:
- Le timestamp.
- Le hash du bloc précédent.
- La Merkle Root.
- La difficulté (target), qui dépend du réseau.
- Un nonce (nombre aléatoire initialisé, par exemple, à zéro).
- Ănigme cryptographique: le mineur applique deux fois lâalgorithme SHA-256 Ă lâen-tĂȘte et vĂ©rifie si le rĂ©sultat possĂšde un nombre suffisant de zĂ©ros initiaux (infĂ©rieur au seuil de difficultĂ©). Sinon, il modifie le nonce ou dâautres champs (par exemple, le timestamp ou lâordre des transactions) et rĂ©pĂšte le calcul. Câest un travail de force brute sans raccourci, grĂące aux propriĂ©tĂ©s de SHA-256.
Optimisations
Pour accĂ©lĂ©rer le processus, les mineurs peuvent calculer le premier SHA-256 sur les 64 premiers octets de lâen-tĂȘte (immuables), puis itĂ©rer seulement sur le reste en changeant le nonce. La spĂ©cialisation a conduit Ă du hardware (ASIC) capable dâeffectuer des milliards de tentatives par seconde.
Processus de validation
Lorsquâun mineur trouve une solution, il transmet le bloc complet (en-tĂȘte + transactions) au rĂ©seau. Les nĆuds valident:
- le hash de lâen-tĂȘte (un seul SHA-256 pour confirmer).
- lâexactitude des informations du bloc (timestamp, hash du bloc prĂ©cĂ©dent, Merkle Root et nonce).
- la reproductibilitĂ© de la Merkle Root aprĂšs vĂ©rification de lâexactitude de toutes les transactions associĂ©es.
Sâil est valide, le bloc est ajoutĂ© Ă la blockchain. La rĂ©compense (coinbase + frais) ne peut ĂȘtre dĂ©pensĂ©e quâaprĂšs 100 confirmations (environ 16 heures), afin de garantir la stabilitĂ©.
Coûts et récompenses du minage
Coûts:
- ĂlectricitĂ©: principal coĂ»t variable.
- Hardware: ASIC coûteux et de courte durée, rapidement dépassés par des modÚles plus efficaces.
- Infrastructure: refroidissement, installation, maintenance (par exemple, les panneaux solaires ne sont pas âgratuitsâ).
Récompenses:
- Récompense fixe (réduite de moitié en 2024 à 3.125 BTC).
- Frais de transaction variables.
Le mineur doit respecter les rĂšgles de consensus: un bloc invalide est rejetĂ©, gaspillant des ressources sans rĂ©compense. MĂȘme un bloc valide peut devenir âorphelinâ si un autre mineur gagne la course, entraĂźnant des pertes.
Stratégie économique
Le minage est concurrentiel: les mineurs cherchent Ă maximiser leur disponibilitĂ© afin dâamortir les coĂ»ts fixes. Les usages ponctuels (par exemple, allumer les mineurs uniquement avec de lâĂ©nergie excĂ©dentaire) sont peu pratiques, car les coĂ»ts initiaux exigent de la continuitĂ©. Le retour sur investissement peut ĂȘtre long et incertain.
Minage en solo et en pool
- Solo Mining: le mineur travaille seul, en construisant le bloc avec un nĆud complet ou un logiciel personnalisĂ©. Sâil trouve un bloc, il reçoit toute la rĂ©compense, mais la probabilitĂ© est extrĂȘmement faible (cela pourrait prendre des siĂšcles avec un seul ASIC).
- Pool Mining: des protocoles comme Stratum permettent aux mineurs de collaborer:
- Le pool fournit un modĂšle (coinbase, Merkle Root, etc.).
- Les mineurs envoient des shares (tentatives avec un certain nombre de zéros, sous la difficulté du bloc) comme preuve de travail.
- Lorsquâun mineur du pool trouve un bloc, la rĂ©compense est rĂ©partie proportionnellement aux shares envoyĂ©es.
- Stratum v2: Ă©volution qui permet aux mineurs de choisir les transactions, rĂ©duisant la centralisation du pool, bien quâelle exige des vĂ©rifications pour garantir la correction (par exemple, les frais pour le pool).
Estimation du hashrate
Le hashrate (puissance de calcul) est estimé:
- Dans un pool: en comptant les shares reçues dans une unitĂ© de temps, multipliĂ©es par la difficultĂ© de share. Câest une estimation qui peut ĂȘtre perturbĂ©e par la chance.
- Global: en utilisant la difficulté de Bitcoin et le temps moyen entre les blocs (environ 10 minutes). Les oscillations sont normales, mais la moyenne est fiable.
Du hardware comme Nerd Miner utilise des compteurs internes pour obtenir des donnĂ©es prĂ©cises, tandis que les pools sâappuient sur des estimations plus variables, visibles dans des graphiques oscillants.
Programme
Cette leçon a été créée pour un Satoshi Spritz Connect.