Beaucoup voient le Web3 et la technologie blockchain comme des révolutions. Certains d’entre eux estiment que la véritable révolution n’est autre que le smart contract.
Le contrat intelligent est effectivement un terme phare de la blockchain, au moins aussi populaire que le protocole Bitcoin. Ses apports théoriques, et pratiques, pour l’automatisation des exécutions contractuelles, sa sécurité et sa fiabilité sont indéniables. Mais concrètement, tout cela s’avère plus complexe.
Partons ensemble à la découverte du smart contract à travers cet article.
Besoin de prendre un peu de hauteur avant de plonger dans le concept de smart contract ? En préambule vous pouvez consulter mon article d’introduction à l’univers des cryptomonnaies.
Connaître les bases du smart contract dans une blockchain
Une première définition du smart contract
Il est possible que vous trouviez plusieurs définitions du smart contract. En effet, ce n’est pas gravé dans le marbre, même si 4 éléments communs se dégagent.
Tout d’abord, le smart contract est un programme informatique. En d’autres termes, c’est un code programmé par un humain (pour l’instant, tant que l’IA ne nous remplace pas !).
Ensuite, ce programme s’exécute automatiquement. C’est tout l’apport du smart contract. L’exécution est automatique lorsque les conditions préalablement codées sont réunies. Par exemple, les parties ont prévu que Julie verse 100 euros à Jean quand ce dernier finit un marathon. C’est fictif, mais c’est pour vous montrer la notion de condition.
Enfin, quand le smart contract est exécuté, la transaction réalisée est conservée dans un registre distribué, c’est-à-dire une blockchain.
Voici donc en résumé les caractéristique d’un smart contract :
- Programme informatique,
- Exécution automatique,
- Nécessité de la réalisation d’une ou plusieurs conditions pour qu’il y ait exécution,
- Conservation dans un registre distribué, soit une blockchain.
Les smart contracts, ce n’est pas si récent !
Contrairement à ce que vous pourriez penser, les smart contracts ne sont pas nés avec la blockchain. Leur théorisation date des années 1990.
C’est plus exactement en 1996 que Nick Szabo, un informaticien américain, évoque pour la première fois l’idée d’un programme informatique capable de s’exécuter de manière automatisée et qu’il nomme smart contract. Pour la petite histoire, Szabo s’est par la suite impliqué dans Bitcoin et certains le soupçonnent même d’être la personne se cachant derrière Satoshi Nakamoto !
Dans son article, Nick Szabo fait en quelque sorte un mélange entre le futur protocole Bitcoin et l’idée du smart contract. L’objectif premier, c’est de se passer d’un tiers de confiance pour exécuter une transaction lorsque des conditions sont remplies. Il prend même l’exemple des distributeurs de boissons ou de snacks dans les gares ou les stations de métro comme des « smart contracts primitifs ». Lorsque vous payez à la machine à café, vous obtenez votre café sans qu’un tiers soit intervenu.
L’idée de Szabo est alors d’adapter la machine à café à l’informatique. Le problème, c’est que sa théorie n’a pas pu être mise en pratique de sitôt. En effet, le problème de l’absence d’intermédiaire, et donc la nécessité de faire confiance à un programme, a été une difficulté non résolue pendant plus de 10 ans.
En d’autres termes, il n’était pas possible de prouver que l’exécution automatique avait été réalisée au moment où la condition a été remplie sans qu’elle ne se reproduise fortuitement (problème de la double dépense). Jusqu’en 2008, les smart contracts sont donc de la pure théorie.
Le retour du smart contract avec la blockchain
Lorsqu’est publié le whitepaper de Bitcoin (BTC), l’épineux problème de la double dépense est résolu. Il est désormais possible de se transmettre de la valeur sans l’intervention d’un tiers et de manière sécurisée. Néanmoins, le protocole Bitcoin n’est pas ouvert, ce qui fait qu’il est impossible d’y faire autre chose que de se transmettre des BTC.
Si le risque de double dépense a disparu, l’exécution automatique conditionnée n’est possible que pour une question monétaire. Ce problème fait tilt dans la tête de Vitalik Buterin. Fan de Bitcoin, il voit rapidement les limites du protocole, qui peut aller beaucoup plus loin.
Lui et d’autres décident alors de reprendre le code de Bitcoin et de l’ouvrir à d’autres possibilités. C’est ainsi que naît Ethereum en 2015.
Le smart contract dans une blockchain : un fonctionnement à la fois simple et complexe
Ethereum (ETH) : le protocole des smart contracts
Le protocole Ethereum est ainsi né pour permettre l’exécution du smart contract. En effet, Ethereum est dit « Turing complete », signifiant que l’on peut exécuter n’importe quel type de programme ou d’application dessus.
Si l’on traduit cela en cas pratiques, cela veut dire que n’importe quelle application décentralisée peut être déployée sur Ethereum, dont la finance décentralisée (DeFi). Tout cela est permis parce que l’on peut y exécuter des smart contracts. C’est la raison pour laquelle la grande majorité des applications décentralisées blockchain sont déployées sur Ethereum.
Il n’est pas utile de rentrer dans de complexes détails techniques. Mais sachez qu’une grande majorité des autres protocoles, comme Cardano (ADA), Polygon (MATIC), Polkadot (DOT) ou Avalanche (AVAX) sont des dérivés d’Ethereum et permettent, eux aussi, l’exécution de smart contracts.
Notez que le smart contract tel qu’on l’entend aujourd’hui est quasi identique à celui théorisé par Nick Szabo en 1996. Comme quoi, quand une théorie est bonne, il n’y a pas lieu de la modifier sur la durée !
Le smart contract n’est pas très intelligent…
Nous allons probablement casser un mythe mais… Non, le smart contract n’est pas intelligent ! Comme nous l’avons indiqué en première partie, il s’agit d’un programme informatique codé par un humain. C’est ce dernier qui décide des fameuses conditions dans lesquelles le programme pourra s’exécuter.
Dit autrement, ce n’est pas de l’intelligence artificielle (IA). Le programme ne va pas « apprendre » seul et s’exécuter s’il estime que les conditions sont réunies. Ces dernières doivent donc être définies en amont.
Cependant, qui dit qu’à terme, il n’y aura pas une association entre IA et blockchain, et plus précisément les smart contracts ? C’est fort possible dans un futur proche au vu de l’avancée des deux technologies.
… mais il permet l’exécution automatique conditionnée !
Le véritable apport du smart contract reste toutefois cette fameuse exécution automatisée. Nous verrons plus bas les apports avec des exemples concrets. Afin qu’il y ait exécution, il n’y a, cette fois-ci, pas besoin d’intervention humaine.
Pour les programmeurs, c’est une simple fonction « IF… ELSE… RESULT », en quelque sorte, mais de manière bien plus évoluée. Les conditions peuvent directement être inscrites dans le code. Mais, parfois, cela n’est pas possible, car l’information est disponible en externe. Il faut alors faire appel à ce que l’on appelle des oracles.
Un oracle est une partie tierce du monde réel qui va délivrer une information brute et théoriquement vraie. Nous donnerons un exemple un peu plus bas.
Coder un smart contract, est-ce difficile ?
Pour écrire un smart contract, il faut maîtriser des langages de programmation. Parmi eux, Solidity est spécialement conçu pour Ethereum. Il est aussi possible de coder en utilisant Rust, JavaScript et encore d’autres langages.
La difficulté dépend de votre niveau de départ, du langage utilisé et du résultat attendu. Un smart contract avec de nombreuses conditions sera généralement plus complexe à coder.
Les smart contracts sont-ils juridiquement des contrats ?
Principe : seuls, les smart contracts n’ont pas de valeur juridique…
C’est un point essentiel qui fait défaut selon de nombreuses personnes. Parce que oui, déjà qu’il n’est pas intelligent, ce n’est en plus pas un véritable contrat !
En effet, en France et dans de nombreux autres pays, un contrat répond à un certain formalisme. Non, il ne s’agit pas d’écrire le contrat sur un papier, car le contrat électronique est valable, mais l’absence de signature formelle des parties et de termes intelligibles pour un humain font que le smart contract n’est pas un contrat.
En conséquence, en présence d’un smart contract non accompagné, ce dernier n’a aucune valeur juridique, peu importe les sommes en jeu. En revanche, s’il est accompagné…
… mais, accompagnés par un vrai contrat, tout change !
Imaginez que vous signez un contrat classique qui stipule que l’exécution se fera à l’aide d’un programme informatique automatisé lorsque les conditions sont remplies. Vous l’avez dans le mille : ce smart contract est juridiquement valable.
Vous avez compris pourquoi : c’est le vrai contrat qui fait office de contrat, et le smart contract n’est là que pour aider à l’exécution.
La distinction est donc simple :
- Smart contract seul : juridiquement non valable,
- Smart contract en support d’un contrat classique : juridiquement valable.
C’est en tout cas ce que prévoit la législation à l’heure actuelle, mais rien ne dit que cela n’évoluera pas à l’avenir.
4 cas d’usage intéressants des smart contracts
La banque et la finance
Pas besoin de vous faire un dessin, vous avez compris que nous parlions de la DeFi. L’octroi des prêts, le versement d’intérêts et toutes les autres fonctionnalités sont déjà gérés par des smart contracts.
🔎 Si vous voulez aller plus loin, vous pouvez consulter notre article consacré à la finance décentralisée.
L’assurance
Il y a eu un cas concret et assez connu dans l’écosystème Web3 : Fizzy d’Axa, arrêtée en 2019. Il s’agissait d’une assurance retard d’avion, qui s’exécutait automatiquement lorsque le retard dépassait un certain délai.
Pour ce faire, Fizzy utilisait un oracle, qui était le tableau de bord de l’aéroport d’arrivée. Il n’y avait donc aucune intervention humaine et le smart contract était juridiquement valable, car il était accompagné d’un véritable contrat.
Cependant, Fizzy a été stoppée après 2 ans et depuis et nous attendons toujours une nouvelle expérience grand public. Le succès n’est donc pas encore au rendez-vous.
Les chaînes d’approvisionnement (supply chain)
Dans la supply chain, le smart contract peut s’exécuter automatiquement si le niveau d’un stock atteint un chiffre donné.
Par exemple, le smart contract peut prévoir l’exécution automatique d’une commande lorsque le stock d’un produit en supermarché passe sous un certain seuil (ex. 10 pots de Nutella). Ce chiffre est la condition et l’exécution prévoit un achat automatisé de X unités supplémentaires auprès du fournisseur (ex. 200 pots de Nutella).
La conservation des documents officiels
N’importe quel document officiel, tel un acte de naissance, peut être conservé de manière sécurisée et infalsifiable sur une blockchain. Cependant, quid de la consultation et de la modification ? C’est là que le smart contract entre en jeu.
Le programme peut en effet prévoir qu’un document officiel puisse être consulté lorsque la personne X s’est identifiée de manière formelle. Pour que tout cela puisse bien fonctionner, il faudrait mettre en parallèle la question de l’identité décentralisée, qui formerait une association parfaite avec le smart contract.
Notre avis : le smart contract, la véritable révolution Web3 !
Beaucoup estiment que seul Bitcoin est une révolution. Certes, nous n’allons pas nier le véritable apport de Bitcoin au secteur. Mais, selon nous, la véritable révolution du Web3, c’est le smart contract. La raison est simple : il permet de faire bien plus de choses que le protocole Bitcoin.
En théorie, il est possible de mettre un smart contract à peu près partout. Les 4 exemples que nous avons donnés ne sont qu’un commencement des possibilités offertes par cette technologie. Mais, avec le Web3 et la blockchain, le problème est toujours le même : l’adoption par le grand public.
Aujourd’hui, seule la DeFi est utilisée à une échelle acceptable, impliquant plusieurs centaines de milliers voire millions de personnes par jour. Pour le reste, c’est très confidentiel et nous attendons que le smart contract se démocratise. Peut-être qu’une évolution du droit est nécessaire pour que cela devienne une possibilité réelle.