Les défis de la blockchain Ethereum

Pour bien comprendre cet article, je vous conseille de lire avant l’aEthereum Bitcoinrticle 12 questions sur Ethereum.

Le premier défi d’Ethereum est la question de la gouvernance. Pour bien comprendre ce défi, il faut d’abord que je vous explique ce qu’est l’affaire the DAO.

Qu’est ce qu’une DAO dans Ethereum?

Une Organisation Autonome Décentralisée (DAO -Decentralized Autonomous Organization) est un programme, fonctionnant sur la blockchain Ethereum, qui définit des règles de fonctionnement et de gouvernance transparentes. Cela permet à une communauté de s’organiser autour d’un objectif commun.

Tous les participants à une DAO œuvrent à l’organisation, au vote, à la direction que prend le programme, sans qu’une seule personne n’en ait le plein contrôle.

Plusieurs DAO ont été créés sur Ethereum. CharityDAO a pour objectif est de rendre la collecte et l’utilisation de fonds par les organismes de charité plus transparents. Digix vise à créer l’équivalent d’un étalon or sur la blockchain. Maker DAO vise à créer une cryptomonnaie stable indexée sur le dollar.

Quel était le projet « the DAO »?

The DAO, lancé par la startup slock.it, ambitionnait de créer un fonds d’investissement qui aurait investi dans l’écosystème d’applications d’Ethereum. Ses membres, détenteurs de jetons « the DAO » auraient décidé collectivement de financer ou non les projets et de distribuer les risques et bénéfices.

Cette idée a passionné pour l’expérience sociale qu’elle représentait : une organisation qui évoluerait indépendamment d’un Etat ou d’une personne privée.

A son lancement, le projet « the DAO » a collecté près de 150 millions. En juin 2016, une faille du contrat intelligent sous-jacent à « the DAO » a été exploitée pour drainer environ un tiers des fonds investis (environ 50 millions de dollars au cours du jour). Le pirate a injecté les fonds dans un autre contrat autonome dont il pouvait prendre l’entier contrôle 35 jours plus tard.

Pourquoi la sécurité des contrats intelligents est un enjeu majeur pour Ethereum ?

L’affaire a été un séisme dans l’écosystème Ethereum qui a réalisé que les failles du code informatique peuvent avoir des conséquences dramatiques lorsque le contrat intelligent gère des quantités importantes d’argent.

Le délai de 35 jours avant que le pirate ne puisse accéder aux fonds a laissé le temps à la communauté de réagir. Deux camps se sont formées. Les premiers souhaitaient annuler les effets du piratage en effectuant une duplication de la blockchain Ethereum avec modification (un fork).

L’autre camp estimait qu’une telle modification est contraire aux principes d’immuabilité régissant les blockchains. Ils préféraient maintenir la chaîne initiale (Ethereum classic) et laisser le pirate partir avec son butin.

Une duplication de la blockchain a finalement été proposée par les développeurs de la Fondation Ethereum. Dans cette nouvelle chaîne Ethereum, les conséquences du piratage ont été annulées : les détenteurs de jetons volés ont pu les récupérer. 85-90 % des mineurs ont accepté cette duplication avec modification de la blockchain Ethereum.

Cet évènement a fait ressortir l’absolue nécessité d’améliorer la sécurité des contrats intelligents. Contrairement aux logiciels traditionnels qui peuvent facilement être corrigés, le code d’un contrat intelligent ne peut pour le moment pas être mis à jour en cas de bug.

Comment améliorer la sécurité des contrats intelligents?

Le réseau Ethereum est encore en phase de développement et d’expérimentation. Les contrats intelligents sont encore difficiles à coder, à auditer et à vérifier. Un enjeu est donc de pouvoir pallier aux défaillances des programmeurs si ces derniers commettent des erreurs qui sont dommageables pour les utilisateurs, et donc pour la viabilité de l’écosystème.

Il faut que les contrats soient testés, et validés… Un système de « Vérification Formelle » a été ajouté à l’Ethereum Virtual machine pour analyser automatiquement les contrats intelligents. Il utilise des preuves mathématiques pour détecter que ces derniers fonctionnent correctement.

La sécurité passe aussi par une meilleure définition du langage de programmation « Solidity ». De nombreux efforts ont été réalisés en ce sens et le langage est mis à jour régulièrement. Vitalik Buterin travaille également sur un projet expérimental Vyper qui a pour objectif de développer un langage plus spécifiquement conçus pour la création de contrats intelligents.

