Cet article fait partie du dossier-série qui a pour but de présenter les principaux algorithmes de consensus utilisés dans la blockchain : le Proof of Work (preuve de travail), le Proof of Stake (preuve d’enjeu) et le Delegated Proof of Stake (preuve d’enjeu déléguée).
Pour bien comprendre les propos qui suivent, lisez l’introduction à ce dossier : les algorithmes de consensus dans la blockchain.

Le Proof of Work, le consensus qui récompense le travail !

Grâce à la blockchain, “Proof of Work” (preuve de travail) est un mot qui semble davantage familier à certains d’entre nous. Pourtant, cette notion a été créée bien avant l’apparition du Bitcoin.

Les origines du Proof of Work (PoW)

C’est en 1993 que le concept a été présenté par Cynthia Dwork et Moni Naor, respectivement de Harvard et de l’institut Weizmann. Mais le terme  “Proof of Work” n’a été formulé que quelques années plus tard en 1999 par Markus Jakobsson et Ari Juels.

Si aujourd’hui le PoW est un algorithme de consensus utilisé dans la blockchain, son but initial était de prévenir les spams (courriers indésirables) (1).

Le fonctionnement du PoW dans le cadre de la blockchain

Dans le but de mettre d’accord tous les nœuds de la blockchain sur la version des faits à conserver, le PoW est un des algorithmes de consensus les plus connus.

Il s’agit de trouver la solution à une sorte d’équation mathématique qui ne peut se résoudre qu’aléatoirement et donc nécessite un nombre considérable d’itérations. C’est ce qu’on appelle “miner”.
Le premier nœud à trouver la solution pourra proposer son bloc de données comme celui recensant le véritable historique des transactions des dernières minutes. 
Les autres nœuds vont évidemment vérifier que le bloc est valide, auquel cas il sera ajouté à la blockchain et ce nœud (appelé mineur dans le cadre du PoW) sera récompensé pour son travail avec la crypto-monnaie de la blockchain sur laquelle il mine.

Cette équation, c’est quoi exactement ?

Pour comprendre plus précisément de quoi il s’agit, il faut tout d’abord connaître la fonction de hachage et le rôle qu’elle joue dans la blockchain. Si ce n’est pas le cas, rendez-vous ici.

Dans la blockchain, chaque bloc se voit appliquer la fonction de hachage pour qu’une simple ligne de caractère puisse faire référence à ce bloc. Pour rappel, la résultante d’une fonction de hachage prend la forme qui suit :

La règle, dans le PoW, est que les mineurs doivent trouver un hash qui répond à certains critères. Par exemple, pour le Bitcoin, le hash doit commencer par un certain nombre de zéro (voir le second exemple ci-dessus). Le premier à le trouver peut ajouter son bloc à la blockchain.

La fonction de hachage génère aléatoirement les caractères et par conséquent, le but pour les nœuds est d’appliquer en boucle la fonction de hachage au bloc jusqu’à ce qu’il génère une ligne de caractères qui correspond aux critères attendus.

Cependant, une donnée à laquelle on applique la fonction de hachage donnera toujours le même hash. Pour palier ce problème, on intègre dans le bloc un nonce, soit une donnée supplémentaire arbitraire, qui est changée jusqu’à ce que le bloc de transaction couplé au nonce aboutisse à un hash répondant aux critères attendus. Ainsi dans un bloc d’une blockchain utilisant le PoW, le bloc prend la forme suivante :

Le hash racine permet de retracer toutes les transactions effectuées durant la création de ce bloc. Le nonce apparait car il permet aux autres mineurs de vérifier qu’effectivement ce bloc de données, couplé à ce nonce, auquel on applique la fonction de hachage aboutit bien à un hash correspondant à la forme souhaitée.

Les caractéristiques attendues du hash recherché sont plus ou moins difficiles à obtenir en fonction de l’état de la blockchain. Dans le cas du Bitcoin chaque bloc doit prendre 10 minutes à miner. Si la puissance de calcul des mineurs fait que les blocs sont minés plus rapidement, la difficulté s’accroit, et vice versa.

Les avantages du Proof of Work

