Site icon Crypto Week

Les contrats intelligents vont mourir. Et ce n’est pas grave, car il y a quelque chose de mieux ici

contrats intelligents

L’industrie de la finance décentralisée est peut-être le cas d’utilisation le plus prometteur de la technologie blockchain à ce jour. Ce qui a commencé avec Bitcoin et un mécanisme de paiement simple et alternatif a évolué pour devenir toute une industrie de services financiers alternatifs alimentés par Ethereum et d’autres crypto-monnaies.

La grande promesse de DeFi est une plus grande inclusion financière. En éliminant les banques et autres entités centralisées requises pour autoriser les transactions, DeFi ouvre les portes à quiconque peut participer, sans aucune sorte d’identité ni besoin de se soumettre à des vérifications de crédit. L’incroyable croissance de l’industrie DeFi à ce jour souligne le potentiel de cet écosystème financier alternatif. En mars 2022, le secteur mondial DeFi était évalué à plus de 77 milliards de dollars.

DeFi a atteint une taille impressionnante, mais il reste encore un long chemin à parcourir pour pouvoir un jour remplacer la finance traditionnelle. Si DeFi et la cryptographie doivent devenir vraiment courants, l’industrie doit établir des fondations beaucoup plus solides que l’architecture actuelle sur laquelle elle est construite.

Le problème avec DeFi

La principale faiblesse de DeFi est qu’elle est construite sur une architecture extrêmement vulnérable, à savoir les contrats intelligents.

Cette déclaration pourrait soulever quelques sourcils car les contrats intelligents sont le concept clé derrière DeFi. C’est grâce à eux que les transactions peuvent être traitées sans aucun type d’intermédiaire. Les contrats intelligents sont des accords logiciels hébergés sur la blockchain qui ne s’exécutent automatiquement que lorsque certaines conditions sont remplies. Ils sont open-source, ce qui signifie que tout le monde peut voir comment ils fonctionnent, garantissant ainsi la transparence de l’ensemble du processus.

Les contrats intelligents sont très bien quand ils fonctionnent, mais le problème majeur avec DeFi est qu’ils échouent souvent, comme l’illustre la valeur de plus de 2 milliards de dollars qui a été perdue pour les pirates et les escrocs cette année seulement. La raison de cette perte ? Vulnérabilités.

Les contrats intelligents ne sont essentiellement qu’une chaîne de code. Cependant, ces chaînes de code sont souvent extrêmement longues et complexes, et c’est ce qui les rend vulnérables aux bogues et aux exploits qui peuvent être abusés par les pirates. Les bogues dans les logiciels existent depuis aussi longtemps que le code existe, et il est clair que les humains n’ont pas vraiment de réponse à ce problème. Après tout, les humains ne sont que des humains, et aussi intelligents soient-ils, ils sont aussi notoirement sujets aux erreurs. Nous pouvons auditer le code logiciel autant que nous le voulons, mais il y aura toujours un risque que quelque chose échappe à notre attention.

Il s’ensuit que la meilleure façon d’empêcher les vulnérabilités de se glisser dans le code logiciel est de maintenir ce code à un minimum absolu, et c’est ici que le paradigme actuel du contrat intelligent s’effondre. Les contrats intelligents existants, tels que conceptualisés pour la première fois sur Ethereum, puis copiés par à peu près toutes les autres plates-formes majeures de blockchain qui ont émergé depuis, sont créés à l’aide de masses de code spaghetti qui sont tout simplement trop difficiles à manier pour que les développeurs restent en sécurité.

Ce qu’il faut alors, c’est une refonte complète de la façon dont les contrats intelligents sont construits, avec un paradigme de développement entièrement nouveau qui les rend faciles, sûrs, réutilisables et composables. De cette façon, nous pouvons découper le code spaghetti et minimiser la courbe d’apprentissage. Si nous pouvons faire cela, nous pouvons permettre à n’importe qui de créer en toute sécurité des contrats intelligents simples avec moins de risques que les vulnérabilités passent inaperçues.

La complexité des contrats intelligents d’aujourd’hui

Pour comprendre à quel point le paradigme actuel de développement de contrats intelligents est mauvais, nous pouvons examiner comment une transaction très basique est exécutée sur la blockchain Ethereum.

