Une blockchain est-elle forcément énergivore ?

La consommation énergétique est un reproche souvent entendu lorsque l’on parle de blockchain.

En réalité, le niveau de consommation d’une blockchain est lié à plusieurs facteurs souvent méconnus.

Nous allons voir comment une blockchain fonctionne, pourquoi elle peut être énergivore, et quelques solutions permettant d'en limiter très fortement la consommation énergétique. Nous nous attarderons en particulier sur l’une de ces solutions, la preuve de travail à difficulté personnalisée, qui est intéressante sur de nombreux aspects.

Qu'est-ce qu'une blockchain ?

C'est une solution de stockage de données très sécurisée et chronologique. Voyons comment fonctionne une blockchain pour assurer un fort niveau de sécurité et une historisation des données.

Une partie de la réponse est inscrite dans son nom blockchain ou chaîne de blocs en français : les données sont enregistrées dans des blocs reliés les uns aux autres.

image-20201022173918481

Historisation des données

Chaque bloc est enregistré à un intervalle régulier (toutes les 10 minutes pour Bitcoin par exemple) et les blocs sont reliés entre eux dans l’ordre chronologique à intervalles réguliers, ce qui permet d’avoir l’historique des données stockées dans la blockchain.

Pour éviter que cette chronologie soit altérée, des mécanismes permettant de garantir l’intégrité des données sont mis en place.

Intégrité des données

Chaque bloc dispose d'un identifiant unique, appelé hash, qui est calculé à partir non seulement de chacune des données stockées dans le bloc, mais aussi de l'identifiant (hash) du précédent bloc.

Chaque donnée du bloc est liée à d’autres données dans une structure appelée Arbre de Merkel :

Transaction

Ceci permet à la fois de garantir l'intégrité des données. Puisque toutes les données étant liées les unes aux autres et les blocs liés les uns aux autres, modifier la moindre donnée dans un bloc oblige à non seulement de recalculer les hashs des données du bloc, le hash du bloc et les hashs des blocs suivants.

Cette liaison permet aussi de garder un historique car nous retrouvons en entête dans chaque bloc l'identifiant du bloc précédent. Nous verrons aussi qu'il y a une régularité entre l'enregistrement de chaque bloc permettant d'avoir une chronologie régulière dans une horloge commune appelée "temps blockchain".

Ce mécanisme permet de garantir l'intégrité et la chronologie des données, mais ce n'est pas le seul mécanisme entrant en jeu pour assurer la sécurité des données.

Redondance des données

Un autre élément entrant en jeu dans la sécurisation des données dans une blockchain est la redondance de ces données entre les ordinateurs (appelés nœuds) du réseau. Cette redondance permet de s'assurer que si certains nœuds ont une défaillance quelconque, d'autres ont une copie identique des données et peuvent donc continuer à assurer le service.

C'est l'entièreté de la blockchain qui est stockée dans chacun des nœuds du réseau. De ce fait, chaque nœud dispose d'une sauvegarde complète.

Les nœuds doivent donc rester synchronisés entre eux en permanence. Pour cela, il faut déterminer d'une part quel participant au réseau sera celui qui signe le prochain bloc, et d'autre part, un protocole permettant de propager le nouveau bloc.

Pour déterminer quel nœud signera le prochain bloc, on utilise ce qu'on appelle un algorithme de "consensus". Il a deux missions :

  1. Permettre de déterminer un nœud pour signer et écrire le prochain bloc.
  2. S'assurer qu'aucun nœud en particulier ne puisse prendre seul le contrôle du réseau et des données.

C'est cet algorithme qui peut être plus ou moins énergivore. Nous allons voir les différents algorithmes de "consensus" existants, leurs avantages et inconvénients non seulement en termes de consommation énergétique, mais aussi par rapport aux missions citées ci-dessus, en particulier concernant la gouvernance du réseau.

Les algorithmes de consensus : le nerf de la guerre énergétique

Nous allons voir quelques algorithmes de consensus les plus courants et détaillerons plus précisément un algorithme qui allie à la fois les avantages d’un consensus ne favorisant aucun membre du réseau au départ et une consommation énergétique contrôlée.

À l'origine : la preuve de travail

Le premier algorithme de consensus utilisé dans l'histoire des blockchains est celui adopté pour le Bitcoin, à savoir la preuve de travail (proof-of-work en anglais).

Son principe est de faire participer l'ensemble du réseau à un exercice cryptographique visant à trouver un hash respectant un certain schéma. Sur Bitcoin, le schéma à respecter est un certain nombre de zéro au début du hash.