Tout d’abord, le PoW est insensible aux attaques de type DoS (attaques par déni de service). Ces attaques informatiques peuvent prendre différentes formes et ont pour but de rendre un service indisponible (en l’occurrence l’utilisation de la blockchain).
Le PoW impose certaines limites dans les actions sur le réseau qui nécessitent beaucoup de ressources (puissance de calcul) pour être exécutées. Ainsi, une attaque de type DoS pourrait être réalisée dans les faits, mais la puissance de calcul nécessaire des ordinateurs pour la mettre en place serait telle que le coût engendré serait disproportionné.

Ensuite, le second avantage du PoW est que ce ne sont pas les détenteurs de la crypto-monnaie qui ont le pouvoir de minage. Peu importe combien de bitcoins vous possédez, ce qui compte pour miner et créer de nouveaux blocs dans la blockchain, c’est la puissance de calcul de vos ordinateurs permettant de résoudre l’équation avant les autres. Par conséquent, ce ne sont pas ceux qui possèdent d’énormes quantités de monnaie qui peuvent prendre des décisions pour le réseau, ce qui assure une certaine impartialité.

Les limites du Proof of work

L’inconvénient majeur du PoW est la consommation d’énergie. Les mineurs ont pour objectif d’avoir toujours plus de puissance de calcul pour que leurs ordinateurs puissent appliquer plus rapidement la fonction de hachage au bloc et ainsi avoir plus de chance d’être le premier à trouver un hash de la forme souhaité. Par conséquent, des fabricants ont commencé à produire des ordinateurs de plus en plus puissants pour permettre un minage plus efficace. La consommation d’énergie pour faire tourner des ordinateurs qui finalement ne produisent « rien » de concret pose problème, car ces ordinateurs spécialisés ne peuvent être utilisés pour rien d’autre.

On estime que la consommation d’énergie du réseau Bitcoin équivaut à celle d’un pays comme l’Irlande.

A cela s’ajoute que les composants nécessaires pour miner sont de plus en plus chers, car de plus en plus puissants. Par conséquent, il est impossible de se mettre à miner seul dans son coin. Le seul moyen existant est celui des pools : vous souhaitez miner ? Vous investissez un montant dans une pool (qui regroupe pleins d’autres investisseurs comme vous) et la pool se charge de miner pour vous. L’agrégation du capital des différents individus permet à la pool de faire face aux coûts du minage.
Mais la conséquence directe, est qu’on assiste à un phénomène de centralisation, puisque seuls de grosses pools ou de gros acteurs peuvent s’adonner au jeu du minage. Ceci se constate clairement pour le Bitcoin, par exemple :

Parts de marché des pools minières Bitcoin les plus populaires (août 2018)

Or initialement, le but du Bitcoin et de la blockchain c’est justement la décentralisation !

Un second problème découle un peu du premier : les attaques 51%.

Dès qu’un acteur possède 51% de la puissance de minage du réseau, il peut prendre contrôle du réseau, être en permanence celui qui créé des blocs et donc récupérer toutes les récompenses liées à ce travail. Comme il devient l’unique acteur capable de créer les blocs, il peut refuser des transactions en ne les incluant pas dans son bloc. Dans le cadre du Bitcoin on peut voir que ce cas de figure pourrait devenir réalité si seulement 4 pools principales s’unissent.

Bien évidemment ce type d’attaque a peu d’intérêt car dès que cela devient public, le réseau est considéré comme compromis. Les utilisateurs vont donc le fuir, amenant à un effondrement du cours de la crypto-monnaie. Par conséquent, l’acteur menant l’attaque perdra beaucoup d’argent puisque la crypto-monnaie qu’il aura accumulée lors du minage perdra considérablement en valeur. La motivation d’une telle attaque serait donc probablement plutôt de détruire une blockchain. Cependant, l’investissement nécessaire en composants informatiques pour posséder 51% de la puissance du réseau rend la tâche extrêmement ardue.

Bien évidemment d’autres algorithmes de consensus ont vu le jour pour proposer des solutions aux problèmes posés par le PoW. Le Proof of Stake (preuve d’enjeu) est probablement l’alternative la plus connue.

Sources et notes :

– (1) Preuve de travail, wikipédia

Répartition du hashrate, Blockchain.com


Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *