Souvent associé au protocole Ethereum, qui se positionne comme une version davantage programmable de Bitcoin, élargissant considérablement le champ des applications décentralisées, le terme “smart contract” n’est devenu populaire que récemment, bien que le cypherpunk de légende, Nick Szabo, ait écrit sur le sujet pour la première fois en 1994. Avec l’avènement des protocoles à consensus distribué et des cryptomonnaies inventés pour permettre des échanges de valeurs numériques sans frontières, sécurisés, résistants à la censure et programmables, c’est tout un secteur technologique qui s’ouvre à la programmation de contrats intelligents. Ethereum est le protocole le plus connu dédié à la programmation de smart-contracts, mais il n’est pas le seul et les smarts contracts peuvent aujourd’hui être déployés sur d’autres blockchains concurrentes.
Smart contract : définition
Les smart contracts, ou contrats intelligents, sont des programmes informatiques irrévocables, le plus souvent déployés sur une blockchain, qui exécutent un ensemble d’instructions pré-définies.
L’idée maîtresse derrière ce concept de smart contracts est de garantir la force obligatoire des contrats non plus par le droit, mais directement par le code informatique : “code is law”, pour reprendre la célèbre formule de Lawrence Lessig.
Comme pour chaque programme informatique, la complexité est variable d’un contrat intelligent à l’autre. Certains implémentent des conditions simples, à l’image d’une fonction « si » Excel (si telle condition est remplie, alors le contrat est exécuté – “if this then that” pour les intimes) alors que d’autres smart contracts sont de véritables usines à gaz. A titre d’illustration, certains contrats intelligents ont même pour ambition de répliquer toutes les clauses et les règles permettant à des sociétés (commerciales ou non) de fonctionner. On parle souvent à ce propos de DAO, acronyme pour Organisation Autonome Décentralisée. Il est à noter que bien souvent, la complexité est l’ennemie de la sécurité.
Le fonctionnement d’un smart contract
Le smart contract propose en quelque sorte un équivalent informatique du contrat papier. Durant l’exécution du smart contract, toutes les étapes de validation sont enregistrées dans la blockchain utilisée (le plus souvent Ethereum), ce procédé permet de sécuriser l’ensemble des données en empêchant leur modification ou leur suppression a posteriori.
En pratique, l’immense majorité des smart contracts servent pour automatiser des échanges de valeur sous forme de cryptoactifs. Toutes les écritures comptables relatives à ces échanges de valeurs numériques sont systématiquement inscrites dans la blockchain. De la sorte tous les transferts d’actifs, sont à la fois publics, prévisibles et irrévocables. N’importe qui peut vérifier sur la blockchain la bonne exécution du smart contract et déterminer à qui l’actif.
Les smart contracts garantissent donc un ensemble extrêmement chargé de conditions d’exécution, qui ne laissent normalement pas de place au doute ou à la confusion. Les conditions sont très clairement fixées et l’interprétation du code est sans équivoque, contrairement à l’interprétation humaine, qui laisse toujours place à la négociation ou à la découverte d’un vide juridique.
Les contrats intelligents sont pour la plupart standardisés, tout comme les contrats papiers, pour lesquels nous avons la possibilité d’utiliser des templates. Le standard de smart contract le plus connu est connu sous le nom de ERC-20, et a pour fonction principale de permettre la création de tokens (actifs numériques, cryptomonnaies) sur le réseau Ethereum.
Les avantages et inconvénients du smart contract
- Avantages
Les blockchains publiques offrent de formidables opportunités pour déployer des smart contracts de manière extrêmement sécurisée. Il existe actuellement des centaines de tokens ERC-20 (toutes les cryptomonnaies issues d’un smart contract ERC-20) dont la valorisation globale représente plusieurs milliards de dollars.
Les avantages du smart contract sont multiples. Ces derniers permettent de :
- Sécuriser un accord entre deux parties (ou davantage) grâce à la transparence et l’immutabilité des blockchainsAutomatiser le paiement et éliminer les risques d’impayés, fréquemment observés dans le cadre d’un contrat traditionnelDiminuer drastiquement les coûts intermédiaires dans l’élaboration, le suivi et la passation d’un contrat (notaire, avocat)Inconvénients
Les smarts contracts comportent cependant des inconvénients sur lesquels planchent actuellement les spécialistes des technologies de chaînes de blocs et de registres distribués. Le principal inconvénient reste le risque de failles, inhérent à tout programme informatique.
Le code des smart contracts est le plus souvent open source, mais si ce code est mal conçu, il peut permettre à des hackers d’exploiter les failles qu’il contient au détriment des autres utilisateurs. L’exemple de piratage le plus connu est celui de The DAO, ayant entrainé une perte de plus de 150 millions de dollars (en ethers). A la suite de ce hack célèbre, la communauté Ethereum avait fait le choix douloureux de ré-écrire a posteriori l’historique des transactions inscrit dans la blockchain Ethereum afin de déposséder le hacker de son butin et de restituer les ethers volés à l’ensemble des victimes.
Ce type de problème pose la question de l’immutabilité des blockchains (« Code is Law ») face à la nécessité de réintroduire une intervention humaine dans le cadre d’un smart contract en vue rétablir la morale et l’ordre public. Une doctrine existe, soutenant qu’il serait envisageable de rajouter une forme de gouvernance supplémentaire aux blockchains orchestrée par un savant jeu de smart contracts pour définir des cas possibles d’arbitrage en cas d’urgence. A l’opposé, les puristes de Bitcoin et de ses évolutions sont partisans de préserver autant que possible ces écosystèmes de toute intervention humaine et politique.
Une question idéologique au cœur des enjeux de la blockchain, qui divise toujours la communauté.
Exemples de smart contract
Plusieurs blockchains laissent la possibilité de déployer des smart contracts : la plus connue est bien entendue Ethereum, qui comprend déjà un grand nombre d’applications décentralisées programmées via contrats intelligents. Mais d’autres protocoles prometteurs, tels EOS, Tezos, ou encore Cosmos rendent également possible la programmation de smart contracts. La blockchain Cardano, en cours de développement, prévoit également cette possibilité, en garantissant un niveau de sécurité adapté aux systèmes les plus critiques.
Pour l’instant, les smarts contracts les plus éprouvés sont programmés sur Ethereum et sont listés sur StateoftheDapps. On en retrouve plusieurs types selon les secteurs d’activité :
- Echanges monétaires décentralisés : 0x, OmiseGo, MakerDAOJeux sur Blockchain : Cryptokitties, My Crypto Heroes, Etheremon Gambling : FCK, Playtowin, FunFairCloud décentralisé : Storj, iEx.ecPlateformes de marchés prédictifs : Augur, Gnosis
Et bien plus encore… L’économie des smart contracts est encore embryonnaire mais semble promise à un très bel avenir. De nombreuses applications décentralisées dans les secteurs de la santé, l’assurance, ou encore les chaînes d’approvisionnement (pharmaceutiques, agro-alimentaires, cosmétiques, etc.) sont actuellement en cours de développement. Les années 2020 ont de grandes chances de proposer une organisation sensiblement différente que notre actuelle version des contrats papiers et des applications régies par des tiers de confiance. Une économie dans laquelle les cryptomonnaies joueront un rôle essentiel.