Les défauts et les limites d’Ethereum

Les défauts et les limites d’Ethereum

 

Ethereum : défauts et limites

Je vous invite aujourd’hui dans une analyse du système Ethereum, et en particulier des points noirs concernant ce dernier. Mais avant de nous lancer, je préfère préciser une chose : cet article n’a pas à vocation à attiser une quelconque haine envers Ethereum, et j’utilise personnellement beaucoup Ethereum. Même si j’espère couvrir un grand nombres de problématiques d’Ethereum, je ne peut pas dresser une liste exhaustive des soucis que l’on peut lui reprocher. J’espère simplement pouvoir faire découvrir à certains des problèmes parfois méconnus de la deuxième plus grosse capitalisation du marché des cryptomonnaies.

 

Vouloir trop en faire

Ethereum est une sorte d’ordinateur mondial décentralisé. C’est en effet la vision de son créateur, qui ne souhaitait imposer aucune limitation à ce qu’il était possible de déployer sur le réseau. Solidity, le langage de programmation utilisé pour développer les smart-contracts Ethereum est « Turing-complet », ce qui implique qu’il peut exécuter des fonctions récursives et d’autres calculs mathématiques avancés. Solidity est également un langage assez simple à apprendre, comprendre et utiliser. Ses similitudes avec le C++ ou le JavaScript le rend utilisable rapidement pour des développeurs utilisant ces langages. Il est facilement utilisable, et ne possède que peu de restrictions. Nous parlerons de ces problématiques plus tard dans l’article.

 

Les smart-contracts

Le problème est que cela engendre des problématiques lors du développement de smart-contracts. Rappelons que les smart-contracts sont immuables, et que, une fois déployés, personne ne peut en modifier le fonctionnement. Les développeurs ne peuvent donc pas corriger les bugs ou les erreurs d’un contrat existant, ce qui peut faire le bonheur des pirates informatiques. Les smart-contracts doivent donc être soigneusement étudiés et audités avant leur déploiement. Qui voudrait que le contrat de son ICO puisse être piraté ? Cela peut mettre fin à des projets, comme celui de MakerDAO et son stablecoin Dai. La plateforme a récemment récompensé un chercheur en sécurité 50 000 $ pour avoir remonté un bug qui aurait pu permettre le vol de plus de 7 millions de dollars d’actifs.

 

La machine virtuelle d’Ethereum

Dans le monde de l’informatique, il existe plusieurs manière de mettre en place un système. Chaque choix technique doit être pris en fonction de beaucoup de paramètres. L’histoire des systèmes informatique nous apprend que cela fonctionne mieux lorsque qu’ils sont composés de modules spécialisés. Une fois toutes les fonctions délivrées par ces petits systèmes spécifiques, simples et performants, nous pouvons les assembler. La machine virtuelle d’Ethereum, aussi appelée EVM pour Ethereum Virtual Machine, réalise la plupart des fonctionnalités d’Ethereum, de manière très opaque et ne semble pas être suffisamment efficace dans les calculs.

Certains pensent que le principal problème d’Ethereum est cet aspect « ordinateur mondial ». La principale proposition de valeur des blockchains est la vérification, pas la puissance de calcul. La duplication des interactions entre différents smart-contracts n’a pas à être dupliquée sur différents ordinateurs. Seule la validation des transactions doit passer par le protocole, et c’est ce qui est utilisé par différents projets de surcouche.

 

La rareté des éthers

L’un des principaux indicateurs lors de l’évaluation d’un projet crypto, ou d’un protocole comme Ethereum est le nombre de tokens en circulation. Il faut étudier combien de tokens existent, comment ils sont mis en circulation et qui les possède. Si certains projets comme Ripple font grincer des dents car la société du même nom en possède la majorité, Ethereum reste flou sur d’autres points. Le point le plus controversé est le nombre d’éthers pouvant exister. Ce sont les mineurs qui sont actuellement récompensés en éthers pour leurs services.

C’est un processus habituel pour les cryptomonnaies utilisant un algorithme de preuve de travail. En revanche si le nombre de bitcoins créés par ce système est fini (21 millions d’unités), ce n’est pas le cas pour Ethereum et les éthers. Cela s’explique notamment par le passage programmé à la preuve d’enjeu (proof-of-stake) du protocole, qui n’a pas encore été mis en place aujourd’hui. Cela démontre l’instabilité de la gestions des éthers, et la question se pose donc : est-ce que l’éther est un token qui est rare ou tout du moins qui se raréfie ?

 

Un choix de consensus peu efficient

Utiliser un système décentralisé, c’est avant tout un choix. La décentralisation a un coût, pas forcément en terme de prix de la solution mais on trouvera souvent une solution centralisée plus performante. Bitcoin n’est pas un système efficace, comme on peut le lire dans son livre blanc. Les quelques lignes qui suivent expliquent que Bitcoin ne se veut pas particulièrement efficace, mais sans organe de contrôle.

 

