Cible de difficulté
La cible (target) est le seuil sous lequel le hash d'un bloc doit tomber pour être valide. Plus elle est petite, plus c'est difficile. Encodée par nBits. Ajustée tous les 2 016 blocs.
Définition
La cible (target) est un nombre de 256 bits que tout hash de bloc doit être strictement inférieur pour être considéré valide par le réseau Bitcoin. C'est la traduction technique du concept de difficulté : plus la cible est petite, plus rare sera le hash valide, plus il faudra de tentatives en moyenne. C'est l'unique paramètre qui régule la production des blocs et stabilise le temps moyen autour de 10 minutes.
Représentation en nBits
Pour économiser de la place dans l'en-tête de bloc (qui est plafonné à 80 octets), la cible n'est pas stockée telle quelle (256 bits = 32 octets) mais sous forme compactée appelée nBits sur 4 octets. C'est une mantisse + exposant similaire à un float :
target = mantissa × 256^(exponent − 3)
Par exemple, nBits = 0x1703af30 correspond à une cible avec exponent = 0x17 et mantissa = 0x03af30. La cible exacte se déduit par cette formule.
Ajustement tous les 2 016 blocs
| Aspect | Valeur | |--------|--------| | Période de retarget | 2 016 blocs (~2 semaines) | | Temps cible | 10 minutes par bloc | | Temps cible global | 2 016 × 10 min = 20 160 min ≈ 14 jours | | Plafond de variation | ÷4 ou ×4 par retarget |
Si les 2 016 derniers blocs ont mis 12 jours au lieu de 14, la cible diminue (difficulté monte). Si 16 jours, elle augmente (difficulté baisse). Le retarget se fait à hauteur de bloc multiple de 2 016, automatiquement par tous les nœuds.
Bug historique du timewarp
L'ajustement utilise le timestamp du premier bloc de la période précédente, pas de la période courante. C'est un défaut connu dit « off-by-one » qui ouvre théoriquement à des attaques timewarp si un attaquant contrôlait suffisamment de hashrate pour manipuler les timestamps. Plusieurs propositions de soft fork (Great Consensus Cleanup) prévoient de corriger ce bug.
Évolution historique
| Date | Difficulté | Hashrate équivalent | |------|-----------|---------------------| | Janvier 2009 | 1,0 | ~7 MH/s (CPU) | | 2013 | ~75 000 | premiers GPU/FPGA | | 2016 | ~200 milliards | ASIC moderne | | 2020 | ~16 000 milliards | ASIC efficaces | | Mai 2026 | > 110 000 milliards | hashrate > 800 EH/s |
L'évolution exponentielle de la difficulté est l'image directe de la sécurité accumulée du réseau.
Cible vs difficulté
- Cible : valeur absolue, en hash
- Difficulté : ratio entre la cible du genesis block et la cible courante
Une difficulté de 110 trillions signifie qu'il faut 110 trillions de fois plus de hashes en moyenne pour trouver un bloc qu'à l'époque du genesis block.
À retenir
La cible de difficulté est le métronome de Bitcoin. Elle garantit l'émission régulière des blocs sans intervention humaine, et son ajustement automatique sur 2 016 blocs est une élégance algorithmique majeure du protocole. C'est aussi un baromètre du capital industriel mobilisé dans le minage.
Termes lies
- DifficultéLa difficulté est un paramètre qui ajuste la rareté d'un hash valide. Elle est recalculée tous les 2 016 blocs (~2 semaines) pour viser un bloc toutes les 10 minutes. Augmente avec le hashrate. Garantit la régularité des blocs malgré l'évolution technologique.
- nBitsnBits est l'encodage compact de la cible de difficulté dans l'en-tête de bloc. Contient 4 octets (mantisse + exposant). Permet de représenter des cibles de 256 bits avec compacité. Fondement technique de l'ajustement de difficulté.
- Preuve de travail (PoW)La preuve de travail est le mécanisme de consensus de Bitcoin : prouver qu'on a effectué un calcul coûteux pour ajouter un bloc. Inventée par Adam Back (Hashcash), elle est appliquée au minage par Satoshi. Elle protège la chaîne d'attaques bon marché et incarne sa sécurité physique. C'est la principale critique « énergivore », mais aussi sa principale force.
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.