Introduction
Nick Szabo a décrit pour la première fois les contrats intelligents dans les années 1990. À l’époque, il définissait un contrat intelligent comme un outil qui formalise et sécurise les réseaux informatiques en combinant des protocoles avec des interfaces utilisateur.
Szabo a discuté de l'utilisation potentielle des contrats intelligents dans divers domaines impliquant des accords contractuels, tels que les systèmes de crédit, le traitement des paiements et la gestion des droits de contenu.
Dans le monde des crypto-monnaies, on peut définir un contrat intelligent comme une application ou un programme qui s’exécute sur une blockchain. En règle générale, ils fonctionnent comme un accord numérique appliqué par un ensemble spécifique de règles. Ces règles sont prédéfinies par un code informatique, qui est répliqué et exécuté par tous les nœuds du réseau.
Les contrats intelligents blockchain permettent la création de protocoles sans confiance. Cela signifie que deux parties peuvent prendre des engagements via la blockchain, sans avoir à se connaître ou se faire confiance. Ils peuvent être sûrs que si les conditions ne sont pas remplies, le contrat ne sera pas exécuté. En dehors de cela, l’utilisation de contrats intelligents peut supprimer le besoin d’intermédiaires, réduisant ainsi considérablement les coûts opérationnels.
Bien que le protocole Bitcoin prenne en charge les contrats intelligents depuis de nombreuses années, ils ont été rendus populaires par le créateur et co-fondateur d'Ethereum, Vitalik Buterin. Il convient toutefois de noter que chaque blockchain peut présenter une méthode différente de mise en œuvre de contrats intelligents.
Cet article se concentrera sur les contrats intelligents exécutés sur la machine virtuelle Ethereum (EVM), qui est un élément essentiel de la blockchain Ethereum.
Comment travaillent-ils?
En termes simples, un contrat intelligent fonctionne comme un programme déterministe. Il exécute une tâche particulière lorsque et si certaines conditions sont remplies. En tant que tel, un système de contrat intelligent suit souvent les déclarations « si… alors… ». Mais malgré la terminologie populaire, les contrats intelligents ne sont pas des contrats légaux, ni intelligents. Il ne s'agit que d'un morceau de code exécuté sur un système distribué (blockchain).
Sur le réseau Ethereum, les contrats intelligents sont chargés d'exécuter et de gérer les opérations blockchain qui ont lieu lorsque les utilisateurs (adresses) interagissent les uns avec les autres. Toute adresse qui n’est pas un contrat intelligent est appelée compte externe (EOA). Ainsi, les contrats intelligents sont contrôlés par un code informatique et les EOA sont contrôlés par les utilisateurs.
Fondamentalement, les contrats intelligents Ethereum sont constitués d’un code de contrat et de deux clés publiques. La première clé publique est celle fournie par le créateur du contrat. L'autre clé représente le contrat lui-même, agissant comme un identifiant numérique unique à chaque contrat intelligent.
Le déploiement de tout contrat intelligent s'effectue via une transaction blockchain, et ils ne peuvent être activés que lorsqu'ils sont appelés par un EOA (ou par d'autres contrats intelligents). Cependant, le premier déclencheur est toujours provoqué par un EOA (utilisateur).
Principales caractéristiques
Un contrat intelligent Ethereum présente souvent les caractéristiques suivantes :
Distribué. Les contrats intelligents sont répliqués et distribués dans tous les nœuds du réseau Ethereum. C’est l’une des différences majeures par rapport aux autres solutions basées sur des serveurs centralisés.
Déterministe. Les contrats intelligents n’effectuent que les actions pour lesquelles ils ont été conçus, à condition que les exigences soient remplies. De plus, le résultat sera toujours le même, peu importe qui les exécute.
Autonome. Les contrats intelligents peuvent automatiser toutes sortes de tâches, fonctionnant comme un programme auto-exécutable. Cependant, dans la plupart des cas, si un contrat intelligent n’est pas déclenché, il restera « en veille » et n’effectuera aucune action.
Immuable. Les contrats intelligents ne peuvent pas être modifiés après leur déploiement. Ils ne peuvent être « supprimés » que si une fonction particulière a été préalablement implémentée. Ainsi, nous pouvons dire que les contrats intelligents peuvent fournir un code infalsifiable.
Personnalisable. Avant le déploiement, les contrats intelligents peuvent être codés de différentes manières. Ainsi, ils peuvent être utilisés pour créer de nombreux types d’applications décentralisées (DApps). Ceci est lié au fait qu’Ethereum est une blockchain complète de Turing.
Sans confiance. Deux ou plusieurs parties peuvent interagir via des contrats intelligents sans se connaître ni se faire confiance. De plus, la technologie blockchain garantit l’exactitude des données.
Transparent. Les contrats intelligents étant basés sur une blockchain publique, leur code source est non seulement immuable mais également visible par tous.
Puis-je modifier ou supprimer un contrat intelligent ?
Il est impossible d'ajouter de nouvelles fonctions à un contrat intelligent Ethereum après son déploiement. Cependant, si son créateur inclut une fonction appelée SELFDESTRUCT dans le code, il pourra "supprimer" le contrat intelligent à l'avenir - et le remplacer par un nouveau. En revanche, si la fonction n’est pas incluse au préalable dans le code, ils ne pourront pas la supprimer.
Notamment, les contrats intelligents dits évolutifs permettent aux développeurs d'avoir plus de flexibilité quant à l'immuabilité des contrats. Il existe de nombreuses façons de créer des contrats intelligents évolutifs, avec différents degrés de complexité.
Prenant un exemple simplifié, imaginons qu’un contrat intelligent soit divisé en plusieurs contrats plus petits. Certains d'entre eux sont conçus pour être immuables, tandis que d'autres ont la fonction « supprimer » activée. Cela signifie qu’une partie du code (contrats intelligents) peut être supprimée et remplacée, tandis que d’autres fonctionnalités restent intactes.
Avantages et cas d'utilisation
En tant que code programmable, les contrats intelligents sont hautement personnalisables et peuvent être conçus de différentes manières, offrant de nombreux types de services et de solutions.
En tant que programmes décentralisés et auto-exécutables, les contrats intelligents peuvent offrir une transparence accrue et des coûts opérationnels réduits. En fonction de la mise en œuvre, ils peuvent également accroître l'efficacité et réduire les dépenses bureaucratiques.
Les contrats intelligents sont particulièrement utiles dans les situations impliquant le transfert ou l'échange de fonds entre deux ou plusieurs parties.
En d’autres termes, les contrats intelligents peuvent être conçus pour une grande variété de cas d’utilisation. Quelques exemples incluent la création d'actifs tokenisés, de systèmes de vote, de portefeuilles cryptographiques, d'échanges décentralisés, de jeux et d'applications mobiles. Ils peuvent également être déployés avec d’autres solutions blockchain qui abordent les domaines de la santé, de la charité, de la chaîne d’approvisionnement, de la gouvernance et de la finance décentralisée (DeFi).
ERC-20
Les jetons émis sur la blockchain Ethereum suivent une norme connue sous le nom d'ERC-20. La norme décrit les fonctions de base de tous les jetons basés sur Ethereum. En tant que tels, ces actifs numériques sont souvent appelés jetons ERC-20 et représentent une grande partie des crypto-monnaies existantes.
De nombreuses sociétés et startups blockchain ont déployé des contrats intelligents afin d'émettre leurs jetons numériques sur le réseau Ethereum. Après l'émission, la majorité de ces sociétés ont distribué leurs jetons ERC-20 via des événements Initial Coin Offer (ICO). Dans la plupart des cas, l’utilisation de contrats intelligents a permis l’échange de fonds et la distribution de jetons de manière efficace et sans confiance.
Limites
Les contrats intelligents sont constitués de code informatique écrit par des humains. Cela entraîne de nombreux risques car le code est sujet à des vulnérabilités et des bugs. Idéalement, ils devraient être rédigés et déployés par des programmeurs expérimentés, en particulier lorsqu'ils impliquent des informations sensibles ou de grosses sommes d'argent.
En dehors de cela, certains affirment que les systèmes centralisés peuvent fournir la plupart des solutions et fonctionnalités offertes par les contrats intelligents. La principale différence est que les contrats intelligents s’exécutent sur un réseau P2P distribué plutôt que sur un serveur centralisé. Et comme ils sont basés sur un système blockchain, ils ont tendance à être soit immuables, soit très difficiles à modifier.
Être immuable peut être formidable dans certaines situations, mais très mauvais dans d’autres. Par exemple, lorsqu'une organisation autonome décentralisée (DAO) appelée « The DAO » a été piratée en 2016, des millions d'Ether (ETH) ont été volés en raison de failles dans leur code de contrat intelligent.
Leur contrat intelligent étant immuable, les développeurs n’ont pas pu corriger le code. Cela a finalement conduit à un hard fork, donnant naissance à une deuxième chaîne Ethereum. En termes simples, une chaîne a « annulé » le piratage et restitué les fonds aux propriétaires légitimes (cela fait partie de la blockchain Ethereum actuelle). L’autre chaîne a décidé de ne pas interférer avec le hack, déclarant que les choses qui se produisent sur une blockchain ne devraient jamais être modifiées (cette chaîne s’appelle désormais Ethereum Classic).
Il est important de noter que le problème ne vient pas de la blockchain Ethereum. Au lieu de cela, cela était dû à une mise en œuvre défectueuse du contrat intelligent.
Une autre limite des contrats intelligents est liée à leur statut juridique incertain. Non seulement parce qu’ils se situent dans une zone grise dans la plupart des pays, mais aussi parce que les contrats intelligents ne correspondent pas au cadre juridique actuel.
Par exemple, de nombreux contrats exigent que les deux parties soient correctement identifiées et âgées de plus de 18 ans. Le pseudonymat fourni par la technologie blockchain, combiné au manque d’intermédiaires, peut menacer ces exigences. Bien qu'il existe des solutions potentielles à ce problème, la force exécutoire juridique des contrats intelligents constitue un véritable défi, en particulier lorsqu'il s'agit de réseaux distribués sans frontières.
Critique
Certains passionnés de blockchain voient les contrats intelligents comme une solution qui remplacera et automatisera bientôt une grande partie de nos systèmes commerciaux et bureaucratiques. Bien que ce soit une réalité possible, elle est probablement loin de devenir la norme.
Les contrats intelligents sont certainement une technologie intéressante. Mais étant distribués, déterministes, transparents et quelque peu immuables, ils peuvent les rendre moins attrayants dans certaines situations.
Essentiellement, les critiques reposent sur le fait que les contrats intelligents ne constituent pas une solution adaptée à de nombreux problèmes du monde réel. En fait, certaines organisations ont intérêt à utiliser des alternatives conventionnelles basées sur un serveur.
Comparés aux contrats intelligents, les serveurs centralisés sont plus faciles et moins chers à entretenir, et ont tendance à présenter une plus grande efficacité en termes de vitesse et de communication inter-réseau (interopérabilité).
Pensées finales
Il ne fait aucun doute que les contrats intelligents ont eu un impact important dans le monde des crypto-monnaies et ont certainement révolutionné l’espace blockchain. Même si les utilisateurs finaux n’interagissent pas directement avec les contrats intelligents, ceux-ci sont susceptibles d’alimenter un large éventail d’applications à l’avenir, allant des services financiers à la gestion de la chaîne d’approvisionnement.
Ensemble, les contrats intelligents et la blockchain ont le potentiel de bouleverser presque tous les domaines de notre société. Mais seul le temps nous dira si ces technologies révolutionnaires parviendront à surmonter les nombreux obstacles à une adoption à grande échelle.