Compartilhe este artigo

Un bug Ethereum renvoie les contrats intelligents à la planche à dessin

Un petit bug de Solidity a suscité un grand débat parmi les développeurs Ethereum .

Les bugs font partie intégrante des logiciels, mais sur Ethereum, ils peuvent être particulièrement dangereux.

C'est peut-être ce que l'on peut retenir d'un bug du langage de programmation Ethereum découvert cette semaine qui affecte un style spécifique de contrat intelligent et, en raison du fonctionnement Ethereum (il promet que les applications fonctionneront exactement comme programmé), la plupart des contrats affectés ne peuvent T être supprimés ou modifiés.

A História Continua abaixo
Não perca outra história.Inscreva-se na Newsletter Crypto Long & Short hoje. Ver Todas as Newsletters

En bref, les propriétaires de contrats intelligents décentralisés (ceux qui T peuvent pas être mis à niveau par un ONE propriétaire) T peuvent rien faire pour corriger le bogue.

Deux jours après lerapport de bogue Suite à un problème, les développeurs ont déployé un correctif dans la version 0.4.4 de Solidity. Cependant, le bug affecte certaines adresses et certains types de données de ces contrats, de sorte qu'ils ne peuvent toujours T être modifiés avec la mise à niveau.

La bonne nouvelle est que le bug n’a peut-être pas affecté de nombreux contrats intelligents.

Le créateur de Solidity, Christian Reitwiessner, a déclaré à CoinDesk qu'il avait effectué une analyse « semi-automatisée » de chaque programme Ethereum répertorié par un explorateur de blocs populaire et avait découvert que sur 12 000 contrats, seuls quatre étaient exploitables.

Reitwiessner a déclaré qu'aucun de ces contrats ne contenait d'ether, car ils étaient probablement utilisés à des fins de test. Il convient toutefois de noter que tous les contrats ne sont pas affichés sur Etherscan, l'explorateur de blocs sélectionné. (Il y a plus de 200 000 contrats au total, il est donc difficile d'évaluer la sécurité des fonds restants.)

Globalement, cela semble être un défaut mineur comparé à The DAO, l'exemple le plus notable d'un contrat intelligent ne fonctionnant pas comme prévu. Cependant, cela a suscité des discussions sur ce qui pourrait arriver dans le cas d'autres bugs majeurs, étant donné que tous les contrats intelligents n'ont pas de propriétaire central capable de les mettre à jour en cas de problème.

Un observateur sur les réseaux sociaux, par exemple, argumentéqu'il pourrait s'agir d'une « taupinière sur le flanc d'une grande montagne » de problèmes similaires.

ONEune des idées les plus radicales pour résoudre ce problème est de rendre les contrats Ethereum évolutifs à court terme, afin que les propriétaires puissent désactiver ou modifier le code en cas d'incident. Cependant, la crainte est que cela signifie priver Ethereum (ou d'autres plateformes décentralisées) de son caractère unique.

Loi Luu, étudiante en doctorat à l'Université nationale de Singapour, a déclaré qu'il serait préférable pour Ethereum que les utilisateurs apprennent à déployer des contrats intelligents sécurisés à la dure, de manière décentralisée.

Luu a dit :

Personnellement, je ne pense T que ce soit une bonne idée. C'est fondamentalement contraire à la raison d'être des contrats intelligents. Si Ethereum est un réseau bêta, laissons les contrats intelligents échouer et laissons les gens en Guides les leçons.

Mais même si les commentaires de Luu suggèrent que ce n'est peut-être pas une bonne idée de rendre tous les contrats évolutifs, il existe des moyens de se préparer à d'éventuels bugs futurs, en particulier tant Ethereum est encore une nouvelle Technologies.

Résoudre le problème

Les programmes écrits dans les langages Ethereum de haut niveau et faciles à lire, tels que Solidity ou Serpent, sont compilés en code octet avant d'être intégrés à la blockchain. Le problème résidait dans la Technologies de compilation.

Pour résoudre le problème, Reitweissnerrecommandé Les développeurs doivent faire deux choses : ONE compilent un nouveau contrat, ils doivent effectuer la mise à niveau vers la nouvelle version de Solidity pour éviter le bug.

La deuxième façon d’éviter le problème est l’exemple le plus curieux, car il nécessite de mettre à niveau ou de supprimer le financement des contrats intelligents déjà déployés – quelque chose que vous ne pensez peut-être pas possible avec Ethereum.

