Blockchain/Niveau II · Mécanismes/2.3 Les blocs et la chaîne/Leçon 4
Preuve de travail et cible
Le billet de loterie dont l’achat coûte de l’énergie et dont la vérification ne coûte qu’un hash
MatérielUne interface d’explorateur de blocsUne calculatrice hexadécimale ou un environnement de programmation capable de SHA-256La documentation de référence pour les développeurs Bitcoin
Curiosité
- Pourquoi une cible numérique plus basse rend-elle plus difficile la découverte d’un hash valide ?
- Comment une valeur de quatre octets peut-elle encoder un nombre suffisamment grand pour limiter les 2^256 possibilités ?
- Qu’advient-il du temps de bloc attendu lorsque la puissance de hachage double alors que la cible reste inchangée ?
Explorer
- Un bloc n’est accepté que s’il résout un problème de calcul. Un mineur doit trouver un en-tête de 80 octets dont le double hash SHA-256 est numériquement inférieur ou égal à un seuil donné, appelé la cible. Cette contrainte transforme la création de blocs en recherche d’un nombre rare dans un espace immense de 2^256 hashes possibles. La validité de tout bloc candidat dépend entièrement de cette seule inégalité mathématique.
- La cible elle-même n’est pas stockée sous sa forme complète de 32 octets, car cela occuperait trop de place dans l’en-tête. Elle est plutôt compressée en quatre octets appelés « nBits » à l’aide d’un encodage mantisse-exposant. Ce format est avec perte : il ne conserve qu’une mantisse de trois octets, si bien que la cible est légèrement arrondie, ce qui ne coûte rien en pratique. Le décodage de ces quatre octets reconstitue l’énorme nombre de 256 bits qui fixe la limite supérieure des valeurs de hash acceptables.
- Pour trouver un hash valide, les mineurs parcourent des variantes des champs de l’en-tête. La variable principale est le nonce de 32 bits, qui offre environ 4,3 milliards de valeurs distinctes par cycle de tentatives. Lorsque la vitesse du matériel épuise instantanément ces combinaisons, les mineurs modifient l’extra-nonce dans la transaction coinbase ou ajustent l’horodatage pour générer de nouvelles racines de Merkle et de nouvelles configurations d’en-tête. Chaque modification produit un hash complètement différent, ce qui revient à créer un nouveau billet de loterie.
- Le travail attendu augmente en proportion directe de la difficulté, tandis que la cible évolue en sens inverse : lorsque le réseau réajuste la cible après une hausse de la puissance de hachage, la cible baisse, ce qui exige davantage de zéros en tête dans la représentation binaire pour obtenir une solution valide. Le nombre de hashes attendu pour trouver un bloc est d’environ la difficulté multipliée par 2^32. Cette mise à l’échelle garantit que, que le minage se fasse sur des ordinateurs portables ou dans des fermes industrielles, l’intervalle moyen entre les blocs reste stable, à environ dix minutes.
- La vérification est asymétrique par rapport à la création. Alors que trouver un hash valide peut nécessiter des milliards d’essais, le vérifier ne demande qu’un seul double SHA-256 de l’en-tête et une comparaison avec la cible. La vérification de la preuve de travail est donc instantanée, même si la validation complète d’un bloc implique toujours de vérifier chacune de ses transactions. Le modèle de sécurité repose sur cette disparité : produire du travail coûte cher, mais s’y fier coûte peu.
- Le bloc de genèse a été miné à la difficulté 1, la plus faible que permettent les règles ; même alors, un hash valide devait commencer par environ 32 bits à zéro, soit environ une réussite sur 4,3 milliards d’essais. Les blocs récents exigent beaucoup plus de zéros en tête, car la puissance de hachage mondiale a augmenté de plusieurs ordres de grandeur. Comparer la représentation hexadécimale du hash du bloc 1 avec celle d’un bloc actuel révèle ce passage spectaculaire d’un champ ouvert à un espace de recherche très restreint.
Faits clés
- Le hash d’un en-tête de bloc Bitcoin valide doit être numériquement inférieur ou égal à sa cible de difficulté.
- La cible est stockée de manière compacte sur quatre octets, sous la forme de « nBits », à l’aide d’un encodage mantisse-exposant.
- Les mineurs font varier le nonce de 32 bits, l’extra-nonce de la coinbase et l’horodatage pour générer de nouveaux hashes candidats.
- La difficulté est définie comme la cible maximale possible divisée par la cible actuelle.
- Vérifier la preuve de travail d’un bloc nécessite un double SHA-256 de l’en-tête et une comparaison.
- Le bloc de genèse a été miné à la difficulté 1.
Exercice neuf, six, trois, un
9RassemblerListez 9 composants ou variables distincts impliqués dans le calcul de la preuve de travail pour l’en-tête d’un bloc Bitcoin.
6RegrouperRegroupez ces 9 éléments en 6 catégories selon qu’ils sont fixes, variables à chaque tentative, variables à chaque cycle, encodés de manière compacte, dérivés des transactions ou utilisés pour la vérification.
3DistillerRéduisez les 6 groupes à 3 principes fondamentaux qui régissent la façon dont la difficulté s’ajuste à la puissance de hachage du réseau.
1CristalliserÉcrivez une phrase expliquant pourquoi la preuve de travail est difficile à produire mais facile à vérifier.
Vérification des faits
Les dates, les chiffres et les affirmations ont été vérifiés à l’aide des sources publiées listées ci-dessous.