Une procédure a été proposée pour permettre à la communauté Ethereum de modifier l’état de la blockchain dans le cas où des fonds sont perdus à la suite d’une erreur de programmation, l’Ethereum Recovery Proposal. Elle n’a pas été adoptée, faute de consensus.

Comment faire évoluer la gouvernance d’Ethereum ?

Le projet Ethereum repose sur la bonne volonté de quelques individus. L’affaire the DAO a mis en lumière l’importance de la communication en temps de crise et la nécessité d’ouvrir à long terme la gouvernance d’Ethereum pour ce type de décisions.

La fondation Ethereum ne peut pas être à l’initiative de l’ensemble de décisions de gestion affectant la chaîne majoritaire, en particulier celles touchant aux ethers portés au crédit de certains comptes… Cela ferait  peser un juridique sur ses membres.

La question posée est donc : comment donner à chacun une voix et une opportunité de discuter de la façon dont le protocole doit changer à l’avenir, tout en conservant une capacité à faire avancer et se développer Ethereum ?

Par essence, une blockchain publique et décentralisée n’a pas d’autorité centrale ou d’organisation qui prend des décisions. Cela pose des difficultés pour les mises au normes inévitables du protocole.

Qui est responsable des mises à jour et des correction des bugs? Qui organise la communauté des développeurs de la blockchain ? Comment y parvenir sans une certaine centralisation comme celle assurée actuellement par la Fondation Ethereum ? Qui peut prendre la décision de réécrire la blockchain et dans quel cas de figure ?

Qu’est ce que la notion de preuve de travail dans une blockchain?

Le deuxième défi d’Ethereum est le passage de la preuve d’enjeu à la preuve de travail. La preuve de travail actuellement utilisée pour sécuriser le réseau Bitcoin et le réseau Ethereum a l’avantage :

  • de rendre incroyablement difficile pour un attaquant de créer de fausses transactions. Pour créer un nouveau bloc, l’attaquant doit arriver à résoudre systématiquement le problème mathématique de la preuve du travail (hash) plus rapidement que n’importe quel autre ordinateur dans le réseau. C’est pratiquement impossible à faire. Ce n’est possible que si l’attaquant dispose de plus de la moitié de la puissance de calcul du réseau (attaque dite de la majorité de plus de 51%).
  • La preuve de travail permet aussi de distribuer une rémunération (en bitcoin ou ether) à ceux qui mobilisent leur puissance de calcul pour fournir cette sécurité au réseau.

Dans le réseau Bitcoin, la preuve de travail repose sur une fonction de hachage dite SHA256. Or, cette fonction peut être résolue beaucoup plus efficacement en utilisant un matériel informatique spécialisé, également connu sous le nom de ASICS.

Afin d’atténuer ce problème, Ethereum a choisi de rendre son algorithme de preuve de travail (Ethhash) séquentiellement difficile à mémoriser ; il mobilise donc beaucoup de mémoire et de bande passante. Il est donc difficile pour un ordinateur d’utiliser sa mémoire en parallèle pour découvrir plusieurs hash simultanément. Cela réduit le risque de centralisation.

Pourquoi les développeurs d’Ethereum prévoient-ils de passer à la preuve de possession (ou preuve d’enjeu) ?

La preuve de travail présente aujourd’hui un inconvénient majeur : sa consommation en électricité. Ce modèle n’est pas soutenable à long terme et c’est pourquoi les recherches se sont multipliées pour passer un mécanisme dit de preuve d’enjeu – proof of stake.

La philosophie de la preuve de travail est «la sécurité vient de l’énergie dépensée», alors que celle de la preuve de possession (ou preuve d’enjeu) est «la sécurité vient des pertes économiques engendrées par une attaque».

La preuve de possession (ou preuve d’enjeu – proof of stake) repose sur le principe suivant. Le créateur du nouveau bloc est choisi en fonction du nombre d’unité de cryptomonnaies en sa possession, c’est-à-dire de sa richesse. Pour avoir le droit de forger un bloc, il met en dépôt ses crypto-monnaies ce qui lui offre le droit de valider des blocs et de recevoir une récompense. Il n’a aucun intérêt à tricher, puisqu’il perdrait son dépôt.

