Qu’est-ce qu’un Smart Contract ?
Un contrat intelligent (ou Smart Contract) est un accord entre les parties qui contient une série d’instructions sous forme de code et est exécuté dans la blockchain, de sorte qu’il est stocké dans une base de données publique et ne peut pas être modifié. Les transactions qui se produisent dans un contrat intelligent sont traitées par la blockchain, ce qui signifie qu’elles peuvent être envoyées automatiquement sans aucun intermédiaire. Les transactions ne se produisent que lorsque les termes de l’accord préétabli sont respectés ; il n’y a pas de tiers, donc il n’y a pas de problèmes de confiance. Prenons un exemple :
Imaginons que nous voulons louer une voiture pour passer une semaine en vacances. Traditionnellement, nous payions à l’avance le coût de la semaine entière et rendions le véhicule dans un délai préétabli. D’autre part, avec l’utilisation de contrats intelligents, nous pouvons faire en sorte que le véhicule lui-même (via l’Internet des objets) calcule le temps d’utilisation et les kilomètres parcourus, de sorte que nous soyons facturés centime par centime en temps réel, ayant la possibilité de retourner la voiture avant la date fixée et mettre fin au contrat.
L’avantage de réaliser cette transaction via un Smart Contract est que le contrat est transparent (visible par tout le monde dans la blockchain), immuable (une fois stocké dans la blockchain, il ne peut plus être modifié) et impartial (le code est objectif). D’autre part, l’un des inconvénients est que dans le cas où le code du contrat intelligent présente des vulnérabilités (pas nécessairement intentionnelles), la sécurité de l’argent et des données transférées au contrat peut être compromise.
Quelle est l’utilisation des contrats intelligents ?
Il existe un large éventail d’opportunités dans la mise en œuvre de contrats intelligents, car ils peuvent être utilisés pour tout type de transaction, il n’est pas nécessaire qu’elle soit financière.
— Médecine : EncrypGen a développé une application qui utilise les Smart Contracts pour transférer les données des patients aux chercheurs en toute sécurité, sans permettre l’accès à des tiers. Si les chercheurs veulent utiliser les données des patients, ils doivent payer et le patient doit choisir de vendre ou non ses données.
— Assurance : l’assureur français AXA a déjà commencé à tester les contrats intelligents pour assurer les vols des compagnies aériennes. Si l’avion arrive à l’heure, le passager paie le coût de l’assurance. En cas d’arrivée tardive, le Smart Contract réclame l’argent à l’assureur et le verse au passager, automatisant et accélérant l’ensemble du processus de réclamation.
— Identité numérique et vote : récemment, certains projets ont émergé qui cherchent à valider l’identité d’un électeur et à enregistrer son vote. Ces informations pourraient être utilisées pour initier une action après la fin de tous les votes. Parce que les blocs au sein d’une blockchain sont inaltérables une fois qu’ils sont enregistrés, la manipulation de ce registre ne serait pas possible et éviterait de nombreux problèmes de fraude électorale.
— Chaînes d’approvisionnement : l’utilisation de contrats intelligents pour la gestion des stocks et des commandes semble être une réalité. L’adoption de l’Internet des objets pourrait amener les propres machines d’une usine à commander des matériaux lorsqu’elles détectent qu’il n’y en a plus.
Défis des contrats intelligents
L’un des grands défis des Smart Contracts est la nécessité d’adapter les contrats intelligents à un cadre juridique différent dans chaque pays (et même dans chaque région de chaque pays). Transférer le langage juridique dans le monde de la programmation, ainsi que prouver la validité juridique d’un contrat sans intermédiaires, est assez difficile pour le moment. Cependant, le paysage juridique commence à s’adapter à ces nouveaux modes de négociation.
Un autre élément clé du développement des Smart Contracts est la lisibilité et l’accessibilité des contrats. Actuellement, seuls les programmeurs experts sont capables de comprendre le code (et donc les termes du contrat). Tout porte à croire qu’avec le temps, des formes adaptées au langage naturel de lecture et de compréhension du fonctionnement du contrat vont émerger. De plus, la création de contrats intelligents est simplifiée grâce à de nouvelles plateformes où, sans programmation et en quelques clics, nous pouvons générer et mettre en service notre Smart Contract.
Enfin, pour que les contrats intelligents fonctionnent correctement, nous devons leur fournir des données fiables sur ce qui se passe dans le monde réel. Il faut noter que dans une blockchain, le seul monde connu est ce qui est stocké dans les blocs (on peut dire que la blockchain est « isolée »). Les oracles sont chargés de fournir ces données dans les Smart Contracts.
Les oracles nous permettent de suivre l’activité Internet afin que nous puissions transférer ces données vers la blockchain. Ses fonctions vont de la vérification des résultats d’événements sportifs ou des cotations boursières en temps réel à la localisation d’objets partout dans le monde à l’aide de la technologie de géolocalisation. Des projets comme Chainlink, Band Protocol ou API3 visent à améliorer l’interopérabilité des blockchains avec le monde réel grâce à ces oracles.
Programmer un contrat intelligent
Le langage le plus courant pour programmer les contrats intelligents est Solidity, un langage de programmation de haut niveau qui ressemble un peu à JavaScript et nous permet de programmer dans la machine virtuelle Ethereum (EVM). EVM est utilisé non seulement dans la blockchain Ethereum mais aussi dans d’autres qui sont basés sur la même technologie, comme Binance Smart Chain, Polygon, Celo, TRON, RSK et bien d’autres. L’environnement de programmation (IDE) couramment utilisé pour publier des Smart Contracts est Remix, vous pouvez trouver un tutoriel avec les premières étapes ici.
D’autre part, Rust a récemment commencé à être adopté pour programmer des contrats intelligents dans blockchains telles que Solana, Terra, Polkadot, NEAR Protocol et d’autres. Rust est un langage qui introduit des nouveautés intéressantes et génère un débat dans la communauté des développeurs sur le langage le plus approprié pour développer des projets de blockchain. Pourtant, Solidity reste le programmeur le plus pertinent et le plus utilisé.