Quelques réflexions sur les contrats intelligents (smarts contracts)

Publié le 01/03/2021

La notion de contrats intelligents, traduction de la notion américaine de smart contracts créée dans les années 1990 par Nick Szabo, connaît actuellement un essor important en raison notamment du développement des blockchains. De nombreuses sociétés vantent les avantages des smarts contracts. Toutefois, d’un point de vue juridique, ces derniers pourraient poser plus de problèmes que les contrats traditionnels.

Dessin conceptuel du Smart contract.
artinspiring / AdobeStock

En 1996, Nick Szabo écrit un article intitulé « Contrats intelligents : éléments constitutifs des marchés financiers » (« Smart Contracts : Building Blocks for Digital Markets »)1. Dans cet article, il explique que la révolution numérique permet d’envisager de nouvelles façons de formaliser les relations, et en particulier les relations économiques. Nick Szabo dénomme ces nouvelles relations des contrats intelligents parce qu’il estime que ces derniers sont bien plus fonctionnels que leurs ancêtres sur papier. Il explique plus précisément qu’un contrat intelligent est un ensemble de promesses implémenté sous forme numérique. Sa définition est très large et semble inclure toutes les relations automatisées. Nick Szabo considère d’ailleurs que l’ancêtre des contrats intelligents est le distributeur automatique de marchandises.

Aujourd’hui, l’expression « contrats intelligents » est souvent utilisée dans un sens plus restreint, même s’il n’existe pas de définition précise. Il convient de noter que les contrats intelligents ne sont pas nécessairement des contrats au sens légal du terme. Par exemple, la documentation du langage informatique Solidity, qui permet de créer des contrats intelligents sur la blockchain Ethereum, explique que les contrats intelligents « sont des programmes qui régissent le comportement des comptes dans l’état d’Ethereum »2, c’est-à-dire que, pour les informaticiens, les contrats intelligents sont des lignes de code stockées sur une blockchain. Plus précisément, il s’agit de programmes informatiques conditionnels basés sur les fonctions « si-alors ». Le concept d’automatisme invoqué par Nick Szabo est donc présent.

La documentation Ethereum explique que le terme « intelligent » a été choisi parce que « lorsque les conditions d’exécution de ces engagements sont réunies, ceux-ci s’exécutent automatiquement sur la blockchain, en prenant en compte l’ensemble des conditions et des limitations qui avaient été programmées dans le contrat à l’origine »3. Il peut sembler curieux que l’intelligence soit assimilée à un automatisme et non à la possibilité de s’adapter. David Weshler considérait par exemple que « l’intelligence est la capacité globale ou complexe de l’individu d’agir dans un but déterminé, de penser d’une manière rationnelle et d’avoir des rapports utiles avec son milieu »4. Au contraire, les contrats intelligents n’interagissent pas avec leur environnement et appliquent mécaniquement les lignes de code. Cette irrévocabilité, assimilée très souvent à l’impossibilité d’une inexécution, est souvent mise en avant par les défenseurs des contrats dits intelligents. Nick Szabo expliquait dès 1996 que les contrats intelligents rendraient très couteux le non-respect des promesses faites et que, en conséquence, les parties à un contrat intelligent respecteraient nécessairement leurs obligations. Aujourd’hui, par exemple, le slogan de la société Bithalo est : « Les premiers contrats incassables au monde, plus d’intermédiaires, plus de fonds perdus dans les échanges. Plus de peur, d’incertitude et de doute ! »5. Les quelques réflexions qui suivent s’interrogeront sur la réalité de ses affirmations. Il convient toutefois de commencer par questionner la validité juridique des contrats intelligents passés sur une blockchain.

I – La validité des contrats intelligents

Selon l’article 1101 du Code civil, « le contrat est un accord de volontés entre deux ou plusieurs personnes destinées à créer, modifier, transmettre ou éteindre des obligations ». De plus, selon l’article 1109 du Code civil, « le contrat est consensuel lorsqu’il se forme par le seul échange des consentements quel qu’en soit le mode d’expression ». Il est donc tout à fait possible que des programmes informatiques formalisent des obligations contractuelles, c’est-à-dire que le seul fait qu’un contrat intelligent soit des lignes de code insérées dans une blockchain ne le rendra pas automatiquement nul. Toutefois, les contrats intelligents étant basés sur les fonctions « si-alors », les obligations pouvant être formalisées selon ce procédé sont relativement limitées. Il s’agira principalement de contrats impersonnels, comme le transfert de fonds. L’assurance Fizzi, lancée en 2017 par la société d’assurances AXA6, permettait par exemple aux voyageurs d’être automatiquement indemnisés lorsque leur avion avait plus de 2 heures de retard. L’indemnisation se faisait grâce à un programme informatique stocké sur une blockchain, c’est-à-dire grâce à un contrat intelligent7. Les contrats plus complexes, notamment les contrats relationnels, ne pourront pas, en revanche, être réduits à des fonctions « si-alors ». Il est néanmoins possible de prévoir que certaines obligations d’un contrat relationnel soient implémentées dans un contrat intelligent. Cela pourrait par exemple être le cas d’un contrat de franchise dont les redevances seraient versées grâce à un contrat intelligent.

Il est possible de considérer que certains contrats intelligents peuvent constituer le support de contrats consensuels, même si, en cas de litige, la question de l’interprétation des lignes de code se posera. En revanche, lorsque la formation d’un contrat nécessite un écrit, il semble difficile de considérer que les lignes de code suffiront à remplir les conditions de forme requises. L’article 9 de la directive n° 2000/31/CE pose le principe de la validité des contrats conclus par voie électronique et prévoit que les États membres veillent à ce que leur système juridique rende possible la conclusion des tels contrats. En France, l’article 1125 du Code civil dispose à cet effet que « la voie électronique peut être utilisée pour mettre à disposition des stipulations contractuelles ou des informations sur des biens ou services ». De plus, selon l’article 1366 du Code civil, « l’écrit électronique a la même force probante que l’écrit sur support papier, sous réserve que puisse être dûment identifiée la personne dont il émane et qu’il soit établi et conservé dans des conditions de nature à en garantir l’intégrité ». La notion de « voie électronique » de l’article 1125 du Code civil peut sans doute englober les lignes de code stockées sur une blockchain puisque cette dernière, tant qu’elle existe, est accessible sur internet. Cependant, est-ce que les juges considéreront que les lignes de code peuvent être des stipulations contractuelles ou un écrit électronique ? En effet, ces deux notions supposent la rédaction de phrases, ce qui n’est pas le cas des lignes de code. Ces dernières sont rédigées dans un langage informatique, tel que Solidity pour la blockchain Ethereum, qui se présente ainsi8 :

Ce langage n’est donc pas facilement accessible aux non-informaticiens non anglophones. De plus, chaque blockchain peut avoir son propre langage informatique. Il convient de noter que le stockage sur les blockchains ayant un coût, seules les lignes de code nécessaires seront stockées. Il ne serait pas efficient économiquement de stocker sur la blockchain le contrat rédigé en français et sa version en langage électronique. En tout état de cause, la blockchain ne comprenant que le langage informatique, seule cette version serait en pratique appliquée. En raison de leur langage, les contrats intelligents semblent difficilement envisageables pour remplacer les contrats solennels. Toutefois, un tel contrat stocké sur une blockchain s’exécuterait, y compris si une partie saisissait le juge pour le voir déclarer nul. En effet, nous verrons que les contrats intelligents stockés sur une blockchain s’exécutent automatiquement, c’est-à-dire qu’il n’est pas possible, sauf lignes de programme prévues à cet effet, de les modifier. De plus, une fois qu’un contrat intelligent a été exécuté, il n’est pas possible de revenir en arrière, au moins sur la blockchain.

Les contrats intelligents pouvant formaliser des contrats, il convient de vérifier s’ils ont les qualités mises en avant par les sociétés les utilisant.

II – Un contrat immuable ou incassable ?

Le terme « incassable » (unbreakable) peut être entendu, d’une part, comme qualifiant un contrat qui ne peut pas être altéré et, d’autre part, comme qualifiant un contrat pour lequel une inexécution contractuelle est impossible. La première assertion est sans doute celle qui est la moins contestable même si elle n’est pas absolue. Cette caractéristique découle du fait qu’un contrat intelligent est stocké sur une blockchain. Cette dernière, grâce à une gestion décentralisée, empêche en principe la falsification des données stockées, notamment parce que chaque nouveau bloc ajouté est irrémédiablement lié au précédent et parce qu’une copie est transmise à tous les membres du réseau. En conséquence, modifier un élément d’un ancien bloc imposerait de réécrire toute l’histoire de la blockchain, et ce à une vitesse plus rapide que l’ajout des nouveaux blocs, ou nécessiterait de prendre le contrôle de la blockchain en détenant plus de 50 % du réseau. La blockchain Ethereum, par exemple, a été modifiée, avec l’accord de la majorité de ses membres, en 2016, afin de retourner des fonds qui avaient été détournés9. La sécurité d’une blockchain dépend donc entièrement du nombre de ses membres et ces derniers dépendent des récompenses qu’ils obtiennent10. Les données stockées sur une blockchain puissante, comme Ethereum ou Bitcoin, sont quasiment infalsifiables. De plus, elles ne peuvent pas disparaître puisque chaque ordinateur membre du réseau en possède une copie. En revanche, les données stockées sur une blockchain ayant peu de membres sont vulnérables, ce qui est le cas des blockchains privées.

Un contrat intelligent stocké sur une blockchain puissante ne sera pas altérable mais, en contrepartie, il pourra être librement consulté. Les parties étant toutefois identifiées uniquement par une clé d’identification, leur anonymat est relativement garanti. Néanmoins, la connaissance d’une clé d’identification permet de retrouver toutes les transactions, avec leur contenu, passées avec cette dernière. De plus, des chercheurs américains, en étudiant des transferts de fonds sur Bitcoin, ont pu retracer en détail les interactions de commerçants avec leurs consommateurs11.

Si les contrats intelligents stockés sur une blockchain puissante sont quasiment infalsifiables, ils ne feront en revanche pas disparaître les inexécutions contractuelles. Si nous reprenons l’assurance Fizzi, qui permettait aux voyageurs d’être indemnisés automatiquement dès que leur avion avait plus de 2 heures de retard, si le compte visé dans le programme était vide, les voyageurs n’auraient reçu aucune indemnité. La fonction « si » (plus de 2 heures de retard) aurait été remplie mais la fonction « alors » n’aurait pas pu être exécutée, faute d’argent. De plus, un contrat intelligent peut avoir été parfaitement exécuté d’un point de vue informatique mais pas d’un point de vue juridique. En effet, un contrat intelligent peut par exemple être utilisé pour payer le prix d’un bien vendu. Imaginons qu’un programme informatique prévoie que le prix, déposé sur un compte bloqué, sera automatiquement versé au vendeur au moment où l’acheteur signera électroniquement12 le reçu du facteur. Quelques jours plus tard, l’acheteur signe le reçu et le prix convenu est versé au vendeur. En conséquence, le programme informatique a parfaitement fonctionné. Toutefois, si le bien reçu n’est pas conforme au bien vendu, il y a une inexécution contractuelle. La question se pose alors à nouveau de l’interprétation du contrat intelligent. En effet, ce dernier prévoit simplement le paiement du prix convenu (fonction « alors ») après la signature d’un reçu électronique (fonction « si »). Le programme informatique ne peut pas intégrer les caractéristiques attendues du bien vendu, ni même simplement sa nature. Il est tout à fait possible de préciser ses éléments dans le commentaire du programme. Toutefois, cela augmenterait le coût du contrat intelligent et n’aurait aucune incidence sur l’exécution de ce dernier dans la blockchain. C’est pour résoudre cette difficulté que les sociétés Bithalo ou BlackHalo par exemple imposent que le vendeur et l’acheteur déposent le prix de vente sur un compte bloqué. Si ces derniers ne valident pas le versement du prix au vendeur dans le délai imparti, les fonds déposés sont alors envoyés à un tiers (dont les parties ne connaissent pas le nom) et sont alors irrécupérables pour les deux parties. Il n’est toutefois pas certain que ce système soit plus sûr ou plus pratique que les contrats classiques, notamment parce que le vendeur doit avoir suffisamment de liquidités pour pouvoir faire le dépôt.

III – Un contrat sans intermédiaire

Les défenseurs des contrats intelligents mettent en avant que, ces derniers s’exécutant automatiquement, les intermédiaires, en particulier les banques, ne sont plus nécessaires. En effet, le transfert direct et sans condition d’argent sur une blockchain, puisque l’argent transféré est la monnaie en cours sur cette dernière (Bitcoin ou Ether par exemple), ne nécessite pas de banque centrale. Toutefois, les contrats intelligents, en particulier sur la blockchain Ethereum, ne se limitent pas aux transferts directs d’argent. En conséquence, afin de s’exécuter, un contrat intelligent utilisant les fonctions « si-alors » a besoin de savoir si la condition est remplie. Deux situations se présentent alors. La plus automatique et la plus objective est de renvoyer le programme à une base de données. Par exemple, le programme informatique de l’assurance Fizzi se connectait au site Flightstats afin de déterminer si l’avion avait plus de 2 heures de retard. Il n’y avait aucune intervention humaine et le contrat intelligent s’exécutait automatiquement. Le recours à une base de données ne fait toutefois pas disparaître toutes les difficultés, notamment parce que cette dernière peut disparaître. Il est donc important de prévoir dans le programme cette possibilité afin d’éviter notamment que des fonds soient bloqués définitivement. Si le recours à des bases de données permet de limiter les intermédiaires humains, il n’est pas toujours possible de relier le déclenchement d’une condition à une telle base. Dans ce cas, le programme peut renvoyer la prise de décision à un tiers de confiance. Par exemple, le programme peut prévoir que c’est le tiers de confiance qui décidera si les fonds bloqués sur un compte seront transférés au vendeur ou retournés à l’acheteur. Les contrats intelligents ne font donc pas disparaître tous les intermédiaires. Leur pouvoir est au contraire accru, d’où leur nom d’oracles.

IV – Pas d’incertitude ?

Les entreprises proposant des contrats intelligents défendent l’idée que, en raison des caractéristiques des blockchains, ces derniers permettraient de faire disparaître l’incertitude qui entoure parfois les contrats classiques. Nous avons déjà indiqué que ces contrats ne pouvaient pas faire disparaître les incertitudes liées aux risques d’inexécutions contractuelles. L’incertitude, paradoxalement, peut venir de l’immutabilité des contrats intelligents. D’une part, les contrats intelligents sont totalement insensibles au monde extérieur, que ce soient les évènements extérieurs à la blockchain, comme une pandémie, ou les règles légales. Ils s’exécuteront donc même s’ils ne sont pas juridiquement valides, par exemple en raison d’un objet illicite ou immoral ou en raison de la minorité d’une des parties, et ce même en présence d’un hypothétique jugement les annulant13. En effet, l’anonymat de la blockchain fait qu’il sera impossible en pratique de remettre en cause l’opération réalisée ou à réaliser. Même si l’anonymat pouvait être levé, la blockchain ayant des utilisateurs dans le monde entier, les recours seront en pratique limités. D’autre part, en raison des caractéristiques de la blockchain, un contrat intelligent, une fois inséré, ne peut pas être modifié, y compris lorsque toutes les parties sont d’accord. Le programme du contrat intelligent peut toutefois prévoir la possibilité de stopper son exécution automatique et certains informaticiens proposent des programmes très complexes afin de pouvoir modifier les contrats intelligents une fois ces derniers insérés dans la blockchain. Cependant, en principe, un contrat intelligent, sauf lignes de code spécifiques, s’exécutera même si les parties souhaitent modifier ses termes. Cela pourra également être le cas même si le programme prévoit la possibilité d’empêcher son exécution, si par exemple les parties ne sont pas d’accord sur les modifications à apporter et si la partie qui a le plus à perdre refuse de stopper le contrat intelligent avant l’aboutissement des négociations.

L’incertitude des contrats intelligents provient également du fait qu’ils peuvent être utilisés pour des activités illégales, comme la vente de drogue ou le blanchiment d’argent. La blockchain étant décentralisée, elle crée ses propres règles et elle ignore la plupart du temps les lois étatiques. De plus, en raison de sa structure en réseau, il est quasiment impossible de la fermer puisqu’il suffit qu’elle reste stockée sur un seul ordinateur pour qu’elle puisse réapparaître.

Une autre incertitude, économique cette fois, provient du fait que les blockchains, comme Bitcoin ou Ethereum, fonctionnent avec leur propre monnaie. Or cette monnaie connaît des fluctuations importantes. En conséquence, si le contrat intelligent ne s’exécute pas immédiatement, le montant transféré, rapporté en euros par exemple, peut s’avérer beaucoup plus élevé ou beaucoup plus faible qu’anticipé par les parties. L’incertitude financière pèse également sur le coût du contrat intelligent. En effet, insérer un tel contrat dans une blockchain a un coût qui varie en fonction du nombre de lignes de code et du nombre de transactions qui sont en attente d’être insérées dans la blockchain. Si, sur la blockchain Ethereum par exemple, le coût moyen d’une transaction est souvent compris entre 1 et 2 dollars, il est arrivé qu’il soit supérieur à 6 dollars. Une autre incertitude provient du fait que, sur cette blockchain, les transactions ne sont pas insérées uniquement dans l’ordre de leur arrivée mais également en fonction du prix proposé (gas) pour l’insérer dans la blockchain. Sur Ethereum, un calculateur détermine le montant moyen pour trois niveaux de rapidité : rapide avec en principe une insertion en moins de 2 minutes ; moyen avec en principe une insertion en moins de 5 minutes ; faible avec une insertion d’environ 15 minutes. Si les frais de transaction proposés sont inférieurs au coût faible indiqué sur la blockchain, la transaction pourra ne jamais être insérée. Ce système soulève des difficultés concernant les dates faisant foi même si, sur la blockchain, cette difficulté n’existe pas puisque le contrat intelligent s’exécute dès qu’il a « connaissance » que la condition (fonction « si ») est remplie, c’est-à-dire que seul compte le moment où cette condition est insérée sur la blockchain, peu important la date à laquelle elle a été envoyée pour être insérée et peu important également qu’une autre condition, éventuellement contradictoire, ait été envoyée avant mais n’ait été insérée qu’après en raison de frais de transaction proposés faibles.

Il existe également des incertitudes liées au langage informatique. En effet, si le contrat intelligent n’est pas bien sécurisé, et en raison du fait que ce qui est stocké sur la blockchain est public, des tiers pourront par exemple récupérer les sommes déposées sur un compte. Ces failles dans la sécurité ne concernent pas que les informaticiens créant occasionnellement des contrats intelligents. Un hacker a par exemple profité d’une faille dans une organisation autonome décentralisée (OAD) stockée sur la blockchain Ethereum pour détourner 3 millions d’ethers (50 millions de dollars à l’époque). La faille utilisée bloquait toutefois les fonds détournés pendant un délai de 28 jours. Vitalik Buterin, co-fondateur d’Ethereum, proposa de bloquer ce compte afin que le hacker ne puisse pas récupérer l’argent14. Le hacker publia alors une lettre ouverte15 dans laquelle il explique qu’il a simplement utilisé les fonctionnalités du programme, et que, en conséquence, l’argent avait été acquis légitimement. Il ajoute que les voleurs seraient les mineurs qui accepteraient de modifier la blockchain afin de l’empêcher de récupérer l’argent. En d’autres termes, le hacker explique que, les contrats intelligents se suffisant à eux-mêmes, tout ce qu’il est possible de leur faire faire est autorisé, même si cette utilisation n’a pas été envisagée lors de sa programmation. En l’espèce, les membres de la blockchain ont décidé de réécrire les blocs afin de redonner à chaque investisseur sa mise. Cette décision, conformément aux règles de la blockchain, a été prise à la majorité. Cette réécriture de la blockchain est toutefois une exception, les programmateurs peuvent donc en principe librement profiter des failles des contrats intelligents stockés sur la blockchain.

Notes de bas de pages

  • 1.
    https://lext.so/6cNX5Z.
  • 2.
    https://lext.so/BcwZyW.
  • 3.
    https://lext.so/VBexsO.
  • 4.
    D. Wechsler, La mesure de l’intelligence de l’adulte, 1956, PUF, p. 3-4.
  • 5.
    « World’s first unbreakable contracts, no more middlemen, no more lost funds on exchanges. No more fear, uncertainty & doubt ! »
  • 6.
    Le programme Fizzi a été arrêté en 2019, faute de clients intéressés.
  • 7.
    Pour plus de détails, v. infra « un contrat sans intermédiaire ».
  • 8.
    https://lext.so/OjyIGX.
  • 9.
    Pour plus de détails, v. infra « pas d’incertitude ? ».
  • 10.
    Les mineurs reçoivent de l’argent pour chaque bloc ajouté à la blockchain.
  • 11.
    S. Meiklejohn, M. Pomarole, G. Jordan, K. Levchenko, D. McCoy, G. M. Voelker et S. Savage, « A Fistful of Bitcoins : Characterizing Payments Among Men with No Names », https://lext.so/i_vNJS.
  • 12.
    Le programme renvoyant à la page de suivi du transporteur.
  • 13.
    Sur les possibilités d’escroquerie, v. « pas d’incertitude ».
  • 14.
    https://lext.so/bZkLwP.
  • 15.
    https://lext.so/1hWOm8.
X