Un ordinateur avec un dépôt deux fois plus important a deux fois plus de chance d’être sélectionné pour valider des blocs dans un intervalle de temps donné. Le risque de centralisation est pourtant moins élevé que pour la preuve de travail car les fermes de minages n’auront pas un avantage disproportionné en terme de matériel.

Casper FFG, développé par Vitalik, est conçu pour faciliter la transition d’Ethereum vers la preuve de possession. C’est un mécanisme de consensus hybride avec un protocole de preuve de possession, superposé à la preuve de travail. Il devrait être introduit en 2018.

Pourquoi faut-il augmenter la capacité du capacité du réseau à monter en charge ?

Le troisième défi à résoudre est la capacité du protocole à traiter de grande quantités de transactions (scalability). Aujourd’hui, le réseau Ethereum peut traiter 15 transactions par seconde pour les transferts d’Ether et 7 transactions par seconde pour les contrats intelligents. Le réseau traite près de 500 000 transactions par jour. Il doit être capable de supporter les moments de forte demande comme lors de certaines initial coin offering.

Comme chaque nœud traite toutes les transactions, la capacité du réseau est aujourd’hui limitée à la capacité d’un (seul) nœud.

Le modification du protocole de consensus vers la preuve de possession devrait permettre une montée au charge. Les développeurs travaillent aussi sur un mécanisme pour limiter le nombre de nœuds nécessaires pour valider chaque transaction. L’enjeu est de trouver un moyen statistique et économe pour les nœuds de s’assurer que les autres blocs, qu’ils n’ont pas personnellement validés, sont sécurisés.

Quels sont les projets en cours pour augmenter la capacité du réseau à monter en charge?

Plusieurs projets sont en cours étudiant différentes pistes :

  • Les canaux (state channels) regroupent des sous-groupes d’ordinateurs de la blockchain qui communiquent entre eux. Ils ne soumettent qu’une petite partie des transactions à la blockchain principale pour ne pas la surcharger ;
  • Les chaînes collatérales (sidechains) créent les blocs plus vite, mais avec moins de sécurité. Elles pourraient être utilisés pour traiter des transactions d’un montant inférieur à un certain seuil. Les participants soumettraient leurs jetons de cryptomonnaie à la chaine collatérale, qui bloquerait l’argent jusqu’à ce qu’ils soient déverrouillés à nouveau. La blockchain principale serait utilisée pour traiter le règlement final d’une série de transaction.
  • Le sharding (fragments) consiste à réunir les transactions en groupes (appelés fragments). Ces fragments sont attribués aléatoirement à des sous-groupe d’ordinateurs, qui sont chargé de les vérifier. Ce fonctionnement permet au réseau de traiter des groupes de transactions en parallèle. Comme les transactions ont été traitées sur différents ordinateurs et que chaque nœud ne fait pas confiance aux autres, les ordinateurs doivent s’entendre sur un état commun. Il ne suffit donc pas pour un ordinateur qui traite des transactions sur le fragment de dire aux autres ordinateurs qu’une transaction s’est produite; il aura besoin de leur prouver.
  • Plasma est un projet où des chaînes de blocs enfants s’exécutent au-dessus d’une chaîne de blocs principale. Ces chaînes de blocs enfants sont capables de faire un nombre incroyablement élevé de calculs. Les engagements qu’ils prennent sont transmis régulièrement à la chaîne de blocs principale. Le système est construit de telle façon qu’en cas d’attaque, les participants peuvent rapidement et à peu de frais sortir en masse de la chaîne enfant.

Pour chacun de ces pistes, il faudra trouver un moyen de garantir la disponibilité des données. Si les données pour un bloc sont indisponibles, aucun autre validateur dans le réseau ne pourra plus valider des transactions ou produire de nouveaux blocs (un nœud peut être déconnecté, par exemple à cause d’une attaque malveillante….)

Et voilà, vous savez maintenant tout sur le projet Ethereum et ses challenges. Bravo de vous être accroché jusqu’à la fin de ce long article!! . J’espère que vous avez trouvé ce projet aussi fascinant que moi. Si vous souhaitez approfondir d’autres notions, dites le moi dans les commentaires…

Mes sources pour cet article:

Article de Preethi Kasireddy sur la montée en charge

 

 

Laisser un commentaire

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