Regardons Uniswap, qui est l’un des échanges décentralisés les plus utilisés dans l’industrie DeFi. Sur Uniswap, l’une des transactions les plus élémentaires est celle où un fournisseur de liquidités contribue une paire de jetons dans un pool de liquidités pour que d’autres utilisateurs puissent échanger. En échange de cela, les LP reçoivent un « jeton LP » spécial qui sert de reçu pour les jetons qu’ils ont déposés dans le pool. Au sein du pool, les traders peuvent ensuite acheter et vendre ces paires de jetons en utilisant une formule complexe qui applique de petits frais pour compenser les fournisseurs de liquidité.

On pourrait penser que ce processus serait assez simple à mettre en œuvre. Par exemple, avec l’échange initial, vous pouvez vous attendre à ce qu’il fonctionne un peu comme le schéma ci-dessous :

Ainsi, selon ce schéma, le commerçant dispose d’un montant de jetons A sur un compte qui sont envoyés au contrat intelligent d’Uniswap. L’algorithme du contrat intelligent effectue des calculs pour déterminer le taux de change entre le jeton A et le jeton B, afin d’envoyer au commerçant la quantité correcte de jetons B. Ça ne pourrait pas être plus simple, sûrement ?

Malheureusement, ça ne marche pas tout à fait comme ça. Au contraire, le diagramme ci-dessus est une interprétation incroyablement simple du fonctionnement réel du contrat intelligent d’Uniswap. En réalité, c’est beaucoup plus complexe :

Oh cher. Une explication assez longue s’impose.

Le problème avec la simplicité des choses est qu’Ethereum n’a aucune idée de ce que sont les «jetons». Ainsi, le jeton A et le jeton B doivent être représentés comme des contrats intelligents ERC-20 autonomes, chacun contenant une liste interne de soldes. En réalité, les utilisateurs n’envoient leurs jetons de crypto-monnaie nulle part. Ce qu’ils font, c’est envoyer des messages à différents contrats intelligents, leur disant de mettre à jour leurs soldes. De plus, les commerçants ne détiennent même aucun jeton sur leur « compte ». Au contraire, l’ensemble de l’univers crypto n’est qu’une masse de contrats intelligents avec des soldes accessibles à l’aide d’une clé privée.

En raison de cette architecture complexe, un transfert de jeton implique l’envoi de messages aux contrats intelligents qui détiennent chaque jeton, à l’aide du contrat intelligent Uniswap. Pour compliquer encore les choses, parce que les pools de réserve A et B d’Uniswap ne sont que des listes de soldes dans d’autres contrats intelligents, le contrat intelligent principal d’Uniswap doit conserver et mettre à jour un cache interne des deux soldes, qui doit être mis à jour à chaque appel pour s’assurer qu’il est capable de calculer le A /B taux de change correctement.

Il y a encore plus d’intrigues. Les utilisateurs qui soumettent une transaction à Uniswap doivent toujours « approuver » un jeton avant qu’il puisse être échangé. Cela est dû à la ligne rose dans le diagramme ci-dessus. Uniswap doit effectuer des « envois » des jetons A et B au nom de l’utilisateur, il nécessite donc une transaction distincte pour indiquer au contrat intelligent de chaque jeton d’activer l’échange. Il s’agit d’une considération de sécurité nécessaire pour empêcher l’approbation des transactions par des dApps et des utilisateurs malveillants.

Pendant que tout cela se passe, le contrat intelligent d’Uniswap doit tenir à jour sa liste d’équilibre interne du jeton LP, en utilisant une interface tout aussi complexe.

N’oubliez pas, tout cela n’est qu’un simple échange de jetons ! De nombreuses applications DeFi peuvent effectuer des transactions beaucoup plus avancées avec de nombreuses étapes, ce qui ajoute à la complexité pour les développeurs et augmente la probabilité que des vulnérabilités se glissent dans les nombreux contrats intelligents qui font que tout fonctionne.

Rester simple

La cause de tout ce chaos est que les blockchains comme Ethereum, Polkadot, Solana, Cosmos et Avalanche n’ont aucun concept d ‘«actifs» tels que les jetons de crypto-monnaie et les NFT. Il s’agit d’un échec de conception clé. Cela signifie que les développeurs n’ont d’autre choix que de créer des mécanismes de contrat intelligents élaborés pour alimenter chaque fonction de DeFi.

Si nous voulons que les développeurs puissent créer des contrats intelligents plus simples, rapidement, sans aucune vulnérabilité, nous avons besoin d’une plate-forme fondamentalement différente pour les développer, une plate-forme qui reconnaît les actifs numériques.

