Introduction
Nick Szabo a décrit pour la première fois les smart contracts dans les années 1990. À l'époque, il avait défini un smart contract comme un outil qui formalise et sécurise les réseaux informatiques en combinant des protocoles et des interfaces utilisateur.
Szabo a évoqué l'utilisation potentielle des smart contracts dans divers domaines impliquant des accords contractuels, tels que les systèmes de crédit, le traitement des paiements et la gestion des droits sur les contenus.
Les smart contracts blockchain permettent de créer des 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 outre, l'utilisation de smart contracts peut éliminer le besoin d'intermédiaires, ce qui réduit considérablement les coûts opérationnels.
Cet article se concentre sur les smart contracts qui fonctionnent sur la machine virtuelle Ethereum (EVM), qui est une partie essentielle de la blockchain Ethereum.
Alors, comment fonctionnent-ils ?
En termes simples, un smart contract fonctionne comme un programme déterministe. Il exécute une tâche particulière quand et si certaines conditions sont remplies. Par conséquent, un système de smart contract suit souvent les fonctions « si... alors.. ». Mais malgré la terminologie, les smart contracts n'ont pas de valeur légale, et ne sont pas intelligents. Il s'agit simplement d'un code exécuté sur un système distribué (une blockchain).
Sur le réseau Ethereum, les smart contracts sont chargés d'exécuter et de gérer les opérations de la blockchain qui ont lieu lorsque les utilisateurs (adresses) interagissent entre eux. Toute adresse qui n'est pas un smart contract s'appelle un compte détenu en externe (EOA). Ainsi, les smart contracts sont contrôlés par code informatique, et les EOA sont contrôlés par les utilisateurs.
Fondamentalement, les smart contracts 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 en tant qu'identifiant numérique unique à chaque smart contract.
Le déploiement d'un smart contract est effectué par le biais d'une transaction blockchain. Il ne peut être activé que lorsqu'il est appelé par un EOA (ou par d'autres smart contracts). Cependant, le premier déclencheur est toujours causé par un EOA (utilisateur).
Caractéristiques principales
Un smart contract Ethereum présente souvent les caractéristiques suivantes :
Distribué. Les smart contracts sont répliqués et distribués dans tous les nœuds du réseau Ethereum. C'est l'une des principales différences avec les autres solutions qui reposent sur des serveurs centralisés.
Déterministe. Les smart contracts n'effectuent que les actions pour lesquelles ils ont été conçus, à condition que les exigences soient respectées. De plus, le résultat sera toujours le même, peu importe qui les exécute.
Autonome. Les smart contracts peuvent automatiser toutes sortes de tâches, en fonctionnant comme un programme auto-exécutable. Dans la plupart des cas, cependant, si un smart contract n'est pas déclenché, il restera « en sommeil » et n'effectuera aucune action.
Immuable. Les smart contracts 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é mise en œuvre précédemment. Ainsi, nous pouvons dire que les smart contracts peuvent fournir un code inviolable.
Sans confiance. Deux parties ou plus peuvent interagir via des smart contracts sans se connaître ni se faire confiance. En outre, la technologie blockchain garantit l'exactitude des données.
Transparence. Les smart contracts é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 smart contract ?
Il est impossible d'ajouter de nouvelles fonctions à un smart contract Ethereum après son déploiement. Toutefois, si son créateur inclut une fonction appelée SELFDESTRUCT dans le code, il est en mesure de « supprimer » le smart contract à l'avenir, et de le remplacer par un nouveau. En revanche, si la fonction n'est pas incluse dans le code au préalable, il est impossible de le supprimer.
Remarquablement, les smart contracts évolutifs permettent aux développeurs d'avoir plus de flexibilité sur l'immuabilité des contrats. Il existe de nombreuses façons de créer des smart contracts évolutifs, avec différents degrés de complexité.
Dans un exemple simplifié, imaginons qu'un smart contract soit divisé en plusieurs petits contrats. 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 (smart contracts) peut être supprimée et remplacée, tandis que d'autres fonctionnalités restent intactes.
Avantages et cas d'usage
En tant que code programmable, les smart contracts sont hautement personnalisables et peuvent être conçus de différentes manières, offrant ainsi de nombreux types de services et de solutions.
En tant que programmes décentralisés et auto-exécutables, les smart contracts peuvent offrir une transparence accrue et réduire les coûts opérationnels. En fonction de leur mise en œuvre, ils peuvent également accroître l'efficacité et réduire les dépenses administratives.
Les smart contracts sont particulièrement utiles dans les situations impliquant le transfert ou l'échange de fonds entre deux parties ou plus.
ERC-20
Limites
Les smart contracts sont constitués de code informatique écrit par des humains. Cela présente de nombreux risques, car le code est soumis à des vulnérabilités et à des bugs. Idéalement, ils devraient être écrits et déployés par des programmeurs expérimentés, surtout lorsqu'ils impliquent des informations sensibles ou des sommes d'argent importantes.
Par ailleurs, certains affirment que les systèmes centralisés peuvent fournir la plupart des solutions et des fonctionnalités offertes par les smart contracts. La principale différence est que les smart contracts s'exécutent sur un réseau P2P distribué, plutôt qu'un serveur centralisé. Et parce qu'ils reposent sur un système blockchain, ils ont tendance à être immuables ou très difficiles à modifier.
Être immuable peut être génial dans certaines situations, mais très mauvais dans d'autres. Par exemple, lorsqu'une organisation autonome décentralisée (DAO) appelée « DAO » a été piratée en 2016, des millions d'éthers (ETH) ont été volés en raison de défauts dans leur code de smart contracts.
Il est important de noter que le problème ne vient pas de la blockchain Ethereum. Au lieu de cela, il a été causé par une mauvaise mise en œuvre du smart contract.
Une autre limite des smart contracts est liée à leur statut juridique incertain. Non seulement parce qu'il s'agit d'une zone grise dans la plupart des pays, mais aussi parce que les smart contracts ne conviennent pas au cadre juridique actuel.
Par exemple, de nombreux contrats exigent que les deux parties soient correctement identifiées et de plus de 18 ans. La pseudonymité fournie par la technologie blockchain, associée au manque d'intermédiaires, peut menacer ces exigences. Bien qu'il existe des solutions potentielles à ce problème, l'applicabilité juridique des smart contracts est un véritable défi, surtout lorsqu'il s'agit de réseaux distribués sans frontières.
Critiques
Certains passionnés de blockchain considèrent les smart contracts comme une solution qui va bientôt remplacer et automatiser une grande partie de nos systèmes commerciaux et administratifs. Bien que c'est possible, c'est probablement loin de devenir la norme.
Les smart contracts constituent certainement une technologie intéressante. Mais le fait qu'ils soient distribués, déterministes, transparents et quelque peu immuables peut les rendre moins attrayants dans certaines situations.
La critique s'appuie essentiellement sur le fait que les smart contracts 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 solutions classiques basées sur des serveurs.
Par rapport aux smart contracts, les serveurs centralisés sont plus faciles et moins chers à entretenir, et ont tendance à présenter une efficacité accrue en termes de vitesse et de communication inter-réseaux (interopérabilité).
Pour conclure
Il ne fait aucun doute que les smart contracts ont eu un impact important dans le monde des cryptomonnaies, et qu'ils ont certainement révolutionné l'espace blockchain. Même si les utilisateurs finaux n'interagissent pas directement avec des smart contracts, ils sont susceptibles d'alimenter un large éventail d'applications à l'avenir, allant des services financiers à la gestion de la chaîne logistique.
Ensemble, les smart contracts et la blockchain ont le potentiel de disrupter presque tous les domaines de notre société. Mais seulement le temps dira si ces technologies révolutionnaires parviendront à surmonter les nombreux obstacles à leur adoption à grande échelle.