L'algorithme de hashage utilisé par la blockchain Bitcoin est le SHA256. Avec cet algorithme, plus il y a de zéros à trouver au début du hash, plus cela est difficile et plus cela requiert de la puissance machine pour y arriver dans un temps donné. C'est pourquoi on appelle cette contrainte : la difficulté.

Dans le cadre de Bitcoin, le délai pour trouver une solution respectant le nombre de zéros, est de 10 minutes. Pour que cette durée reste régulière, car elle sert aussi à l'horloge du réseau, la difficulté, c'est-à-dire le nombre de zéros à respecter, est réévaluée régulièrement pour tenir compte de l'évolution de la puissance globale du réseau.

Pour trouver la solution, chaque nœud va hasher le bloc, à partir non seulement des données du bloc, du hash du bloc précédent, mais aussi d'une variable appelée "Nonce", incrémentée de 1 à chaque nouvel essai. C'est cette variable qui permet de jouer sur le résultat du hashage et ainsi essayer de trouver un hash respectant le schéma.

hash preuve travail

Les algorithmes de consensus alternatifs les plus courants

La preuve de travail est une première solution et elle a l'avantage principale de ne favoriser aucun nœud initialement au niveau de l'algorithme. Elle a en revanche l'inconvénient d'être énergivore, en particulier si la puissance du réseau est importante, car il faut que le rythme de validation d'un bloc toutes les 10 minutes soit conservé.

