Blockchain en direct

SHA-256 pour de vrai, dans ton navigateur · hache, mine, falsifie, exécute un contrat
Une fonction de hachage transforme n'importe quel texte en une empreinte de 64 caractères. Deux règles qui changent tout : à sens unique (impossible de remonter au texte) et effet avalanche (change une lettre, l'empreinte est complètement différente). C'est la même famille que le bcrypt des mots de passe.
SHA-256
SHA-256
À remarquer — une seule lettre de différence, et aucun caractère commun entre les deux empreintes. On ne peut pas deviner le texte depuis l'empreinte, ni « s'en approcher ». C'est ce qui rend le hash impossible à falsifier.
vert = identique · rouge = différent
Un bloc contient des données + le hash du bloc précédent + un nonce. Son empreinte = SHA-256(n° + données + prev + nonce). Miner = chercher un nonce qui donne une empreinte commençant par des zéros (la preuve de travail). Modifie un vieux bloc : tout ce qui suit se casse.
Chaîne valide
zéros exigés au début
Le défi
Le bloc #2 dit « Marc envoie 50 à Paul ». Tu es Paul : réécris-le en « Marc envoie 500 à Paul » et fais en sorte que ta chaîne redevienne valide — et qu'elle dépasse celle du réseau honnête. Problème : le réseau mine sans s'arrêter.
Réseau honnête
4
vs
Ta chaîne valide
4
Clique « Démarrer le réseau », puis tente de falsifier le bloc #2. Le réseau mine tout seul — tu lui cours après.
Chaîne valide
La leçon — pour réécrire une ligne du passé, tu dois re-miner ce bloc et tous ceux d'après, plus vite que le réseau entier. Mais lui ne s'arrête jamais : il faudrait contrôler plus de la moitié de la puissance. C'est l'attaque des 51 %, et c'est pour ça qu'on ne réécrit pas l'histoire d'une blockchain.
Vous faites déjà ça — un commit git contient le hash de son parent. Changer un vieux commit casse tous les hash suivants : exactement la même chaîne de hachage.
Un smart contract, c'est du code posé dans la blockchain qui s'exécute tout seul, sans intermédiaire. Déploie la cagnotte, laisse les potes contribuer, avance jusqu'à la deadline — et regarde le contrat appliquer sa règle sans que personne ne décide.
Objectif à atteindre
Deadline (n° de bloc)
bloc actuel
0
total dans la cagnotte
0
« Code is law » — si la règle avait un bug (« rembourser deux fois »), elle s'appliquerait quand même : impossible de corriger un contrat déployé. C'est ce qui est arrivé à The DAO en 2016 — ~60 M$ siphonnés en respectant le code à la lettre. Demain, en Solidity, tu écris ce contrat : chaque ligne comptera.