Quelqu'un peut-il expliquer comment fonctionne la Blockchain Bitcoin ?

[pxn_tldr]

Bill est vendeur de fruits. Sally veut acheter des pommes pour 2,50 £. Sally souhaite utiliser Bitcoin pour payer Bill pour les pommes. Bill présente à Sally son adresse de paiement, par exemple sous forme de code de réponse rapide  :

Sally utilise un portefeuille Bitcoin sur son smartphone pour scanner le code. Un écran lui est présenté où elle peut saisir un montant à envoyer à l'adresse de Bill. Elle tape « 2,50 £ » et appuie sur envoyer. Un instant plus tard, la tablette de Bill l'informe qu'il y a un paiement entrant en attente, qui n'est pas encore confirmé. Une dizaine de minutes plus tard, le paiement est finalisé lorsqu'il est confirmé.

Sous la capuche

1) L'ordre de paiement (Transaction) :

Quelqu'un peut-il expliquer comment fonctionne la Blockchain Bitcoin ?

Cette transaction est composée de trois informations  : les « pièces » qui seront dépensées, le paiement au destinataire et une signature.

Le portefeuille de Sally est connecté aux autres participants du réseau. Le portefeuille transmet la transaction à chacun d’eux, qui à son tour la transmet à toutes leurs connexions. En quelques secondes, tous les participants du réseau ont reçu une notification de l'ordre de paiement de Sally. Chaque participant vérifie si les « pièces » référencées existent et si la signature correspond à celle du propriétaire.

2) Confirmation :

Pour l'instant, le paiement de Sally n'est qu'une promesse, car la transaction n'est toujours pas confirmée.

s'efforcent de confirmer ces transactions. Les mineurs récupèrent toutes les transactions non confirmées et tentent de les regrouper dans un ensemble. Lorsque cet ensemble ne remplit pas les conditions de difficulté, ils le remanient et réessayent. Les mineurs du monde entier effectuent ce travail jusqu'à ce qu'à un moment donné, quelqu'un trouve un ensemble avec les bonnes propriétés  : un bloc valide. Parce que trouver un bloc valide est un événement très improbable, l’annonce du nouveau bloc prouve que le réseau a déployé des efforts pour le trouver.

Tout comme pour les transactions précédentes, le mineur envoie le bloc à toutes ses connexions, qui à leur tour le transmettent. Chaque participant vérifie le travail (pour confirmer que le bloc suit les règles) et, lorsqu'il est satisfait, applique les transactions incluses à son propre grand livre  : les transactions sont exécutées et les « pièces » utilisées par les expéditeurs sont marquées comme dépensées, tandis que le les destinataires gagnent de nouvelles « pièces » selon les instructions des transactions. La transaction de Sally (et toutes les autres) est désormais confirmée. Bill peut désormais dépenser les « pièces » qu'il a reçues de Sally.

3) La blockchain

Prenons du recul. Avant que Sally ne paie Bill, Sally recevait ses bitcoins d'Alice. L'ordre des transactions est crucial car les transactions ne peuvent dépenser que des « pièces » déjà créées. Sally ne peut pas payer Bill si elle n'a pas d'abord reçu l'argent d'Alice. Les transactions ont une position explicite dans le bloc qui les confirme et chaque bloc a une position fixe dans la chaîne de blocs en faisant référence à son prédécesseur direct. Par exemple, le bloc 90 est lié au bloc 89 comme son prédécesseur, à son tour le bloc 89 s'appuie sur le bloc 88, et ainsi de suite, jusqu'à ce que le bloc 1 pointe vers le 0ème bloc, le bloc Genesis.

Bloc Genèse ← 1 ← … ← 88 ← 89 ← 90

L'éponyme chaîne de blocs a des propriétés utiles :

  • Résultats déterministes: Tout le monde peut partir du Bloc Genesis et appliquer chaque bloc consécutivement pour arriver au même résultat
  • Synchronisation et consensus: Lorsque vous avez appliqué le dernier blocage, les soldes de votre grand livre ont exactement le même état que dans les grands livres de tous les autres participants
  • Histoire immuable : Au fur et à mesure que chaque bloc s'appuie sur son prédécesseur, chaque nouveau bloc enterre l'historique sous plus de travail (voir graphique ci-dessous)  :

Illustration  : Mark Montgomery/Spectre IEEE