Introduction
Les contrats intelligents ont été décrits pour la première fois dans les années 1990 par Nick Szabo. Il a défini un contrat intelligent comme un outil qui formalise et sécurise les réseaux informatiques en combinant des protocoles avec une interface utilisateur.
Szabo a étudié l'utilisation des contrats intelligents dans divers domaines, tels que les accords contractuels, les systèmes de crédit, le traitement des paiements et la propriété du contenu.
Dans le monde des crypto-monnaies, un contrat intelligent est une application qui s'exécute sur la blockchain. Il s’agit d’un accord numérique soutenu par un ensemble de règles. Ces règles sont définies par un code informatique qui est copié et traité par tous les nœuds du réseau.
Les contrats intelligents permettent la création de protocoles sans confiance. Cela signifie que les deux parties peuvent interagir via la blockchain sans avoir à se faire confiance. Les parties au processus peuvent être assurées que le non-respect des termes du contrat entraînera son annulation. L’utilisation de contrats intelligents élimine également le besoin d’intermédiaires, réduisant ainsi considérablement les coûts de transaction.
Bien que le protocole Bitcoin prenne en charge les contrats intelligents depuis des années, ils doivent leur popularité au créateur et cofondateur d'Ethereum, Vitalik Buterin. Dans le même temps, chaque blockchain peut utiliser sa propre manière de mettre en œuvre des contrats intelligents.
Cet article se concentre sur les contrats intelligents exécutés sur la machine virtuelle Ethereum (EVM), qui est un élément essentiel de la blockchain Ethereum.
Comment cela marche-t-il?
En termes simples, un contrat intelligent fonctionne comme un programme déterministe. Il exécute certaines actions lorsque des conditions spécifiées sont remplies. Sur cette base, les systèmes de contrats intelligents utilisent souvent des instructions « si… alors… ». Malgré la terminologie généralement acceptée, les contrats intelligents ne sont ni des contrats au sens juridique ni « intelligents ». Ce ne sont que des morceaux de code exécutés sur un système distribué (la blockchain).
Dans le réseau Ethereum, les contrats intelligents sont responsables de l'exécution des transactions entre les utilisateurs (adresses). Toute adresse qui n’est pas un contrat intelligent est appelée un compte propriétaire final (EOA). Ainsi, les contrats intelligents sont contrôlés par un code logiciel et les comptes personnels sont contrôlés par les utilisateurs.
Essentiellement, les contrats intelligents Ethereum se composent d’un code de contrat (contenant les conditions d’exécution) et de deux clés publiques. La première clé publique est fournie par le créateur du contrat. L’autre clé est le contrat lui-même, qui est un identifiant numérique unique à chaque contrat intelligent.
Tout contrat intelligent est exécuté via une transaction blockchain et peut être activé lorsqu'il est initié par un compte personnel (ou un autre contrat intelligent). Cependant, la séquence de contrats intelligents est toujours lancée depuis un compte personnel (c'est-à-dire par l'utilisateur).
Caractéristiques principales
Un contrat intelligent Ethereum présente souvent les caractéristiques suivantes :
Distribution. Les contrats intelligents sont répliqués et distribués sur tous les nœuds du réseau Ethereum. C’est l’une de leurs principales différences avec les autres solutions qui utilisent des serveurs centralisés.
Déterminisme. Les contrats intelligents exécutent les actions pour lesquelles ils sont conçus lorsque les exigences spécifiées sont remplies. De plus, le résultat sera toujours le même, peu importe qui remplit les conditions.
Autonomie. Les contrats intelligents peuvent automatiser toutes sortes de tâches, agissant comme un programme auto-exécutable. Dans la plupart des cas, si un contrat intelligent n'est pas initié, il est « dormant » et n'effectue aucune action.
Immutabilité. Il n’est pas possible de modifier le fonctionnement d’un contrat intelligent une fois qu’il a été développé et activé. Les modifications ne peuvent être apportées que si les développeurs ont préalablement implémenté une fonctionnalité spécifique. Ainsi, nous pouvons dire que les contrats intelligents peuvent fournir une protection contre le piratage de code grâce à une preuve d’authenticité.
Personnalisation. Les contrats intelligents peuvent être codés de plusieurs manières, par exemple pour créer différents types d'applications décentralisées (DApps). C'est parce qu'Ethereum a été conçu pour être Turing complet.
Manque de confiance. Deux ou plusieurs parties peuvent interagir à l’aide de contrats intelligents, sans se connaître ni se faire confiance. De plus, la technologie blockchain garantit l’exactitude et la comptabilité de toutes les données.
Transparence. Étant donné que les contrats intelligents sont basés sur une blockchain publique, leur code source est accessible à tous.
Puis-je modifier ou supprimer un contrat intelligent ?
Les utilisateurs d'Ethereum ne peuvent pas ajouter de nouvelles fonctionnalités après avoir activé un contrat intelligent. Cependant, si un développeur inclut une fonction appelée SELFDESTRUCT dans le code du contrat, il pourra la supprimer ultérieurement et la remplacer par une nouvelle. Sans cette fonction, il sera impossible de supprimer un contrat intelligent.
En particulier, les contrats intelligents dits actualisables permettent aux développeurs d’apporter des modifications au code, offrant ainsi une plus grande flexibilité que les contrats immuables. Il existe de nombreuses façons de créer ce type de contrat intelligent de complexité variable.
Regardons cela avec un exemple simple. Imaginons qu’un contrat intelligent soit divisé en plusieurs contrats plus petits. Certains d'entre eux ne peuvent pas être modifiés, tandis que d'autres peuvent être supprimés grâce à la fonctionnalité mentionnée ci-dessus. Cela signifie qu'une partie du code (un certain nombre de contrats intelligents) peut être supprimée et remplacée par une autre, tandis que le reste des fonctionnalités reste inchangé.
Avantages et cas d'utilisation
Parce qu’il s’agit de codes programmables, les contrats intelligents sont facilement personnalisables et peuvent être développés de différentes manières pour offrir différents types de services et de solutions.
En tant que programme décentralisé et auto-exécutable, les contrats intelligents peuvent offrir une transparence accrue et réduire les coûts opérationnels. Selon le domaine d’activité, ils peuvent également accroître l’efficacité et réduire les coûts bureaucratiques.
Les avantages des contrats intelligents sont particulièrement évidents lorsqu’il s’agit de transferts d’argent ou d’échange de fonds entre deux ou plusieurs parties.
En d’autres termes, les contrats intelligents peuvent être conçus pour s’adapter à une grande variété de cas d’utilisation, notamment les actifs tokenisés, les systèmes de vote, les portefeuilles cryptographiques, les échanges décentralisés, les jeux et les applications mobiles. Ils peuvent également être déployés aux côtés d’autres solutions blockchain dans les domaines de la santé, de la philanthropie, 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 sont conformes à la norme ERC-20, qui décrit leurs fonctions de base. Ils sont souvent appelés jetons ERC-20 et constituent la majorité des crypto-monnaies existantes.
De nombreuses entreprises et startups développent des contrats intelligents pour émettre leurs propres jetons numériques sur le réseau Ethereum. Après l'émission, la plupart d'entre eux distribuent leurs jetons ERC-20 via une offre initiale de pièces (ICO). Les contrats intelligents permettent l’échange et la distribution sécurisés et efficaces de fonds.
Défauts
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 erreurs. Idéalement, le développement devrait être réalisé par des programmeurs expérimentés, en particulier lorsque des informations confidentielles ou des sommes d’argent importantes sont impliquées.
On pense que les systèmes centralisés peuvent fournir la plupart des solutions et des fonctions des contrats intelligents. La principale différence est que les contrats intelligents sont exécutés sur un réseau peer-to-peer distribué plutôt que sur un serveur centralisé. Et comme les contrats intelligents sont basés sur la blockchain, ils sont généralement immuables ou trop complexes pour être modifiés.
Parfois, la cohérence est utile, mais pas toujours. Par exemple, en 2016, des pirates informatiques ont pénétré dans l’organisation autonome décentralisée The DAO et ont volé des millions de dollars en éther (ETH) en exploitant des vulnérabilités dans le code du contrat intelligent.
Étant donné que le contrat intelligent DAO était immuable, les développeurs n’ont pas pu corriger le code. Cela a finalement conduit à un hard fork et à la création d'une deuxième chaîne Ethereum. En termes simples, une chaîne a annulé le piratage et a restitué les fonds à leurs propriétaires légitimes (cette chaîne fait partie de la blockchain Ethereum actuelle), tandis que l'autre n'a en aucun cas réagi au piratage, basant ses actions sur le fait que les événements sur la blockchain ne devraient jamais être modifiés (cette chaîne s'appelle désormais Ethereum Classic).
Il convient de noter que le problème n’est pas dû au fonctionnement de la blockchain Ethereum. Au lieu de cela, l’erreur a été causée par une implémentation défectueuse du contrat intelligent.
Un autre inconvénient des contrats intelligents est leur statut juridique incertain. Ce n’est pas seulement parce que la technologie se trouve dans une « zone grise » dans la plupart des pays, mais aussi parce que les contrats intelligents ne sont pas conformes à leur cadre réglementaire actuel.
Par exemple, l’exigence principale de nombreux accords et contrats est l’identification stricte des participants et l’âge à partir de 18 ans. L’anonymat offert par la technologie blockchain, associé à l’absence d’intermédiaires, peut constituer un obstacle au respect de ces exigences. Bien qu’il existe des solutions potentielles à ce problème, l’aspect juridique des contrats intelligents constitue l’un des principaux défis, notamment lorsqu’il s’agit d’échelle mondiale et de réseaux distribués.
Critique
Certains passionnés de blockchain voient les contrats intelligents comme une solution qui pourrait remplacer et automatiser une grande partie des systèmes commerciaux et bureaucratiques existants. Bien que cela soit tout à fait possible, les contrats intelligents sont loin d’être la norme dans ce domaine.
Les contrats intelligents sont certainement une technologie intéressante. Mais sa nature distribuée et déterministe, ainsi que sa transparence et son immuabilité partielle, le rendent moins attrayant à utiliser dans certaines situations.
Essentiellement, toutes 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. Et en fait, certaines organisations trouvent plus simple et plus efficace d’utiliser des serveurs alternatifs classiques.
Par rapport aux contrats intelligents, les serveurs centralisés sont plus simples et moins chers à entretenir. De plus, ils peuvent également offrir une plus grande efficacité en termes de vitesse et d’interaction avec d’autres réseaux (interopérabilité).
CV
Sans aucun doute, les contrats intelligents ont eu un impact majeur sur le monde de la crypto-monnaie et ont certainement révolutionné le domaine de la technologie blockchain. Étant donné que les utilisateurs finaux ne peuvent pas interagir directement avec les contrats intelligents, ils pourraient potentiellement servir de base à un large éventail d’applications à l’avenir, des services financiers à la gestion de la chaîne d’approvisionnement.
Le potentiel combiné des contrats intelligents et de la blockchain peut avoir un impact significatif sur pratiquement tous les aspects de la société. Mais seul le temps nous dira si ces technologies innovantes parviendront à surmonter les obstacles à une adoption généralisée.

