À quoi servent les Proof Of Work et Proof Of Stake?

8 October 2017

Avec la sortie prochaine de Casper, le projet Ethereum va commencer à remplacer le système de Proof Of Work par un algorithme appelé Proof Of Stake.

Mais à quoi correspondent ces algorithmes de Proof Of Work et Proof Of Stake? À quoi servent-ils exactement? Et pourquoi sont-ils si importants?

Dans l’article sur les piliers de la Blockchain, j’ai décrit les trois composants essentiels des systèmes de Consensus Distribué:

  • Les protocols P2P permettent de créer un réseau organique de machines et d’échanger des données efficacement.
  • Les structures de Blockchain permettent de maintenir un historique de données facilement vérifiable. Peu importe la taille de la base de données: il suffit de quelques brins d’information pour comparer plusieurs états.
  • Enfin, les algorithmes de Proof Of Work / Stake permettent de faire avancer le système et de s’assurer qu’il converge vers un nouveau consensus.

Imaginons un système sans Proof Of …

J’ai un réseau de machines connectées via le protocole peer to peer. Ces machines utilisent la Blockchain pour stocker et comparer les données.

  • Un utilisateur se connecte a une des machines de ce réseau et soumet une opération, “Envoyer X Ethers A Y”.
  • Le serveur vérifie la transaction, génère un nouveau bock et le transmet au reste du réseau.
  • Les autres participants reçoivent ce block, le vérifie, l’accepte et le transmette à leur tour.

Le nouveau Block se répand de participant en participant, comme un virus.

Mais que se passe-t-il lorsque plusieurs utilisateurs soumettent des transactions à des machines différentes?

Chaque machine va recevoir un block et le diffuser de proche en proche. Certains participant vont donc recevoir les deux Blocks.

La Blockchain repose sur l’idée qu’il n’existe qu’une seule CHAINE d’évènements. Les machines à la frontière vont devoir faire un choix:

  • Garder le block que je connais déjà?
  • Accepter le nouveau block?

“Garder le block que je connais déjà” Les machines contaminées ne changent plus jamais, le système se fige.

Accepter la nouvelle transaction: Les machines contaminées changent d’avis dès qu’un participant leur propose un autre block. Le système se met à osciller et converge très lentement ou pas du tout.

Dans les deux cas, le réseau risque de ne jamais converger vers un consensus!

Systèmes Distribués, Pre-Blockchain

Ce qu’on a pour le moment, c’est un modèle classique de Système Distribué. On ne peut autoriser qu’un seul leader à émettre des modifications.

C’est une solution simple et fiable qui nous permet de ne pas avoir a gérer des modifications concurrentes sur la base de donnée.

Mais on doit pouvoir faire confiance à tous les membres du réseau pour accepter UN leader. Et être certain que chaque machine va transfèrer les modification de ce leader uniquement.

Les mots clé Leader Election et Master-Slave Replication signalent ce modèle semi-centralisé. Par exemple:

  • Apache Kafka: “Each partition has one server which acts as the “leader” and zero or more servers which act as “followers”. The leader handles all read and write requests for the partition while the followers passively replicate the leader.”
  • Apache Mesos: “If the Mesos master is unavailable, existing tasks can continue to execute, but new resources cannot be allocated and new tasks cannot be launched. […] Mesos has a high-availability mode that uses multiple Mesos masters: one active master (called the leader or leading master) and several backups in case it fails.”
  • MySQL: “In this environment, all writes and updates must take place on the master server. Reads, however, may take place on one or more slaves.”

Dans un système décentralisé, on ne peut pas reposer sur les mêmes technologies. On ne connais pas tous les participants, ils peuvent se connecter, se déconnecter, tricher, etc.

C’est là qu’interviennent les Proof Of …

Les méthodes comme le Proof Of Stake ou Proof Of Work donne à chaque membre du réseau une recette pour accepter de nouveaux Blocks. Cette recette permet à chaque participant de prendre des décisions locales. Ils savent quel block garder, lequel diffuser ou quel block ignorer.

Ces règles locales vont faire converger le système globalement vers un nouveau consensus. Ces algorithmes vont permettre de choisir parmi les millions de blocks qui pourraient apparaître a tout moment.

Dans de futurs articles, on va creuser ces algorithmes. Le Proof Of Work est une pierre angulaire de la Blockchain. Et la Proof Of Stake est une manière intelligente de réimplementer les élections de leader.

Photo par Laura Kranz.


Laurent Senta

I wrote software for large distributed systems, web applications, and even robots. These days I focus on making developers, creators, and humans more productive through IPDX.co.