Qu'est-ce qu'un smart contract ?
Accueil
Articles
Qu'est-ce qu'un smart contract ?

Qu'est-ce qu'un smart contract ?

Intermédiaire
Publié le Sep 16, 2019Mis à jour le Jun 9, 2023
9m

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.

Dans le monde des cryptomonnaies, nous pouvons définir un smart contract comme une application ou un programme qui s'exécute sur une blockchain. En général, ils fonctionnent comme un accord numérique qui est appliqué par un ensemble de règles spécifiques. Ces règles sont prédéfinies par code informatique, qui est répliqué et exécuté par tous les nœuds du réseau.

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.

Bien que le protocole Bitcoin prenne en charge les smart contracts depuis de nombreuses années, ils ont été rendus populaires par le créateur et cofondateur d'Ethereum, Vitalik Buterin. Il convient toutefois de noter que chaque blockchain peut présenter une méthode différente de mise en œuvre des smart contracts.

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.

Personnalisable. Avant leur déploiement, les smart contracts peuvent être codés de différentes manières. Ils peuvent donc être utilisés pour créer de nombreux types d'applications décentralisées (DApps). Cela est dû au fait qu'Ethereum est une blockchain Turing-complète.

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.

En d'autres termes, les smart contracts peuvent être conçus pour une grande variété de cas d'utilisation. Parmi les exemples, citons la création d'actifs tokenisés, de systèmes de vote, de portefeuilles de cryptomonnaies, d'exchanges 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 des soins de santé, des organismes de bienfaisance, de la chaîne logistique, de la gouvernance et de la finance décentralisée (DeFi).


ERC-20

Les tokens émis sur la blockchain Ethereum suivent une norme connue sous le nom de ERC-20. La norme décrit les fonctions de base de tous les tokens basés sur Ethereum. Par conséquent, ces actifs numériques sont souvent appelées tokens ERC-20 et représentent une grande partie des cryptomonnaies existantes.
De nombreuses entreprises et startups de la blockchain ont déployé des smart contracts afin d'émettre leurs tokens numériques sur le réseau Ethereum. Après l'émission, la majorité de ces entreprises ont distribué leurs tokens ERC-20 par le biais d'offre initiales de pièces (ICO). Dans la plupart des cas, l'utilisation de smart contracts a permis d'échanger des fonds et de distribuer des tokens de manière fiable et efficace.


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.

Puisque leur smart contract était 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. Pour faire simple, une chaîne a « annulé » le piratage et a renvoyé 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 piratage, en indiquant que les choses qui se produisent sur une blockchain ne doivent 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, 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.