Pierre Noizat, CEO de Paymium, a publié ce 19 septembre 2016 un article intitulé « Questions sur Ethereum », dans laquelle il expose un certain nombre d’interrogations. Si certaines semblent légitimes, elles révèlent surtout une méconnaissance du fonctionnement d’Ethereum. Il s’agit d’une excellente occasion de revenir sur ces points techniques mais essentiels à la compréhension d’Ethereum et de son avenir.
L’article original est ici. Pour faciliter la lecture des réponses, le contenu intégral est repris dans l’article et les réponses sont insérées directement dans le corps du texte.
Question 1 : Minage
Le protocole Ethereum prévoit de basculer (à une date pas très clairement déterminée) du minage Proof of Work actuel (Frontier) à un minage Proof of Stake (Casper: algorithme non finalisé à date le 6 septembre 2016).
Il est exact que la roadmap du développement d’Ethereum prévoit depuis le départ un passage en Proof of Stake, qui sera déployé lorsqu’il sera finalisé. Comme indiqué, l’algorithme complet est toujours en développement. Les derniers développements techniques ont été présentées le 19 septembre 2016 par Vitalik Buterin dans son Mauve Paper et une présentation orale à la DEVCON2 dont la vidéo sera disponible bientôt.
Or le principe d’un algorithme “Proof of Stake” (PoS en abrégé, “preuve d’enjeu” en français) fait l’objet de questions qui n’ont pas encore obtenu de réponses satisfaisantes.
Selon le principe de PoS, si les possesseurs de coins peuvent valider les blocks au prorata de la quantité de coins qu’ils possèdent, comment assurer qu’ils le font effectivement ?
En pratique, les motivations pour investir dans un coin ne coïncident pas exactement avec les motivations pour participer à la validation des blocs, une activité qui requiert un minimum de ressources et de compétences informatiques.
Comme dans une élection où les électeurs peuvent s’abstenir, la plupart des possesseurs de coins risquent de ne pas valider les transactions. Une petite minorité des possesseurs de coins participent à la validation des blocs tandis que la plupart des autres sont des investisseurs passifs.
Il y a donc un risque de prise de contrôle du réseau avec une faible quantité de coins, donc pour un coût très modeste comparé au coût d’une attaque similaire sur un réseau proof of work.
Dans le contexte d’une concurrence croissante entre les réseaux, comment les réseaux PoS, à commencer par Ethereum, pourront-t-ils résister à ce type d’attaque de la minorité ?
Il est ici postulé qu’il n’existera qu’une minorité de « stakers » en Proof of Stake. Or, selon l’analogie courante, le Proof of Stake est une forme de minage virtuel. Les personnes qui mettront en stake, en dépôt, leurs ethers seront rémunérés pour le faire, avec un intérêt (dont le taux n’est pas fixé aujourd’hui).
Il y aura donc un véritable encouragement à placer ses ether en stake lorsque l’on est un investisseur passif. Ainsi, au lieu d’acheter du matériel de minage pour 500 euros, il sera possible d’acheter 500 euros d’ether et de les placer en stake pour obtenir un rendement et générer de nouveaux ethers en échange d’une validation des blocs de la blockchain d’Ethereum.
Dans ce contexte, et au vu de la très grande popularité du minage d’Ethereum aujourd’hui, il semble hautement improbable que les investisseurs passifs en ether ne proposent pas leur placement en stake.
Bien au contraire, cette méthode de validation des blocs permet à des investisseurs de devenirs acteurs à moindre coût, ce qui n’est certainement pas le cas d’un minage en Proof of Work qui nécessite des investissements lourds, une expertise logicielle et matérielle approfondie et cause des coûts de maintenance non négligeable.
Selon toute probabilité, il y aura donc au contraire beaucoup plus de stakers qu’il n’y a de mineurs aujourd’hui sur la blockchain d’Ethereum et il sera beaucoup plus simple de se protéger contre une attaque de minorité que sur une blockchain en Proof of Work essentiellement minée par des pools qui peuvent s’accorder pour réaliser une attaque à 51 % à moindre frais. Il faut ajouter que le cela réduira fortement le coût à l’entrée, les derniers chiffres disponibles indiquent qu’il sera possible de staker avec seulement 38 ethers (400 euros d’investissement au cours du jour).
Il faut aussi ajouter que la sélection des stakers est réalisée de façon aléatoire. Le nombre de stakers sélectionné par epoch n’a pas encore été fixé dans le marbre, mais même un conglomérat de personne disposant de plus de 51 % du total des ethers en stake ne pourrait pas réaliser facilement une attaque de majorité. Avec le sharding, les choses deviennent encore plus complexes puisqu’il faut pouvoir être certain de valider la transaction que l’on souhaite altérer…
L’affirmation selon laquelle le coût d’une prise de contrôle serait modeste est également erronée. A supposer que 20% des ether seraient mis en stake (ce qui reste relativement faible, les blockchains en PoS aujoud’hui sont plutôt dans les 30-40% comme on peut le voir sur ShadowCash par exemple), il faut être capable d’acheter / posséder 20% des ethers pour attaquer le réseau. C’est à la fois extrêmement cher (le cours du token augmentant au fur et à mesure de l’achat) et quasi impossible à réaliser (une attaque de ce genre se verrait sur les échanges et oblige à passer en OTC, et dans tous les cas, cela se ressentait sur le prix, et donnerait alors des raisons supplémentaires de staker).
Le coût “modeste” est une accusation qui peut marcher si les coins sont volés (cf. l’attaque sur The DAO). C’est l’une des raisons pour lesquelles le hard fork a été proposé à l’époque.
2) Money Supply:
Il y a actuellement près de 84 M d’Ethers (ETH) en circulation (sans compter les ETC..) et le protocole prévoit d’en émettre 15M de plus chaque année, ce qui définit une quantité illimitée (infinie) d’Ethers.
Quelles hypothèses faut-il faire pour se convaincre que la valeur des ETH va se maintenir dans le temps ?
D’abord, il faut préciser que la valeur des ethers n’a pas la même importance pour l’avenir de la blockchain Ethereum que la valeur du bitcoin pour la sienne. Les applications décentralisées du protocole Ethereum (dApps) fonctionnent au gaz, dont la valeur peut être ajustée en fonction de celle de l’ether. La valeur intrinsèque d’un ether n’a donc pas d’impact réel sur la valeur ou le coût des dApps, qui constituent le vrai intérêt de l’écosystème Ethereum par rapport aux autres blockchains. Inutile donc de se focaliser sur la valeur à long terme des ethers, qui est secondaire.
Ceci étant dit, en ce qui concerne l’augmentation du nombre d’ethers, le postulat de départ est faux : il n’y aura pas génération de 15 millions d’ethers chaque année. Ce taux d’émission correspond à celui qui est en cours aujourd’hui, avec le minage en Proof of Work. Avec la validation des blocs en Proof-of-Stake, qui définit un taux de rendement par inflation, le taux d’accroissement du nombre d’ethers devrait se situer entre 0,1 et 2 % par an, soit au maximum 2 millions de nouveaux ethers la première année en se fondant sur une base arbitraire de 100 millions d’ethers au moment du passage en Proof of Stake.
En plus de cela, en PoS, la génération de nouveaux ethers ira directement dans les poches des validateurs, qui sont par nature des personnes qui vont plutôt conserver leurs ethers. C’est comme un compte épargne, la plupart du temps on laisse la somme grossir sur le compte et on ne la débite pas. Au final, si le taux de PoS n’est pas gros, l’ajout à la masse monétaire se fait peu ressentir sur les marchés, et est parfois juste suffisant pour compenser les coins perdus (un nombre important de coin est perdu chaque année avec de mauvais mdp, des oublis, etc…).
Reste que la génération d’ethers est effectivement illimitée. Un stock fini d’ethers n’est pas pour autant une condition sine qua non pour que la valeur des ethers ou tout autre cryptomonnaie se maintienne.
Le stock limité à terme de bitcoin est trop souvent présenté comme la garantie ultime que le cours du bitcoin face aux monnaies-fiat ne peut que s’apprécier. C’est faire ici un raccourci trompeur alors que la rencontre entre l’offre et la demande est toujours le mécanisme de détermination du prix. Le stock limité n’a d’influence que sur l’offre maximale disponible et le cours du bitcoin sera toujours dépendant de la demande pour cette cryptomonnaie. De même, ce n’est pas la finitude du stock de pétrole qui en garantit le cours.
Pour augmenter la demande il faudra encore supplanter des usages actuels dans le paiement et les applications de blockchain tout en diffusant le bitcoin auprès du plus grand nombre. A cela il est bon de rappeler qu’historiquement les compétitions entre les formats ne sont pas toujours gagnées par les plus robustes. Pour l’anecdote, le format de cassette audio portable était initialement dominé par la cartouche 8 pistes (apparu en 1964) puis abandonnée au milieu des années 70 au profit de la cassette audio (K7, apparu en 1968). L’un des principaux griefs de la cartouche 8 pistes était l’absence de bouton de rembobinage…
Ethereum se veut une blockchain pour des applications et entend faire valoir son unité de compte par la multiplication des usages que les ethers permettent et permettront. Ainsi devrait croître la demande future pour les ethers (même si elle dépendra aussi du cours du gaz comme on l’a vu plus haut). Du côté de l’offre, le stock infini d’ethers n’en est pas moins pourvu d’une croissance prédéfinie qui permet aux acteurs d’ancrer leurs anticipations. Notez au passage qu’Ethereum et Bitcoin peuvent cohabiter en bonne intelligence et qu’il existe aujourd’hui déjà des moyens de communiquer d’une chaîne à l’autre par BTC-relay.
3) Langage de script “Turing-complete”
Le langage de script Ethereum est présenté comme “Turing-complete”, c’est à dire qu’il permet d’écrire des programmes avec des boucles, une possibilité qui a été soigneusement écartée par le langage de script Bitcoin pour des raisons de sécurité. En effet, si des boucles sont possibles, le réseau peut faire l’objet d’une attaque dite “en déni de service” (Denial of Service ou DoS en anglais), avec des scripts qui demanderaient aux noeuds du réseau d’exécuter des boucles sans fin, monopolisant les capacités de calcul du réseau.
Pour prévenir ce risque, le mécanisme prévu par le protocole Ethereum comporte des commissions de transactions proportionnelles au nombre de cycles de calcul exigés par le script de la transaction.
Cependant, la commission est perçue seulement par le premier valideur qui inclut la transaction dans un bloc mais ceux qui construisent les blocs suivants doivent la valider aussi. Ils ont donc une incitation à ne pas vérifier un script complexe. Comment ce risque pourrait t-il être évité ?
Avant de commencer à répondre, il semble nécessaire de clarifier la question. On voit mal en effet le problème que poserait l’absence de vérification des scripts déjà validés par d’autres valideurs si l’ensemble des acteurs de la blockchain sont honnêtes. Le problème soulevé est à priori le suivant : si la vérification de blocs est consommatrice de ressources (c’est le cas), comment s’assurer que les mineurs ne valident pas uniquement le dernier bloc sans vérifier avant les anciens, courant ainsi le risque de continuer une chaîne dont un bloc aurait été falsifié par un mineur malhonnête.
La réponse la plus simple est qu’ils valideront l’ensemble des transactions naturellement, parce qu’ils courent de trop gros risque en ne procédant pas ainsi.
En effet, si les mineurs des nouveaux blocs décidaient de ne plus vérifier les transactions des anciens blocs pour économiser de la puissance de calcul, nous avons vu qu’ils courent le risque de valider une chaîne non-honnête comprenant des transactions invalides. Or, la validation d’une telle chaîne ne passerait pas inaperçue et elle aurait un impact très négatif sur la perception d’Ethereum, voire causerait la fin du projet à long terme.
Les mineurs, qui sont rémunérés en ether, ont tout intérêt à ce que la blockchain fonctionne de la meilleure façon possible sous peine de perdre leur source de revenu. Pour cela, il leur faut vérifier l’ensemble des transactions de la blockchain avant de miner un nouveau bloc. Dans le cas contraire, ils se tirent une balle dans le pied.
Au-delà de l’aspect purement incitatif, on peut aussi s’interroger sur la faisabilité technique d’une telle vérification sélective. La mise en place d’un tel système nécessiterait probablement de gros efforts de développement.
A cela, ajoutons que ce problème potentiel ne se pose techniquement qu’en Proof of Work. En Proof of Stake, les blocs seront vérifiés simultanément par de nombreux nodes et il est sera quasiment impossible de faire valider un bloc comprenant une transaction invalide par les valideurs. Ceci d’autant plus après la mise en place du sharding, selon lequel les transactions seront attribuées à des groupes de valideurs aléatoires qu’il sera virtuellement impossible d’anticiper.
Enfin, même à supposer qu’une telle chose soit possible, il faut garder à l’esprit que la validation d’une “mauvaise” chaîne par une fraction des mineurs, même majoritaire, n’entraînerait dans le pire des cas qu’un hard fork de la chaîne principale. Nous avons vu qu’Ethereum pouvait fort bien survivre à un tel événement…
Par ailleurs, le langage de script Ethereum peut conduire à des transactions très complexes : la fameuse DAO comportait près de 700 lignes de code (sans compter les lignes de commentaires).
Comment peut-on envoyer des millions de dollars sur un tel script quand on sait qu’il faut s’attendre à 10 bugs pour 1000 lignes de code ? Dans le cas de la DAO, un bug a été exploité par un hacker..
Cette question, bien qu’intéressante, n’est pas liée au projet Ethereum en tant que tel. Il s’agit d’une question relative à feu le projet The DAO. Quelques éléments de réponse cependant.
Personne ne conteste sérieusement que c’était une erreur d’envoyer autant d’ether dans un contrat à un stade aussi précoce du développement d’Ethereum. Malgré les avertissements multiples de la communauté, et du site de The DAO, l’ampleur des montants envoyés au contrat a été inattendue mais surtout incontrôlable, dans la mesure où aucun plafond de montant collecté n’avait été défini dans le contrat. Et une forme d’enthousiasme communicatif a sans doute conduit de nombreuses personnes à se lancer sans méfiance dans cette aventure.
Aujourd’hui plus qu’hier, il évident pour tous que le framework de développement des contrats Ethereum n’est pas finalisé. Les modèles sont quasiment inexistants, les logiciels en cours de développement et les bonnes pratiques en cours de conception.
Mais il faut souligner que la réponse de la communauté au traumatisme The DAO a été à la hauteur du désastre. La moitié de la conférence DEVCON2 qui s’est déroulée du 19 au 21 septembre dernier a été consacrée à la sécurité des smart contracts, l’amélioration de la machine virtuelle Ethereum, la présentation de logiciels de développement permettant de repérer des bugs de façon automatique, des conseils sur la façon de garder le contrôle sur un contrat, etc. Il a même été expressément recommandé par la Fondation de fixer une limite d’investissement aux crowdsales.
Certes, le développement de contrats sur Ethereum est probablement une affaire plus compliquée que ce que certains laissaient entendre, mais le problème a été pris à bras le corps par les centaines de développeurs Ethereum. Il en ressortira des contrats plus clairs, plus sécurisés et plus efficaces.
Libre ensuite à chacun de considérer que c’est le principe même des smart contracts qui est à revoir. Tel n’est pas notre avis.
4) Décentralisation:
Sur 84 Millions d’Ethers actuellement en circulation, 60 Millions ont été pré-minés par [la Fondation Ethereum] et vendus (pour environ 20 M USD) au profit de ladite fondation.
Les dirigeants de cette fondation possèdent encore la majorité relative des Ethers disponibles.
Cette affirmation est fausse. Il existe 84 millions d’ether en circulation. La Fondation Ethereum détient environ 1,2 millions d’ether sur ce contrat. Le patrimoine des membres de la Fondation est naturellement inconnu, sauf celui de Vitalik Buterin qui a confirmé à de nombreuses reprises détenir à ce jour 500 000 ether à titre personnel. Même à supposer que l’ensemble des membres de la Fondation détiendrait la moitié de cette somme (250 000 ether), le patrimoine total de la Fondation et de ses membres ne dépasserait pas 1,2 millions + 500 000 + 250 000 * 20 = 6 700 000 ether. Moins de 10 % des ethers totaux. Très loin de la majorité, donc (même « relative »).
Dans l’algorithme de minage Proof-of-Stake prévu par Ethereum, le réseau est contrôlé par les possesseurs des coins.
Il s’agit d’une vision simplifiée : c’est seulement la validation des transactions qui est contrôlé par les possesseurs d’ether. Le réseau est « contrôlé » par l’ensemble des acteurs, tout comme le réseau Bitcoin : mineurs/stakers, développeurs, exchanges… Et l’affaire ETH/ETC a bien démontré que même une écrasante majorité voulant modifier la chaîne n’était pas égale à un consensus total.
Or [la fondation Ethereum] peut être rachetée ou ses principaux membres recrutés par une société comme Microsoft ou IBM qui prendrait donc de facto le contrôle de la blockchain Ethereum.
La Fondation Ethereum ne peut pas être rachetée. Comme son nom l’indique, il s’agit d’une Fondation, créée en suisse, au régime juridique comparable à celui d’un Trust. Elle n’est pas une société et n’a pas de parts ou d’actions qui pourraient être rachetées. Elle ne peut pas ailleurs agir que dans son but déterminé, c’est à dire développer l’écosystème Ethereum.
Au-delà de ce point, le recrutement de l’ensemble des développeurs de la Fondation par une société comme Microsoft ou IBM, pour improbable qu’elle soit, n’entrainerait pas de facto la prise de contrôle de la blockchain Ethereum. D’une part car, on l’a vu, les stakers ne contrôlent pas la chaîne. D’autre part car le recrutement d’un développeur, sauf erreur, n’implique pas la prise de contrôle de son patrimoine privé.
Dès lors, comment une application (identité, certification, traçabilité, etc) développée sur Ethereum pourrait perdurer sous le contrôle d’une société qui propose déjà sa propre application propriétaire ?
Même à supposer que le postulat de départ selon lequel Microsoft ou IBM pourraient « prendre le contrôle » d’Ethereum soit pertinent (et il a été démontré qu’il ne l’était pas dans la mesure où un attaquant en PoS se trouverait rapidement isolée sur une chaîne inutilisée et donc morte), il y a des dizaines de raisons qui peuvent pousser une entreprise qui développe des logiciels propriétaires à développer d’autres solutions, dont des solutions libres. La plus évidente est d’adresser l’ensemble des demandes de la clientèle. Microsoft et IBM développent d’ailleurs de nombreuses solutions libres…
Or nous ne vous apprendrons pas qu’une solution centralisée de Microsoft ou IBM ne permet pas les mêmes cas d’usage pour des clients qu’une solution basée sur une blockchain publique, Ethereum ou autre.
On comprend mal d’ailleurs l’intérêt qu’aurait Microsoft ou IBM à recruter des développeurs à prix d’or pour s’empresser de détruire leur travail en modifiant unilatéralement la chaîne qu’ils ont créé contre l’avis de la communauté qui a fait la force de l’écosystème.
Ceci d’autant plus que Microsoft est déjà très impliqué dans le développement de la blockchain Ethereum, comme il l’a réaffirmé lors du troisième jour de la DEVCON2.
Ces questions légitimes n’émanent pas d’un “hater” mais, quoique fondamentales pour un projet de cette nature, sont commodément ignorées par les conférenciers, banquiers et journalistes qui font parfois une promotion zèlée d’Ethereum. Pour ma part, je continue à suivre le projet Rootstock qui, plus sagement, expérimente les mêmes concepts qu’Ethereum sur une sidechain du réseau Bitcoin.
Ces questions ont peut-être été ignorées par certains membres de la communauté qui n’avaient sans doute pas pris le temps d’y répondre, ou n’avaient pas les compétences techniques pour le faire. C’est chose faite.
Quant à RootStock, il ne s’agit ni plus ni moins que d’un projet (dont aucun prototype n’a encore été présenté) visant à transposer la machine virtuelle Ethereum sur la blockchain Bitcoin. Cet intérêt pour le projet s’explique difficilement au vu du scepticisme affiché plus haut quant à l’intérêt de ladite machine virtuelle…
En guise de conclusion, un appel : alors qu’une implication trop forte dans l’écosystème Bitcoin semble pouvoir faire obstacle à une opinion pleinement éclairée sur Ethereum (et sans doute inversement), il nous semble que ceux qui déploient leurs efforts à attaquer ses supposées faiblesses se trompent de cible.
Les blockchains Ethereum et Bitcoin n’ont pas la même finalité et elles ont vocation à perdurer ensemble. Et l’adoption de l’une entrainera mécaniquement celle de l’autre. Ceux qui souhaitent l’épanouissement de l’écosystème blockchain en France et dans le monde ont intérêt à travailler ensemble. Ethereum ou Bitcoin, ce sont deux facettes d’une même technologie et d’un même rêve de rendre le monde un peu plus juste et transparent. Évitons de gâcher nos efforts en vaines querelles de clocher.
Communiqué de l’Asseth rédigé par Simon Polrot, Jerôme de Tychey, Thibaut Schaeffer, Quentin de Beauchesne, Alexandre Kurth et Stéphane Roche avec la participation de Xavier Lavayssiere des Bricodeurs