MSTR Cat

Blockchain/Niveau II · Mécanismes/2.3 Les blocs et la chaîne/Leçon 3

Une chaîne de hachages

Le lien inviolable et le coût de la réécriture de l’histoire

MatérielUn explorateur de blocs avec des informations détaillées sur l’en-têteUn calculateur ou un script pour vérifier les hachages SHA-256Un carnet pour enregistrer les valeurs de hachage

Curiosité

  1. Comment une séquence de documents numériques résiste-t-elle plus efficacement aux altérations qu’un registre physique ?
  2. Pourquoi l’ajout d’un seul nouveau bloc rend-il plus difficile de modifier toutes les transactions précédentes ?
  3. Quel est le coût computationnel pour un attaquant qui tente de modifier une entrée antérieure ?

Explorer

  1. En 1991, Stuart Haber et W. Scott Stornetta ont publié « How to Time-Stamp a Digital Document ». Ils proposaient de relier des documents en une chaîne dans laquelle chaque nouvel enregistrement contenait le hash cryptographique du précédent. Cette structure créait un historique immuable : modifier un document passé changerait son hash, rompant ainsi le lien avec tous les enregistrements suivants. Satoshi Nakamoto a cité cet article de 1991 dans le livre blanc de Bitcoin comme une inspiration fondatrice de l’intégrité structurelle de la blockchain.
  2. Chaque en-tête de bloc Bitcoin comprend un champ de 32 octets appelé « previous block hash ». Cette valeur est le double hash SHA-256 de l’intégralité de l’en-tête du bloc précédent. Le mineur place ce hash dans le nouvel en-tête avant de commencer à miner, car il fait partie des données hachées. Il en résulte une chaîne dans laquelle chaque bloc s’engage cryptographiquement sur son parent. Sans ce lien précis, les blocs seraient des îlots indépendants ; grâce à lui, ils forment une séquence continue ancrée au bloc de genèse du 3 janvier 2009.
  3. La racine de Merkle de l’en-tête lie toutes les transactions du bloc à son hash. Si un attaquant modifie ne serait-ce qu’une transaction d’un bloc passé, la racine de Merkle change. Par conséquent, le hash du bloc lui-même change. Comme le bloc suivant stocke l’ancien hash de ce bloc modifié comme « hash du bloc précédent », le lien est rompu. La chaîne devient invalide à partir de ce point. Pour la réparer, l’attaquant doit refaire la preuve de travail de ce bloc précis.
  4. Re-miner un seul bloc ne suffit pas, car tous les blocs suivants contiennent eux aussi des hashes qui ne correspondent plus. L’attaquant doit refaire la preuve de travail de chaque bloc postérieur au bloc modifié pour obtenir une chaîne valide. Cela exige une puissance de calcul énorme. Pendant que le réseau honnête continue d’ajouter de nouveaux blocs, l’attaquant fait la course contre lui. Si le hashrate de l’attaquant dépasse celui de tout le reste du réseau réuni, il peut dépasser la chaîne et réécrire l’historique.
  5. Les nœuds ne suivent pas la chaîne la plus longue en nombre de blocs ; ils suivent la chaîne qui cumule le plus de preuve de travail, appelée « chainwork ». Cette mesure tient compte des ajustements de difficulté qui rendent les blocs ultérieurs plus difficiles à miner. Une branche comptant plus de blocs mais moins de travail total n’est pas suivie, même si ses blocs peuvent être valides. Plus une transaction est enfouie profondément dans la chaîne, plus un attaquant doit reproduire de travail pour la déplacer. Chaque confirmation ajoute une couche d’effort de calcul nécessaire pour revenir sur l’historique.
  6. Ouvrez n’importe quel explorateur de blocs et sélectionnez un bloc récent. Notez son champ « previous hash ». Cliquez sur ce hash pour accéder au bloc parent. Vérifiez que le hash de l’en-tête du parent correspond à la valeur stockée dans le bloc enfant. Répétez l’opération trois fois, en remontant la chaîne de lien en lien. Cette vérification manuelle confirme que chaque bloc s’engage cryptographiquement sur son prédécesseur, formant une séquence ininterrompue d’enregistrements validés par le travail qui remonte jusqu’au bloc de genèse.

Faits clés

  • Le schéma d’horodatage chaîné de Stuart Haber et W. Scott Stornetta, publié en 1991, est cité dans le livre blanc de Bitcoin.
  • Chaque en-tête de bloc contient un hachage de 32 octets de l’en-tête du bloc précédent, les reliant séquentiellement.
  • Modifier une transaction passée modifie la racine Merkle et le hash de son bloc, ce qui brise tous les liens ultérieurs.
  • Les nœuds suivent la chaîne ayant le plus grand volume cumulatif de preuve de travail (« chainwork »), et non seulement celle comptant le plus grand nombre de blocs.
  • Un attaquant doit refaire la preuve de travail pour chaque bloc suivant celui qui a été modifié afin de dépasser le réseau honnête.
  • Le bloc de genèse, miné le 3 janvier 2009, sert d’ancrage immuable à la chaîne.

Exercice neuf, six, trois, un

9RassemblerÉnumérez 9 types différents de registres numériques ou de systèmes de tenue de registres. Notez comment chaque système empêche la falsification des entrées passées.
6RegrouperRegroupez les 9 en 6 catégories selon leur mécanisme d’immuabilité : liaison cryptographique, vote par consensus, audit par une autorité centrale, redondance physique, contrat juridique ou autre.
3DistillerRéduisez les 6 groupes à 3 raisons fondamentales pour lesquelles la plupart des systèmes ne parviennent pas à fournir un historique où toute falsification est détectable sans tiers de confiance.
1CristalliserÉcrivez une phrase expliquant comment la preuve de travail transforme une liste chaînée de hashes en une chaîne de propriété sécurisée économiquement.

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.

Ouvrir dans l'académie interactive →

EN PT ES ZH JA KO RU DE MS