Le concept de smart contract, ou “contrat intelligent”, a été théorisé pour la première fois par Nick Szabo en 1994, dans un papier scientifique sobrement intitulé “Smart contracts”. La blockchain Ethereum est la plus utilisée pour déployer des smart contracts. Dans cet article, nous tâcherons de rappeler la définition d’un smart contract, puis de présenter le fonctionnement plus spécifique d’un smart contract Ethereum.
Dans le résumé de sa publication, Nick Szabo présente les smart contracts de la manière suivante:
“ Un contrat intelligent est un protocole de transaction informatisé qui exécute automatiquement les termes d’un contrat. Les objectifs généraux de la conception de contrats intelligents sont de satisfaire aux conditions contractuelles courantes (telles que les modalités de paiement, les privilèges, la confidentialité et même l’exécution), de minimiser les erreurs tant malveillantes qu’accidentelles et de minimiser le besoin d’intermédiaires fiables. Les objectifs économiques connexes comprennent la réduction des pertes dues à la fraude, les coûts d’arbitrage et d’application de la loi et les autres coûts de transaction. ”
La volonté est claire, automatiser les contrats et les rendre applicables sans le recours à un tiers.
En 1996, Nick Szabo précise sa pensée à travers une nouvelle publication traitant des smart contracts, “Smart Contracts: Building Blocks for Digital Markets”.
Il faudra cependant attendre 2015 et le déploiement d’Ethereum pour voir une première application des smart contracts. Ces derniers représentaient le point central d’Ethereum, point qui peut se ressentir dans le whitepaper “A Next-Generation Smart Contract and Decentralized Application Platform”.
Qu’est-ce qu’est un smart contract exactement ?
Une définition possible a été vue précédemment avec la citation de Nick Szabo extraite de la publication originelle. Cependant, nous pouvons spécifier cette définition en résumant ces contrats en quatre points.
- Un contrat intelligent est un accord entre plusieurs parties sous forme de code informatique.
- Ils sont distribués et de ce fait, stockés dans une base de données publique et ne peuvent pas être modifiés (dans notre cas une blockchain).
- Ils permettent d’effectuer des transactions de manière automatique sans avoir recours à une tierce partie, ne dépendant ainsi de personne.
- Les transactions automatisées se produisent lorsqu’une ou plusieurs conditions du contrat sont remplies.
L’essor du réseau Ethereum et l’imagination débordante de la communauté nous ont montré à quels points ces contrats peuvent se complexifier et effectuer des opérations et procédés évolués.
- Découvrez notre formation vidéo au développement Ethereum
- Formez-vous seul ou avec vos collaborateurs au développement Ethereum sur Paris ou Toulouse
Comment fonctionne un smart contract sur Ethereum ?
Les smart contracts Ethereum reposent sur un langage de programmation: Solidity. Ce langage, encore sans nom lors de la rédaction du white paper, était décrit par Vitalik Buterin comme étant:
“Un langage de programmation Turing-complet qui peut être utilisé pour créer des “contrats” qui permettent de coder des fonctions arbitraires de transition d’état, permettant aux utilisateurs de créer n’importe lequel des systèmes décrits ci-dessus, ainsi que de nombreux autres que nous n’avons pas encore imaginé, en écrivant simplement la logique dans quelques lignes de code.”
Ces contrats ont un large éventail de possibilités:
- Fonctionner comme des comptes multisignatures implémentant des conditions supplémentaires, comme le fait que les fonds ne puissent être dépensés que lorsqu’un pourcentage défini des signataires donnent leur accord.
- Gérer les accords entre utilisateurs, comme les accords contractuels classiques.
- Peuvent être utilisés par d’autres contrats, afin que ceux-ci “déportent” certaines fonctionnalités sur des contrats existants.
- Stocker les informations d’une application, telles que les registres des membres de l’application.
Une fois que les différentes procédures et conditions de ces contrats sont codées, ils sont déployés sur Ethereum et exécutés dans l’Ethereum Virtual Machine, ou machine virtuelle d’Ethereum.
C’est une sorte de système d’exploitation décentralisé à travers les nœuds de la blockchain Ethereum, et dans lequel les smart contracts sont exécutés. Pour être exécutés sans problème par l’EVM, les contrats se doivent de répondre à trois critères et doivent être :
- Déterministes (pour de mêmes arguments, les fonctions du contrats doivent toujours renvoyer le même résultat)
- Finalisables
- Isolés
Le problème réside dans le fait que pour certains programmes, il n’est pas possible de savoir s’il se finalisera un jour ou s’il tombera dans une boucle infinie. C’est pour éviter le problème de boucle infinie que le gas a été implémenté sur Ethereum.
Cette unité de mesure, sous forme de frais, permet de définir la durée pendant laquelle un contrat ou une transaction ethereum sera exécutée sur la blockchain, si elle n’est pas finalisée.
Exemples de smart contracts Ethereum
Après plusieurs années de fonctionnement et de mise à l’épreuve, les smart contracts d’Ethereum ont su attiser l’enthousiasme des développeurs. Ces derniers ont imaginé de nombreuses applications dans un large panel de domaines.
Assurances
En septembre 2017, une filiale du groupe d’assurance AXA nommée Fizzy a lancé un service d’assurance 100% automatisé grâce à des smart contracts. Ce service indemnise automatiquement les passagers d’un vol ayant subi un retard supérieur à 2 heures.
Santé
Dans ce domaine nous pouvons citer Kidner Project, un projet auquel a participé la Française Sajida Zouarhi souhaitant décentraliser et augmenter la traçabilité de la gestion des transplantations d’organes.
Entreprises
Les smart contracts peuvent être utilisés dans le cadre de la gestion d’une entreprise. Par exemple, l’ensemble des versements des salaires peuvent être automatisés de manière simple et fiable.
ICO / STO
Il n’est pas aisé de parler de smart contracts sans parler d’ICO (Initial Coin Offering) ou de STO (Security Token Offering). Tous deux sont des modes de financement permettant aux créateurs de projets tokenisés d’organiser des préventes des tokens. Eux aussi fonctionnent grâce à des smart contracts, le standard ERC-20 est utilisé par les ICO et le standard ERC-1400 pour les STO.
Comme nous avons pu le voir, les smart contracts représentent un outil puissant et flexible qui peut être appliqué à de nombreux domaines. Le concept a été repris par de nombreuses autres blockchains “concurrentes” d’Ethereum, avec pour la plupart leurs particularités d’implémentations. Cependant, Ethereum reste le protocole le plus largement utilisé pour déployer ces programmes, notamment par de grandes entreprises dans le cadre de réseaux privés.
Pour aller plus loin :
- Découvrez notre formation au développement Ethereum et à Solidity en ligne
- Inscrivez-vous à l’une de nos sessions en présentiel sur Paris ou Toulouse (3 journées)
Si vous souhaitez une formation solide pour apprendre à développer sur Ethereum, en partant des bases, jusqu’à la programmation de tokens ERC-20, l’interaction avec des oracles ou encore le déploiement de blockchains privées, cette formation conçue par Jonathan Serra regroupe 13 heures de vidéos, les codes sources utilisés, des supports écrits et des exercices, une section commentaires et des mises à jours. Si vous souhaitez parfaire votre expertise d’Ethereum, n’attendez plus !
Commentaires