Ce que nous devons faire, c’est faire en sorte que le schéma Uniswap plus simple présenté ci-dessus devienne une réalité. Nous avons besoin d’un moyen de simplifier les contrats intelligents, afin que les actions puissent se résumer à des choses comme « envoyer », « mettre » et « prendre ». Si ces éléments peuvent devenir une fonctionnalité de la plate-forme, il sera possible de simplifier massivement la conception de contrats intelligents avec un code composable, réutilisable et riche en fonctionnalités. C’est sur quoi travaille Radix.

Radix qualifie son architecture de contrat intelligent de « programmation orientée actifs », une approche dans laquelle les actifs sont une caractéristique clé de la plate-forme sous-jacente. Comme il s’agit d’une fonctionnalité native de la blockchain Radix, il n’est pas nécessaire de les implémenter encore et encore sous forme de listes de soldes dans des contrats intelligents.

Radix a créé un environnement de développement d’applications appelé Radix Engine, qui est radicalement différent de la machine virtuelle Ethereum et d’autres environnements similaires. Avec Radix Engine, il est possible de créer des jetons en les demandant directement depuis la plateforme. La principale différence avec cela est que la plate-forme traite ces actifs comme des objets physiques, qui sont stockés dans les comptes des utilisateurs et déplacés entre eux – un peu comme dans notre diagramme Uniswap plus simple ci-dessus. N’oubliez pas que c’est complètement différent d’Ethereum, où les jetons ne sont pas stockés dans des comptes mais plutôt, comme des entrées sur des milliers de bilans de contrats intelligents différents, accessibles par une clé privée.

Radix réduit la complexité de la gestion des actifs car il les reconnaît pour ce qu’ils sont – un élément clé de DeFi.

Radix est capable de le faire car il utilise un modèle unique de machine à états finis (FSM) qui garantit le caractère physique correct du comportement des actifs. Dans Radix Engine, le Tokens FSM peut être considéré comme un service de livraison qui garantit que chaque jeton arrivera à sa destination prévue lors du transfert d’un coffre à un autre.

.

Comme le montre le diagramme, l’envoi de jetons est extrêmement simplifié. Au lieu d’envoyer un message à un contrat intelligent lui demandant de mettre à jour une liste de soldes, l’utilisateur indique simplement à Radix Engine qu’il souhaite envoyer à un autre les jetons détenus dans son coffre-fort. Cela élimine les erreurs telles que les doubles dépenses, car il n’est tout simplement pas possible d’envoyer des jetons deux fois si les actifs ne sont plus là.

En plus de l’approche axée sur les actifs, Radix a créé un langage de programmation basé sur Rust appelé Scrypto qui est utilisé pour envoyer des messages entre des contrats intelligents et créer une logique pour eux. Scrypto a pour effet d’étendre le Tokens FSM en un « Resources FSM » qui ajoute des fonctionnalités bien plus importantes aux actifs natifs.

Cette architecture unique bouleverse la logique des contrats intelligents. Avec le Resources FSM, l’envoi de jetons devient plus simple et intuitif. Par conséquent, le code des contrats intelligents n’a pas besoin d’être aussi complexe. De plus, le nombre de messages envoyés entre les contrats intelligents est réduit au strict minimum, car ils n’ont qu’à transmettre les demandes des utilisateurs plutôt que de gérer le mouvement des actifs et de mettre à jour les bilans.

En résumé, les ressources de Radix Engines éliminent le besoin de code spécialisé pour chaque transaction. Ils permettent aux développeurs de créer et de réutiliser du code plus simple et donc beaucoup plus sûr pour tout le monde.

Parce que les contrats intelligents de Radix Engine sont tellement plus simples, Radix leur a créé un nom plus approprié. Ils sont appelés «composants» et, grâce à leur modularité et à leur composabilité, ils permettent aux développeurs de créer de nouvelles applications DeFi simplement en assemblant ces composants, de la même manière que quelqu’un pourrait construire un modèle à l’aide de briques lego.

En conséquence, Radix a complètement repensé le paradigme de développement DeFi avec un environnement d’application entièrement nouveau qui maintient le codage à un minimum absolu. Les développeurs sont moins accablés par la perspective de vulnérabilités qui se glissent dans leur code, ce qui signifie qu’ils peuvent passer plus de temps à concrétiser leurs idées de finance décentralisée.

Source https://coincheckup.com/blog/smart-contracts-will-die-and-thats-okay-because-something-better-is-here/

Quitter la version mobile