Reitwiessner a développé ce conseil, expliquant qu'il existe deux types de contrats : ceux contrôlés de manière centralisée et ceux décentralisés, où ONE ne dispose de « privilèges spéciaux ».

Le premier type offre probablement un mécanisme de mise à niveau ou un moyen de retirer des fonds du contrat.

Le deuxième type est plus complexe. En revanche, comme les contrats intelligents Ethereum sans confiance T peuvent être ni supprimés ni modifiés une fois déployés, les développeurs T faire grand-chose s'ils n'ont T utilisé un contrat intelligent centralisé dès le départ.

Cependant, Reitwiessner a déclaré que les développeurs peuvent se prémunir contre les problèmes futurs (comme ceux liés à Solidity) en faisant quelques choses.

« Ma recommandation pour de tels contrats serait soit de les KEEP à une durée de vie limitée, afin de minimiser les effets négatifs potentiels, soit de procéder à une analyse formelle et appropriée du bytecode du contrat. Nous développons actuellement des outils pour y parvenir », a-t-il déclaré.

Contrats évolutifs

Il existe cependant quelques moyens de contourner ce problème.

Hudson Jameson, responsable des relations extérieures de la Fondation Ethereum, a décrit un moyen de mettre à niveau les contrats intelligents qui pourraient potentiellement être décentralisés, affirmant que l'ajout d'un moyen de mettre à niveau le code en direct est une nécessité.

« Le sentiment général de nos développeurs est qu'à ce stade précoce, il est important d'avoir des mesures de sécurité dans votre code afin de désactiver ou de mettre à niveau en toute sécurité les contrats qui ont beaucoup de valeur », a-t-il déclaré.

Jameson a décrit certains « dispositifs de sécurité » potentiels pour les contrats intelligents, où les propriétaires peuvent mettre à niveau leurs contrats même après leur déploiement sur Ethereum, ou où les contrats intelligents peuvent détecter quand quelque chose de louche se passe.

Il a expliqué qu'ils n'ont T nécessairement besoin d'être centralisés ou sous le contrôle d' un ONE propriétaire. Par exemple, un contrat intelligent pourrait limiter la quantité d'un actif pouvant être retirée simultanément.

« Ainsi, si un attaquant tente de vider le contrat de fonds ou d'un actif, il peut déclencher une réponse décentralisée comme le verrouillage et la notification aux autres personnes qui utilisent le contrat qu'elles devront peut-être retirer leurs fonds », a-t-il déclaré.

Il a décrit quelques autres méthodes, notamment la détection de piratage, les interrupteurs d'arrêt et les transactions multi-signatures où ONE personnes doivent signer une transaction avant que l'éther puisse être distribué.

Avoir hâte de

Les contrats intelligents sur Ethereum Classic (le groupe qui s'est séparé d' Ethereum en raison d'un désaccord idéologique) sont également affectés par le bug puisque sa blockchain repose sur le même ensemble d'outils.

Mais selon son principal organisateur, Arvicco, les développeurs explorent une autre façon à long terme de développer un langage de programmation plus résistant aux bugs.

«ONEune des solutions possibles est de faire passer le développement du langage des contrats intelligents du paradigme objet/procédural au paradigme fonctionnel », a-t-il déclaré.

Quelle que soit la solution possible, la discussion implique que les développeurs Ethereum ne devraient T s'attendre à ce que leurs contrats intelligents fonctionnent sans conséquences potentiellement dangereuses pour le moment, qui peuvent ou non être pleinement évidentes pour ceux qui ont déjà déployé du code sur le réseau.

En ce qui concerne Solidity en particulier, un autre bug imparable pourrait potentiellement affecter d’autres contrats intelligents à l’avenir.

Reitwiessner a noté qu'il est toujours possible pour un compilateur d'introduire un bug, et il est possible que Solidity ou Serpent (l'autre langage de contrat intelligent d'Ethereum) aient d'autres défauts non découverts.

Il a toutefois noté qu'en plus de deux ans de développement, il s'agissait du premier bug grave découvert dans le langage des contrats intelligents.

Image de constructionvia Shutterstock

Alyssa Hertig

Journaliste spécialisée dans les technologies chez CoinDesk, Alyssa Hertig est programmeuse et journaliste spécialisée dans le Bitcoin et le Lightning Network. Au fil des ans, ses articles ont également été publiés dans VICE, Mic et Reason. Elle écrit actuellement un livre explorant les tenants et aboutissants de la gouvernance du Bitcoin . Alyssa possède des BTC.

Alyssa Hertig