Faiblesses des réseaux décentralisées

La plupart de la force de Bitcoin provient de ce que l’on pourrait considérer comme des lacunes. Les transactions sont déployées sur le réseau de manière lente et ce sera d’autant plus contraignant de l’attaquer. Le système de diffusion entre chaque nœud est désuet et redondant (chaque noeud va transmettre l’informations à tous ses voisins, même si ils la possèdent déjà), ce qui fait qu’un plus grand nombre de nœuds peuvent être défaillants, et n’ont à avoir la confiance des autres. Mais Bitcoin fonctionne aussi bien, c’est grâce à sa gestion des données générée. On sait quelles sont les données entrante, leurs nombres et cela tout le temps, puisque c’est fixe. L’augmentation de la taille de la blockchain est linéaire et donc beaucoup plus facilement gérable pour les nœuds, ce qui n’est pas le cas pour Ethereum.

 

La gestion des données

La quantité et la taille des données qui doivent être gérées par le réseau Ethereum varient, c’est-à-dire que le réseau peut être saturé par ces données, et est donc vulnérable. Cette saturation ne conduit pas qu’à une file d’attente pour les transactions, avec un ticket prioritaire pour ceux qui paient le plus de frais. C’est également une problématique de sécurité, puisque si ces congestions du réseau peuvent être mis en place de manière malicieuse, et cela peut conduire à l’exploitation de failles.

 

Une expérience utilisateur médiocre

L’expérience est à mes yeux un des freins les plus importants à l’adoption des cryptomonnaies. Malgré les efforts mis en place, il reste très compliqué de s’y retrouver dans l’utilisation des protocoles de l’écosystème. Mais Ethereum est à mes yeux l’un des pires, lui et les systèmes qui gravitent autour. Prenons l’exemple de Bitcoin, et notament le Lightning Network qui reste aujourd’hui un WIP (Work in Progress).

LN permet à chacun de s’envoyer un nombre faible de bitcoins (parlons plutôt de satoshis ici), en réduisant le temps de transfert et les frais associés. De nombreuses applications mobiles existent pour utiliser LN sans connaissances préalables. Elles sont simples d’utilisation et possèdent des interfaces qui n’ont rien à envier à la fintech par exemple. Un clic et vous recevez des bitcoins, un second et vous en envoyez. C’est aussi simple que cela.

 

Gestion des tokens ERC-20

De l’autre coté, l’utilisation du réseau Ethereum et de ses dérivés est beaucoup plus complexe. La gestion des adresses reste pourtant similaire à Bitcoin. Mais utiliser Ethereum n’est pas qu’utiliser des éthers. Ces derniers ne servent théoriquement qu’à financer les transactions effectuées sur le réseau. En effet ce sera plutôt des tokens qui seront échangés lors de l’utilisation d’applications décentralisés.

Mais il faut tout de même prévoir des éthers pour utiliser ces dernières, c’est-à-dire prévoir et stocker plusieurs tokens ce qui rend moins lisible le procédé. Le stockage de ces tokens est également un point noir dans l’expérience utilisateur. Que vous utilisiez un wallet logiciel ou électronique, il vous faudra les envoyer sur une adresse Ethereum. Mais dans la plupart des cas, vous ne verrez pas vos tokens apparaître de manière automatique et il faudra les ajouter manuellement pour en voir le solde.

De plus, la problématique UI/UX dans l’écosystème Ethereum ne s’applique pas seulement au stockage des tokens. La plupart des applications décentralisées n’ont pas d’interfaces adaptées aux utilisateurs, et ces dernières n’aident pas à comprendre leur fonctionnement. Il suffit d’observer l’UI/UX d’un exchange traditionnel et le comparer à un exchange décentralisé.

 

Réellement décentralisé ?

J’explique souvent qu’Ethereum est une bonne plateforme pour découvrir de développement d’applications décentralisées. Réfléchir et mettre en place ce genre d’application n’est pas simple : il faut penser à l’architecture et cela revient souvent à prendre l’option la plus complexe car la facilité vient souvent avec la centralisation. Mais avant de penser à sa propre architecture, il vaut mieux étudier le système sur lequel le projet va être déployé. On peut alors se poser la question de la décentralisation d’Ethereum, un point sur lequel beaucoup reviennent.

Comment définir si Ethereum est ou non décentralisé ? Quels sont les critères pour statuer sur le statut d’un protocole ?

 

Les nœuds d’Ethereum