Concernant le Bitcoin, le réseau est constitué de plus de 11300 nœuds actifs à l'heure où sont écrites ces lignes, dont un certain nombre sont des fermes de machines très puissantes et consommatrices. Le fait qu'un mineur récupère 6,25 BTC (soit 88500 € à l'heure où sont écrites ces lignes) par bloc validé n'est pas étranger à cela.

Afin de résoudre cette problématique, d'autres algorithmes de consensus ont été imaginés, voyons les principaux.

Preuve d'enjeu ou preuve de détention

La preuve d'enjeu (proof-of-stake en anglais) est le deuxième algorithme de consensus le plus populaire dans les blockchain publiques. A la différence de la preuve de travail, il ne nécessite pas d'effectuer un calcul mathématique pour déterminer le prochain nœud signant le bloc.

Pour éviter de faire un calcul, il demande aux participants du réseaux de mettre en réserve (sorte de caution) une certaine quantité de tokens (unités de la blockchain).

L'algorithme prend ensuite successivement les X nœuds (X étant paramétrable) qui ont le plus de tokens en réserve pour signer les blocs.

algo proof of stake

Une variante de cet algorithme est la Delegated Proof-of-Stake, qui se différencie par le fait que les participants doivent recevoir des "votes" sous forme d'une quantité de tokens, de la part d'autres utilisateurs ayant déjà des tokens, pour participer à la validation des blocs. On pourrait presque dire que les nœuds pouvant signer les blocs sont "élus".

Analysis of the main consensus protocols of blockchain - ScienceDirect

Vous avez peut être déjà identifié l'inconvénient principal de cette approche. Les personnes ayant le plus de tokens et donc qui peuvent en mettre davantage en réserve (Proof-of-Stake) et/ou recevant le plus de votes (Delegated Proof-of-Stake), sont favorisés par rapport aux autres. Et évidement, puisqu'il y a très souvent une récompense à la validation d'un bloc, les premiers arrivés sont avantagés par rapport aux autres.

Par contre, cet algorithme consomme très peu d'énergie, puisqu'il n'a pas besoin de faire calculer les nœuds pour déterminer le prochain nœud validant.

Preuve d'autorité

La preuve d'autorité (proof-of-authority en anglais) est apparue plus tard, et s’appuie non plus sur une quantité de tokens mise en réserve, mais l'identité. Pour pouvoir valider des blocs, chaque participant doit être élu par les participants existants et publier son identité.

Cela se rapproche donc d'un fonctionnement centralisé, où il y a un groupe d’ordinateurs sélectionnés à l’avance qui sont les seuls à pouvoir valider les blocs. Cette approche n'est donc pas adaptée aux blockchains publiques qui se veulent être ouvertes à tous.

Comme la Proof-of-Stake, les nœuds n'ont pas à faire de calcul pour être sélectionnés, et donc la consommation énergétique reste faible. Mais on voit par contre qu’on perd en grande partie l’approche décentralisée initiale des blockchains.

Une approche originale : la preuve de travail à difficulté personnalisée

Plus récemment, en 2017, est apparue la preuve de travail à difficulté personnalisée (Personalized Proof-of-Work en anglais). Elle tente de combiner les avantages de la preuve de travail (pas de présélection des nœuds) tout en réduisant ses inconvénients en terme de consommation énergétique.

Une solution d’identification décentralisée : la toile de confiance

Pour éviter d'utiliser un mécanisme d’identification centralisé, un système d’identification décentralisé appelé "Toile de confiance" (Web of Trust en anglais), a été conçu et implémenté.

Tout comme dans la preuve d'autorité, les participants sont identifiés, mais à l'aide de leur clé publique. Ils peuvent donc librement choisir de pas publier leur identité réelle.

Celui-ci fonctionne par un mécanisme de parrainage (certification). Contrairement à la preuve d'autorité, il n'est pas seulement réservé à ceux qui participent au réseau mais est ouvert à tous les utilisateurs, qu'ils valident ou pas des blocs (i.e : qu’ils soient mineurs/forgeurs ou non).

Pour faire simple, un utilisateur doit se faire certifier par 5 autres utilisateurs minimum pour devenir être lui-même membre. Il y a des conditions plus complexes en réalité, pour protéger d’une éventuelle attaque Sybil (prise de contrôle de la toile de confiance).

Les nouveaux tokens ne sont pas créés en récompense du minage, mais par tous les utilisateurs

Les validateurs de blocs (mineurs/forgeurs) ne reçoivent pas automatiquement une récompense, ce sont tous les utilisateurs identifiés qui voient leur compte crédité tous les jours d'un montant identique, appelé "dividende universel" (DU). C'est par ce mécanisme que sont créés les nouveaux tokens de la blockchain.

Le calcul de ce DU se fait selon une équation établie dans une théorie monétaire appelée la Théorie Relative de la Monnaie de Stéphane Laborde.

Elle est la suivante lorsque le nombre d'utilisateur est globalement stable :

DU TRM

avec :

image-20201129181616892

et: ev = Espérance de vie moyenne (~80 ans en Europe).

Dans le cas d’un nombre d’utilisateurs plus variable, comme c’est bien souvent le cas dans les crypto-monnaies décentralisées, le calcul du DU est plus fin pour lisser les effets des entrants et sortants, et répond à l’équation suivante :

DU Ğ1

Le montant du DU est recalculé tous les 6 mois pour tenir compte de l'évolution du nombre d'utilisateurs et de la quantité de tokens en circulation, pour faire en sorte que chacun crée une quantité de tokens convergeant vers la moyenne du total de tokens en circulation au bout de 40 ans (du fait que le coefficient c est calculé selon la demi espérance de vie moyenne en Europe).

Ceci permet de faire en sorte que les participants au réseau ne le fassent pas par intérêt de la récompense. Ce qui évite la course à la puissance entre les participants au réseau.

Une consommation énergétique contrôlée

Vous l’aurez compris, cette toile de confiance permet d’identifier, anonymement et de façon décentralisée, les utilisateurs, et donc également les propriétaires de nœuds mettant à disposition des ordinateurs pour valider les blocs.

Ceci permet alors d’appliquer une difficulté personnalisée à chaque propriétaire de nœuds et permet ainsi d'ajuster la consommation énergétique du calcul de la preuve de travail.

Par ailleurs, une limite haute est mise en place pour exclure du calcul les nœuds ayant une difficulté supérieure à celle-ci.

Pour faire varier la difficulté deux mécanismes sont mis en place.

1 - Le facteur d'exclusion

Le facteur d'exclusion est appliqué sur le nœud ayant validé le dernier bloc. Il fait en sorte d'exclure du calcul, pendant un nombre de blocs, les nœuds des membres ayant récemment validé un bloc.

L’intérêt est double. Il permet non seulement de limiter la consommation énergétique, puisque ces nœuds ne participent plus du tout au jeu mathématique de la preuve de travail, mais aussi d’éviter que des super-calculateurs ou fermes de calcul puissent prendre le contrôle de la blockchain.

Voici comment il est calculé :

Facteur d’exclusion

Avec nbNoeudsCalculants le nombre de nœuds ayant participé au calcul pour la validation du dernier bloc trouvé par le membre, et nbBlocsValideesParLesAutres le nombre de blocs signés par le reste du réseau depuis que le membre considéré a trouvé son dernier bloc.

Si le membre est l’auteur du dernier bloc, alors la variable nbBlocsValideesParLesAutres sera égale à 0, puisqu’il vient de valider un bloc et donc aucun autre membre n’a validé de bloc depuis. Et de ce fait le facteur d’exclusion résultant sera d’autant plus élevé qu’il y aura de nœuds (0,67*nbNoeudsCalculants).

Les membres du réseaux ayant calculés moins récemment des blocs, auront eu des facteurs d’exclusion plus faible puisque le dénominateur viendra diviser le numérateur d’autant plus qu’il y a de blocs validés par les autres depuis qu’ils ont validés leur derniers blocs.

Mais le facteur d’exclusion seul n’est pas suffisant car si la difficulté personnalisée se limitait à cela, ce serait toujours le tiers des membres calculant les plus puissants qui écriraient des blocs, les deux tiers restants seraient presque toujours exclus.

C’est pourquoi, en plus de ce facteur d’exclusion, un autre paramètre intervient : le handicap.

2 - Le handicap

Handicap

Le handicap est appliqué sur les nœuds ayant validé notablement plus de blocs que la médiane du réseau (nbMedianBlocsEcritsParNoeudsFenetreCourante) sur les X derniers blocs (fenêtre courante) : nbBlocsNoeudFenetreCourante.

Il permet donc de fortement défavoriser les nœuds les plus performants, afin de donner leur chance aux appareils les plus économes (comme un Raspberry Pi 3). Comme la performance est souvent liée à une consommation énergétique élevée, l’application de ce handicap permet de réduire l’impact énergétique du réseau.

Une approche respectant la décentralisation tout en réduisant la consommation énergétique

Le choix de se baser tout de même sur un mécanisme de preuve de travail permet de ne pas favoriser un sous-ensemble de nœuds en particulier au départ, et la difficulté personnalisée permet de ne pas favoriser les appareils les plus performants, laissant au contraire une chance aux appareils peu performants mais beaucoup moins consommateurs en énergie.

La consommation énergétique est donc mécaniquement bien plus faible par rapport à la preuve de travail classique. Les participants n’ayant aucun intérêt à investir dans des centres de calculs ultra-puissants.

Y a-t-il une application pratique de la preuve de travail à difficulté personnalisée ?

Cette approche est utilisée par la crypto-monnaie Ğ1. Le logiciel gérant sa blockchain s’appelle Duniter et il implémente l’algorithme de preuve de travail à difficulté personnalisée. Duniter est écrit actuellement en TypeScript, mais une oxydation en Rust est en cours (appelée Dunitrust). La crypto-monnaie Ğ1 n’est pas mise en vente sur les plateformes d’échanges de crypto-monnaie, ce qui permet d’éviter la forte volatilité qu’ont de nombreuses autres crypto-monnaies.

Elle est utilisée par une communauté de plus de 2857 utilisateurs dans le monde, principalement en France, comme moyen d’échange lors d’événements concrets où les utilisateurs se rencontrent et l’utilisent pour s’échanger des biens et des services entre eux. Quelques commerçants l'acceptent également, comme le restaurant l'Etrillum à Nantes.

Bilan

Comme nous avons pu le voir, la blockchain n'est pas forcément énergivore, cela dépend de l'algorithme de consensus choisi. Nous avons vu que le choix de cet algorithme joue non seulement sur la consommation énergétique, mais aussi sur la gouvernance du réseau. Il est donc la clé de voute de la blockchain, et son choix n'est pas anodin.

En effet, nous avons vu avec la preuve de travail, que si la gouvernance du réseau est parfaitement décentralisée sans favoriser aucun membre du réseau à priori, la difficulté du jeu cryptographique étant identique pour tous, les membres peuvent jouer sur la puissance de leurs machines pour obtenir un avantage par rapport aux autres, au détriment de la consommation énergétique.

A l'inverse, nous avons vu que les preuves de détention (PoS/DPoS) et d'autorité (PoA), si elles permettent une consommations énergétique très faible, elles ont une gouvernance bien moins décentralisée et favorisent les personnes ayant le plus de tokens (PoS), de tokens et votes (DPoS), ou étant choisis par les participants existants (PoA).

Enfin, nous avons vu qu'en utilisant une preuve de travail en faisant varier la difficulté de façon personnalisé (PPoW) pour chaque membre en fonction de sa rapidité de calcul et de son différentiel de blocs validés par rapport aux autres, alors nous arrivons à allier une bonne gouvernance décentralisée avec une consommation énergique davantage maitrisée.

Bertrand

Bertrand n’est pas avare d’échanges ni de partages. Très impliqué en tant que citoyen et informaticien, il croit en une société respectueuse des écosystèmes et de la planète : c’est peut-être pour cela qu’il aime l’hybride !

Et si vous ne le rencontrez pas pendant un de ces talks sur la Blockchain ou l’internet décentralisé vous pourrez discuter avec lui entre les tiers-temps d’un match de Hockey des Corsaires de Nantes.

Tentez aussi votre chance en vous rendant dans le cop de son équipe favorite, c’est celui qui tape le plus fort sur son tambour !

Retours aux publications