Blockchain (décentralisée)

La blockchain est une base de données décentralisée

Ce qui veut dire qu'elle est stockée à plein d'endroits différents : les noeuds (serveurs ou ordinateurs) possèdent tous une copie de la blockchain* !

Ils se synchronisent entre eux : dès qu'un noeud a trouvé un block valide il vient l'ajouter à sa copie locale de la blockchain et va avertir les autres noeuds.

Ensuite, les noeuds vont effectuer des vérifications et l'ajouter s'il suit les bons critères.

*pour les full nodes, car certains possèdent uniquement une copie partielle mais nous n'allons pas aborder ce point dans ce cours.

La blockchain la plus longue est la source de confiance

Pour savoir quelle blockchain est la "vraie", les noeuds vont choisir la blockchain la plus longue, car c'est celle pour laquelle les acteurs du réseau auront passé le plus de temps et d'énergie à valider les block.

Nodes always consider the longest chain to be the correct one and will keep working on extending it

source : Whitepaper du Bitcoin (5. Network)

En effet, plus il y a de blocs, plus cela signifie que les mineurs ont travaillé.

Cela repose également sur un concept de théorie des jeux que Satoshi Nakamato a évoqué de manière implicite dans le whitepaper du Bitcoin : les acteurs du réseaux ont plus intérêt à rester honnête que d'essayer de corrompre le système, le menant à sa propre destruction et entrainant une chute de la valeur du Bitcoin (donc de sa propre fortune).

The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth.

source : Whitepaper du Bitcoin (6. Incentive)

À vous de pratiquer (démo)

Mettez vous dans la peau d'un hacker et suivez les instructions :

  1. Ouvrez le bloc #1 de n'importe quel noeud
  2. Supprimez une ligne (transaction)
  3. Repliez le bloc #1
  4. Observez bien : vous voyez que la blockchain modifiée est beaucoup plus courte que les autres (les derniers blocks ne sont pas valides) !
  5. De plus, les autres noeuds n'ont donc pas été impactés par votre modification.

On se rend compte qu'il faudrait re-miner tous les blocks (comme dans la démo précédente) mais qu'en plus de ça il faudrait avoir une blockchain plus longue que celle des autres noeuds !

Ajoutons qu'il faille tenir compte du fait que les autres noeuds vont probablement trouver un nouveau bloc et le rajouter dans leur vraie version de la blockchain !

Pour rappel, un block est trouvé en moyenne toutes les 10 minutes !

Le hacker se met volontairement en retard en modifiant une donnée du passé et doit donc disposer d'une puissance de calcul énorme pour rivaliser avec l'intégralité de tous les noeuds et proposer sa version de la blockchain !

C'est pour ça qu'on entend souvent parler de l'attaque 51 % dans le consensus PoW, si une personne mal intentionnée dispose de plus de 51 % de la puissance de calcul du réseau, alors elle pourra être en mesure d'imposer sa version altérée de la blockchain !

Car au bout d'un moment elle va en avoir une beaucoup plus longue que celle des autres noeuds !

Et comme évoqué précédemment (théorie des jeux), si un mineur possède une grosse puissance de calcul, il est préférable pour lui de miner de manière honnête et toucher sa récompense (Bitcoin) plutôt que de vouloir détruire le système.