Ce point ne parle peut être pas à tout le monde, mais pour interagir avec le réseau Ethereum il faut passer par un nœud. Je ne rentrerai pas dans les détails mais mettre en place un nœud Ethereum n’est pas aussi aisé qu’un nœud Bitcoin. Et les conditions deviennent de plus compliquées à satisfaire, ce qui réduit le nombre de nœuds existants. En effet il vous faudra tout d’abord une grande capacité de stockage pour pouvoir stocker la blockchain : au minimum 120 Go de stockage, qui peut monter rapidement en fonction des informations non obligatoires que vous souhaiter conserver. Cela peut monter à plus de 700 Go pour certains nœuds. Mais vous devrez également disposer d’une grande quantité de RAM disponibles, au minimum 8 Go. Et enfin il vous faudra vous armer de patience puisque qu’il faudra attendre plusieurs jours avant de synchroniser votre nœud avec le réseau Ethereum.

 

Un peu de statistiques

Aujourd’hui, il existe 7855 noeuds publics Ethereum contre 9240 nœuds publics Bitcoin pour donner une idée. Mais leur croissance est en baisse, une évolution de -7.4 % pour le mois dernier. Moins de nœuds signifie moins de décentralisation, mais un grand nombre de nœuds ne signifie pas qu’ils sont tous autonomes. Seuls deux clients Ethereum sont largement utilisés sur la quinzaine disponible, et la plupart de ces nœuds sont déployés sur des serveurs distant (cloud). En effet c’est plus de 60% des nœuds Ethereum qui sont hébergés sur des plateformes cloud et plus de 25 % sur le service Amazon.

Les services d’accès au réseau sont donc centralisés sur quelques fournisseurs, en particulier Infura. Lorsque vous voulez mettre sur pied un projet d’applications décentralisées, il vous faut un tel accès pour permettre à vos utilisateurs d’interagir avec vos smart-contracts. Est-ce que finalement une Dapp déployée sur Ethereum n’est pas similaire à une application déployée sur AWS ou Azure ?

 

La problématique des éthers

Pour obtenir un écosystème décentralisé bien portant, il est important que la masse monétaire soit entre les mains d’un maximum d’utilisateurs différents. Il y aura toujours une concentration certaine de la valeur, récompensant souvent une prise de risque ou une implication dans le système. Les suspicions de concentration des éthers dans un nombre restreint de wallets sont nombreuses. Ce sont surtout deux points noirs dans la créations des éthers qui reviennent souvent.

La première concerne les éthers qui ont été pré-minés, c’est-à-dire que l’équipe de développement d’Ethereum avait accès aux éthers et à leur minage et leur création en avant-première. Cela permet à ces derniers d’avoir un certain nombre de tokens de notamment stabiliser l’offre et la demande. Mais cela centralise également la possession des éthers.

 

Déroulement de l’ICO

Le déroulement de la prévente d’éther semble manipulé, ou tout du moins concentré. Rien n’est prouvé mais dès éléments montrent que les éthers pré-vendues ont été achetés par un nombres d’acheteurs restreint. Observons ce graphique qui montre le nombre de bitcoins alimentant l’adresse utilisée par Ethereum lors de la pré-vente.

 

 

On remarque rapidement que l’évolution du nombre de bitcoins possédés par Ethereum, et donc la distribution des éthers n’est pas très organique. Il y’a eu deux grand achats, réalisé dans un nombre de blocs restreints. Nous pouvons en déduire que les acheteurs d’éthers durant la prévente ne sont pas si nombreux, et que certains en concentrent un grand nombre. Et ce n’est pas un nombre anecdotique d’éthers puisque 60 millions d’ETH ont été mis en vente lors de l’ICO, et 12 millions ont été conservés par l’équipe. Aujourd’hui il y a 108 millions d’éthers en circulation, soit 66% d’entres eux ont été pré-minés.

Observons le graphique typique d’une vente de tokens, lors d’une ICO par exemple.

 

 

On observe que l’augmentation est beaucoup plus organique que lors de la prévente ci-dessus. Toutefois ce n’est pas l’étude de du graphe qui permet de définir qui a possédé un jour ces éthers. Malgré le côté spéculation de la théorie, cela apporte un élément qui remet en question la décentralisation d’Ethereum.

 

Les limites de Solidity

Nous avons déjà étudié Solidity, mais je pense que le langage utilisé pour le développement de smart-contract mérite qu’on s’y attarde un peu plus. Simplicité et possibilité riment souvent avec failles en informatique, et Solidity a montré par plusieurs fois les siennes. Il s’agit souvent de sécurité des smart-contracts, primordiale puisqu’Ethereum veut permettre le déploiement de nombreux services financiers sur leur réseau.

Solidity autorise le déploiement de code non valide, en fait il n’y a pas de test en amont sur les programmes déployés. S’ils ne contiennent pas d’erreurs de compilation, que vos contrats sont lisibles par l’EVM, il peuvent être déployés sur le réseau.

 

