Difficulty Adjustment ajuste automatiquement la difficulté du minage. Lorsque les mineurs trouvent les blocs trop vite, les règles rendent la recherche plus difficile ; lorsqu'ils les trouvent trop lentement, elles la facilitent. Bitcoin peut ainsi garder un rythme approximativement stable malgré de fortes variations de puissance de calcul. Chaque nœud qui vérifie l'ensemble des règles contrôle cet ajustement de la même façon : aucun administrateur n'en décide.
Imaginez que de nombreuses machines rejoignent les mineurs. Ensemble, elles essaient davantage de calculs chaque seconde et trouvent donc, à difficulté égale, les blocs plus vite en moyenne. Un bloc regroupe des transactions confirmées ; sa création peut aussi produire de nouveaux bitcoins. Sans ajustement, des machines plus puissantes accéléreraient donc aussi cette émission. Les mineurs calculent sans cesse un hash, une empreinte numérique de l'en-tête du bloc. Ils réussissent lorsque le résultat est suffisamment petit. Un seuil plus strict réduit la chance de réussite de chaque essai : il faut alors davantage de travail en moyenne. [3]
Sur le réseau principal de Bitcoin, appelé mainnet, la difficulté est recalculée tous les 2 016 blocs. À dix minutes par bloc en moyenne, cela représente environ deux semaines. Mais aucun minuteur ne déclenche le changement : c'est le numéro du bloc, sa hauteur, qui détermine le moment du recalcul. Si beaucoup de mineurs arrêtent soudain leurs machines, les blocs restants peuvent prendre plus de temps. Le réseau termine d'abord la période avec l'ancienne difficulté ; le mainnet ne prévoit pas de baisse d'urgence immédiate. [1] [2]
Supposons que la durée utilisée dans le calcul soit de 10 jours au lieu des 14 visés. La période suivante devient plus difficile : la difficulté augmente approximativement dans un rapport de 14 à 10, soit de 40 %. Si la période mesurée dure au contraire 28 jours, la difficulté est approximativement divisée par deux. Ces exemples simplifiés négligent les arrondis et supposent que la difficulté minimale autorisée n'entre pas en jeu. Si la puissance de calcul reste ensuite la même, le nouveau réglage rapproche le temps attendu entre les blocs de dix minutes. [1] [2]
Dix minutes sont une moyenne à long terme, pas un délai promis. Deux blocs peuvent arriver presque à la suite, puis un autre se faire attendre bien plus longtemps. Votre transaction ne figurera pas forcément dans le prochain bloc non plus : ses frais et les autres transactions en attente comptent également. L'ajustement ne contrôle pas le prix du BTC et ne garantit aucun bénéfice aux mineurs. Il ne change pas non plus la quantité de nouveaux bitcoins autorisée par bloc. Sa division périodique par deux, le Halving, suit une autre règle. [2] [3]
Les règles utilisent un seuil numérique appelé target. Un target plus petit rend le minage plus difficile ; le nombre nommé difficulté exprime cette relation dans l'autre sens. Le nouveau target est égal à l'ancien, multiplié par la durée mesurée puis divisé par la durée visée de 1 209 600 secondes. Avant ce calcul, la durée mesurée est bornée entre un quart et quatre fois la durée visée, afin de limiter l'ampleur d'un ajustement. Le target ne peut pas non plus dépasser la valeur maximale powLimit. Il est inscrit dans l'en-tête sous la forme compacte nBits, dont la précision est limitée. Voilà pourquoi les pourcentages des exemples sont approximatifs. [1] [2]
Bitcoin Core compare l'horodatage de l'en-tête du dernier bloc de la période terminée à celui du premier. Entre 2 016 blocs, il y a 2 015 intervalles : les règles conservent cette particularité historique. Les mineurs choisissent les horodatages dans les limites imposées par le réseau. Ce ne sont ni des mesures exactes du moment où le bloc a été trouvé, ni Median Time Past, une autre valeur temporelle calculée à partir de blocs précédents. Ce détail n'est pas nécessaire pour comprendre le rôle de l'ajustement, mais il compte pour reproduire exactement le calcul. [1]
Les sites affichent souvent une estimation du prochain changement. Tant que la période n'est pas terminée, de nouveaux blocs arrivent et cette estimation peut évoluer. Pour vérifier un ajustement effectué avec votre propre nœud, comparez les horodatages des blocs aux bornes de la période, convertissez leurs nBits en targets numériques et refaites le calcul, limites et arrondis compris. Chaque Full Node, un nœud qui vérifie lui-même les règles de Bitcoin, contrôle le target requis lorsqu'il accepte un bloc. La procédure décrite concerne le mainnet ; les réseaux de test peuvent suivre d'autres règles. [1] [2]
Pour une vision complète, lisez aussi Proof of Work, Minage, Timechain / Blockchain, Block Subsidy. Cette entrée est également citée par Timechain / Blockchain, Proof of Work, Minage, Halving.