Les compilateurs

Les différents compilateurs Solidity qui existent, améliorés au fur et à mesure du développement d’Ethereum peuvent subir des modifications conséquentes. Ces compilateurs permettent de produire un code compréhensible par la machine virtuelle d’Ethereum, à partir de smart-contracts Solidity. Lors des nombreux changements des compilateurs on retrouve parfois de grandes différences dans le langage machine. Si vous utilisez deux compilateurs différent pour un même smart-contract, le code obtenu à la sortie peut changer beaucoup. C’est assez problématique lors de l’étude de ce dernier pour rechercher des failles. Retrouver le code Solidity une fois la compilation réalisée n’est pas une tâche aisé, mais il faut, dans le cadre d’Ethereum, également connaître la version du compilateur utilisé, ce qui au bout du compte ralentit la correction de failles de sécurité.

 

Les solutions apportés par Ethereum 2.0

Beaucoup attendent avec impatience Ethereum 2.0 et ses nombreuses solutions. Au programme, on retrouve le passage à la preuve d’enjeu (Casper), le sharding et d’autres améliorations. Tout ce programme devrait être déployé entre cette fin d’année et 2022, même si Ethereum nous a déjà habitué à ses retards de livraison. Voyons en détail ce que pourrait apporter Ethereum 2.0.

 

La chaîne « phare »

Il s’agit d’une nouvelle blockchain, utilisant le protocole proof-of-stake. C’est un fonctionnement différent du proof-of-work, qui repose sur des dépôts d’Ethereum. Les utilisateurs pourront mettre en gage 32 éthers afin participer à la validation des transaction. Elle permettra de réaliser la transition d’Ethereum vers la POS. Cela apportera une valeur aux éthers, augmentant leur utilité mais également leur rareté sur le marché.

 

Le sharding

Le sharding permettra de distribuer les calculs à des sous-réseaux de nœuds, ce qui est une grande amélioration du système existant. Comme nous l’avons étudié, chaque nœud doit réaliser les calculs et annoncer le résultat aux autres. Mais nous l’avons vu : le fonctionnement d’Ethereum n’avait pas que ce problème lié à la scalibilité. Plus de calculs apporteront de grandes quantités de données à gérer et à stocker.

 

EWASM

Une nouvelle machine virtuelle pour exécuter les smart-contracts. Cette dernière sobrement nommée EWASM (Ethereum Web Assembly) remplacera l’actuelle. Le Web Assembly est un standard d’architecture et de programmation de machines virtuelles très optimisé. L’écosystème Ethereum profiterait des différents avantages de développement de smart-contracts sur cette nouvelle machine virtuelle. Ces derniers s’exécuteront plus rapidement, mais pourront également être développés dans différents langages, autre que Solidity. Ce sont des langages plus stables et stricts, tels que C/C++, Rust ou encore Go. En plus des ressources déjà existantes à propos de Web Assembly, la communauté Ethereum pourra compter sur de meilleurs outils de développement.

 

Mais toutes ces améliorations n’arriveront que dans quelques années, et ne régleront pas toutes les problématiques actuelles. Il ne s’agit pas qu’une question de vitesse d’exécution ni de dépense d’énergie dans le minage. Un système de récompense sur la mise en gage d’éthers garantit un maintient de la concentration de ces derniers.

 

Conclusion

Finalement, Ethereum n’est-il pas le reflet de la multitude de startups se lançant sur le marché, suivant l’adage « fake it until you make it » ? Le projet crypto ayant vendu ses tokens sans avoir même produit un MVP, des milliers de bitcoins en échange d’un whitepaper, un fonctionnement qui s’est répété pour le meilleur et pour le pire. De nombreux autres projets proposent des alternatives à Ethereum à différentes échelles. Libra pourrait devenir par exemple un sérieux concurrent à Ethereum, ou plutôt Ethereum 2.0. Nous pouvons également citer Tezos qui attire également les acteurs de la DeFi. Ethereum et Solidity restent néanmoins aux yeux de beaucoup le meilleur moyen de développer facilement des smart-contracts.


Guillaume

Guillaume est un jeune développeur Blockchain, principalement sur Solidity. Il aime partager ses connaissances sur le sujet et il participe activement au rayonnement des aspects techniques de la blockchain au sein de la communauté crypto.

facebook-cryptoast twitter-soothsayerdataProfil linkedinEnvoyer un mail

 

L’article Les défauts et les limites d’Ethereum est apparu en premier sur Cryptoast.

via Cryptoast https://cryptoast.fr
link : https://cryptoast.fr/ethereum-problemes-defauts-limites/
October 12, 2019 at 10:56AM

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •