Nick Szabo, le père des « smart contracts », illustrait le fonctionnement des smart contracts en les comparants à un distributeur automatique de boisson en raison de leur automaticité. Quand vous mettez le montant exact dans la machine, vous recevez votre cannette de manière certaine (sauf si elle reste bloquée, mais s’agit là d’un autre débat). Une fois que les paramètres initiaux ont été fixés, un smart contract sera également exécuté indépendamment des événements extérieurs ou de la modification de la volonté des parties.
La définition donnée sur le site web de Monax est plus précise : « Script hébergé sur une blockchain représentant une promesse unilatérale d’assurer une exécution fondée sur des transactions qui sont envoyées au script. « Nous allons décomposer cette définition afin de mieux comprendre les différents aspects d’un smart contract:
– Un smart contract est un script…
Un smart contract est un programme d’ordinateur de la même manière que tout autre programme. Le langage de programmation utilisé dépend de la plate-forme ou plutôt de la blockchain sur laquelle le smart contract est hébergé. En ce moment, la plate-forme de smart contracts la plus populaire est Ethereum et « Solidity » le langage le plus couramment utilisé.
– …Hébergé sur un blockchain…
Une fois que le programme est finalisé, il est déployé (ou compilé) et stockés dans la blockchain. Une adresse (en hexadécimal) est alors émise pour ce smart contract. Il s’agit de l’adresse où les transactions seront envoyées pour activer le contrat.
Il est important de rappeler que les blockchains développées depuis la création du bitcoin peuvent exécuter le code contenu dans des Smart Contracts. Les Blockchains ne sont plus simplement des bases de données décentralisées (comme la blockchain bitcoin), ils sont aussi « Turing Complet », ce qui signifie qu’elles sont en mesure d’exécuter des programmes plus complexes (ceux des smart contracts).
-.. .et activé par les transactions.
Sans entrer dans trop de détails, le programme du smart contract contient une ou plusieurs fonctions qui seront activées par des transactions envoyées à partir des comptes utilisateurs. Les fonctions sont des commandes, ou « exécution déterminée » selon la définition de Monax, qui peuvent être commandées automatiquement ou par des transactions externes.
Ces deux définitions mettent en lumière les aspects technologiques des smart contrats, ainsi que le caractère automatique et inexorable de leurs exécutions, mais elles ne font pas référence à leurs interactions avec le monde réel et la pratique juridique qui en découle.
Les contrats entre êtres humains tels que nous les connaissons actuellement sont extrêmement complexes dans leur exécution. Beaucoup d’événements imprévisibles au moment de la signature du contrat ne peuvent être incorporés dans les contrats. C’est la raison pour laquelle nous avons des courts et des juges dont le rôle est d’interpréter le contrat et essayer de déduire les intentions initiales des parties à la lumière de nouveaux éléments.
Il est impossible de coder des événements imprévisibles dans un smart contract au moment de la création du contrat. Mais le smart contract exécutera automatiquement les termes, indépendamment de l’intention des parties, ce qui ne laisse aucune place à l’interprétation d’un juge. C’est pourquoi il est souvent considéré que le « Code is Law », c’est à dire le code du contrat est la seule loi applicable au contrat, même lorsque ce code est erroné ou ne reflète pas l’intention des parties.
Mais étant donné que les smart contrats sont mis en œuvre dans un cadre juridique national et international (en constante évolution), le code ne peut pas être la seule loi applicable au contrat régissant les relations humaines. Pour cette raison, les smart contrats devront devenir adaptables ou modifiables.
Nous allons comparer les contrats traditionnels avec Smart contract afin de mieux comprendre les principales différences:
Comme nous pouvons le voir dans le tableau ci-dessus, les Smart Contract améliorent de nombreuses fonctions de nos bons vieux contrats papier, mais deux points restent problématiques pour qu’ils deviennent applicables à nos vies de tous les jours:
– la difficile lisibilité des smart contracts.
– L’impossibilité d’adapter les contrats aux événements externes en raison de leur exécution immédiate et irrévocable.
Nous discuterons de ces deux points en décrivant les solutions qui sont actuellement testées pour permettre l’adoption massive des smart contrats.
COMMENT POUVONS-NOUS FAIRE DES CONTRATS LISIBLES?
Clark, Bakshi et Braine dans leur essai intitulé « Smart Les modèles de contrat : fondations, paysage de conception et les orientations de la recherche » ont été les premiers à définir les smart contracts en différenciant la composition technique et les aspects juridiques des smart contracts. En d’autres termes, ils croient que le code est exécuté et stockées sur le blockchain qu’ils appellent » Smart Contract Code », et la mise en œuvre juridique de cette technologie, qui est appelée « Smart Legal Contrats », doivent être analysés séparément.
SMART CONTRAT CODE
Le Smart Contrat Code fait référence exclusivement au programme d’ordinateur qui est le contrat smart.
Le but de cet article n’est évidemment pas d’entrer dans les détails du langage de programmation. Cependant, il me semble intéressant de vous donner un aperçu de ce qui est en fait un contrat Smart. Si nous prenons l’exemple de la création d’un jeton sur l’Ethereum blockchain, la langue utilisée est la solidité, qui est le plus couramment utilisé pour programmer la langue sur cette plate-forme.
Cet exemple est un extrait d’un des tutoriels proposés sur le site web de l’Ethereum et correspond à une version très simplifiée de la création d’un jeton.
Comme vous pouvez le voir, le nom du contrat est « MyToken » et il est constitué de deux fonctions. La fonction « MyToken » (qui a le même nom que le contrat, également appelé « Constructeur ») est utilisée une seule fois lors de la création du smart contrat pour initialiser les conditions, c.-à-d. par exemple pour déterminer le nombre de jetons qui seront mis en circulation et les stocker dans l’espace mémoire créé sur la blockchain.
La deuxième fonction est appelée « transfert » et une fois déclenchée, va lancer le transfert de jetons d’un utilisateur à un autre. Ces fonctions sont activées par le biais de transactions envoyées par les utilisateurs à partir de leurs comptes extérieurs. Cet espace de mémoire où l’information du smart contrat est stockée est créé par le « mapping ».
Notez que même si « Solidity » (dérivé de Javascript) est de loin le langage la plus utilisé pour la programmation des smart contrats sur Ethereum, il est également possible de coder dans d’autres langages tels que Serpent (dérivé de Python), LLL ou XML.
SMART LEGAL CONTRACT
L’expression « Smart Legal Contract » fait référence à l’environnement juridique dans lequel évolue le smart contract et à la notion de contrat Ricardien développé par Ian Grigg. L’idée derrière un contrat Ricardien est de combiner un contrat traditionnel avec un logiciel pour gérer plus efficacement l’exécution et l’interprétation des contrats(1). Par extension, le concept de Smart Legal Contrat se réfère surtout aux Smart Contracts Template qui sont proches des contrats Ricardien, mais inclut également l’exécution automatique des contrats Smart (2).
(1) Contrats Ricardien
Ian Crigg définit un contrat Ricardien comme « un document unique qui est a) un contrat offert par un émetteur à un bénéficiaire, (b) pour un titre de valeur détenus par le bénéficiaire et géré par l’émetteur, c) facile à lire par une personne (tels qu’un contrat), (d) lisible par un programme (tel qu’une base de données), (e) exécutés de façon numérique, f) incorporant des clefs cryptographiques et l’information sur un serveur, et g) reliés à un seul identifiant sécurisé ».
En bref, c’est un contrat standard sur un document Word ou PDF écrit en français, mais certains des termes de ce contrat (le nom des parties, l’adresse, les prix par exemple) sont des variables qui sont modifiables et directement liées à une base de données par le biais d’un processus cryptographique. Vous êtes sûrement tombé sur de tels contrats sans même le savoir.
Les Contrats Ricardien présentent plusieurs intérêts :
1 – une extraction automatique et le stockage des données du contrat : Tel qu’illustré dans le diagramme ci-dessous, le document et les données sont extraites et soumis à un hachage cryptographique (tels que SHA-1) à partir duquel les informations sont organisées et stockées. Le principe de l’empreinte utilisée dans le cadre du contrat Ricardien est le même que celui utilisé dans le « Proof of Work » et, par conséquent, les termes conclus dans le contrat ne peuvent être modifiés sans changer complètement le hachage cryptographique initialement obtenu.
2 – Sécurité : contrats Ricardien : la signature de l’émetteur du document. Cette signature est incorporée dans le hachage cryptographique et ne peut donc être modifié sans produire un hash différent.
3 – négociables par les humains : vous n’avez pas à comprendre la partie derrière le contrat pour l’utilisation du contrat. Il peut être négocié par un avocat et vos clients. Puisque son exécution n’est pas automatique, il n’est pas un smart contract, les parties peuvent également re-négocier le contrat et l’adapter aux nouveaux événements.
OPENBAZAAR
OpenBazaar est un site e-commerce décentralisé et open source. La différence entre OpenBazaar et les plateformes de e-commerce traditionnelles que nous utilisons actuellement (Amazon, E-Bay, Leboncoin…), c’est qu’Openbazaar ne se positionne pas entre un acheteur et un vendeur en prenant une commission sur chaque transaction. Au lieu de visiter un site Web, vous devrez télécharger et installer un logiciel (le protocole Openbazaar) qui vous donne accès à un réseau de pairs qui ont le même objectif que vous, acheter ou vendre. Les échanges et les paiements sont effectués directement entre les membres du réseau sans intermédiaire d’une plate-forme de e-commerce pour la mise en œuvre ou d’une compagnie de carte de crédit/PayPal pour le paiement. De plus, comme pour la plupart des applications décentralisées, vous n’avez pas à divulguer vos renseignements personnels.
Nous le mentionnons ici OpenBazaar parce qu’ils utilisent des contrats Ricardien pour connecter les membres du réseau.
En téléchargeant le logiciel, le protocole OpenBazaar, vous serez capable de créer une annonce décrivant ce que vous souhaitez vendre et proposer un prix, comme vous le feriez sur n’importe quel site de e-commerce traditionnel. Cette annonce est ensuite envoyée sur le réseau afin que chaque membre puisse y accéder par une simple recherche de mot-clé. Si deux membres s’accordent sur un prix, le logiciel va créer un contrat Ricardien comprenant la signature des deux parties et l’envoie à un tiers, membre du réseau « le médiateur », qui aura pour mission de vérifier le contrat et créer un compte bitcoin multisig pour assurer le paiement.
La différence avec les smart contrats, c’est que ces contrats ne s’appliquent pas automatiquement, les parties sont libres de ne pas acheter ou vendre. Leurs exécutions dépendent toujours de la volonté des parties qui le signent cryptographiquement et de l’animateur de la relation, ce qui nous mène à la dernière notion : Smart Contrat Template.
(2) Smart Contrat Template
La notion de Smart Contrat Template est décrite dans la seconde partie de l’article écrit par Clark, Bakshi et de Braine, en ces termes : « Les Smart Contrat Template sont basés sur l’architecture triple de contrat Ricardiens de Grigg que sont le texte, les paramètres et le Code. Dans cette architecture, les paramètres opérationnels clés (…) sont recueillis à partir du texte juridique et transférés au code du smart contract qui fournit une exécution automatisée. »
Selon le même rapport, cinq conditions doivent être remplies pour qu’un modèle de smart contract puisse exister:
1- Une méthode pour créer et éditer des documents juridiques, y compris le texte et les paramètres spécifiques à chaque situation juridique. Ces méthodes existent déjà et vont du simple documents Word ou PDF au logiciels plus avancés tels que Contract Express (mis au point par Thomson Reuters).
2- Un format standard pour le stockage, l’accès et la transmission des documents juridiques. Cette condition vise à permettre le transfert des contrats entre les contreparties dans un format acceptable pour tous, tels que XML, JSON ou Markdown.
3- Protocoles à exécuter des smart contracts (avec ou sans signature).
4- Méthodes pour relier les Smart Contrat Template (le texte juridique) au Smart Contract Code (le programme informatique). Une solution pourrait être comme celle utilisée par les contrats Ricardien, c.-à-d. réaliser un hachage cryptographique du Smart Contrat Template qui serait stocké dans le contrat Smart Code.
5- Méthodes pour rendre accessibles les smart contrats sous une forme acceptable par les lois des pays dans lesquels ils s’appliquent. C’est exactement les défis que tentent actuellement résoudre CommonAccord, Common Language for Augmented Contract Knowledge (Clack) or Legalese.
R3 CORDA
Tous ces éléments semblent avoir été rassemblés par le R3 Corda « Fabric » qui a l’intention d’utiliser les Smart Contrat Template pour connecter les banques et accélérer considérablement les processus de transactions.
Au cours d’une présentation organisée par Barclays, Lee Brain, l’un des principaux créateurs des Smart Contrat Template, a décrit R3 Corda « Fabric » avec ces mots :
« Ils fournissent une manière élégante de connecter le texte des accords juridiques à la logique économique du contrat. J’insiste sur le fait que les processus de documentation juridique peut être long, fastidieux et manuel. Les Smart Contrat Template pourraient simplifier tout cela et, parce qu’ils sont des modèles conçus pour être réutilisés, ils pourraient conduire l’industrie à adopter des normes qui sont légalement exécutoire »(…) »cela a un énorme potentiel pour permettre aux banques de mutualiser les coûts sur l’ensemble de l’industrie par l’utilisation de composants communs – le potentiel d’un changement de paradigme dans un domaine où il y a des milliards de pages d’accords juridiques. »
L’idée du consortium R3 est de construire un réseau fermé de banques s’appuyant sur une ou plusieurs blockchains en vue de stocker toutes leurs transactions, mais aussi leurs contrats juridiques. Le but ultime étant de retirer du circuit des transactions les back/middle offices, dépositaires, CSD et les Chambres de compensations qui sont devenus extrêmement encombrantes depuis la promulgation des règlements financiers (MIFID, EMIR, BÂLE…) décidée par le G20 après la crise de 2008.
Ces Smart Contrat Template sont possible parce que les contrats qu’ils remplacent sont fortement standardisés et aussi parce que toutes les conditions légales peuvent être pré-négociés au niveau du réseau. Ce genre de set-up n’est également possible que lorsque les parties sont en mesure de discuter les autres termes en amont.
Pour cette raison, les Smart Contrat Templates sont bien adaptés pour les blockchains de consortium, qui sont des blockchains fermées où tous les participants sont connus et sélectionnés. Corda est la plateforme où tous les membres du Consortium de R3 sont capables d’échanger des smart contrats et conclure des transactions. Toutes les conditions légales de l’ISDA (contrat négocié par les banques pour échanger des produits dérivés) que les Smart Contrat Template vont remplacer, ont été pré-convenues au niveau de l’industrie.
PEUT-ON VRAIMENT FAIRE DES SMART CONTRACTS PLUS FLEXIBLES ?
Au-delà de la mise en œuvre de Smart Contract Templates, utiliser une blockchain fermée présente plusieurs avantages. Cela offre en effet la possibilité d’adapter l’accès à ces contrats sur la blockchain et même de les mettre à jour en cas de besoin. De telles caractéristiques ne serait pas possible pour des smart contrats stockés sur une blockchain ouvert/public, même si certaines solutions existent.
La problématique est en effet différente pour les smart contrats qui sont hébergés sur des registres publics tels qu’Ethereum, parce qu’il est impossible de modifier les termes d’un contrat qui a été déployée, c.-à-d., compilées par l’Ethereum Machine virtuelle.
La seule façon d’introduire une certaine souplesse dans ces smart contracts est de séparer les données de la logique du contrat, soit en créant des contrats différents soit en utilisant de bibliothèques pour l’externalisation de la logique. Mais l’une ou l’autre option peut être compliquée à mettre en œuvre et ne serait pas suffisante pour couvrir toutes les spécificités des contrats juridiques complexes ou de résoudre la question de la confidentialité des contrats accessibles librement sur la blockchain.
COMMNACCORD
C’est pourquoi des initiatives comme « CommonAccord » essayent de trouver d’autres solutions pour simplifier l’utilisation des smart contracts. Si nous résumons les termes de l’un de ses inventeurs, James Hazard, « CommonAccord peut être décrit comme une communauté de documents juridiques, une sorte d’un code civil 3.0 sur GitHub et compatible avec les systèmes d’opérations décentralisées basées sur un blockchain ».
Plus précisément, « CommonAccord est un langage de programmation orienté objet qui prend en charge la création d’un système complet de textes juridiques qui sont codifiées. Le but de CommonAccord est de rendre les documents si flexibles qu’une grande partie du texte disparaît, ne laissant qu’aux parties la négociation des points spécifiques et une relation très claire. Ces relations peuvent à tout moment être traduite dans un document juridique pour effectuer des audits ou le signer. »
L’ambition de CommonAccord est donc de créer des textes juridiques normalisés reconnus par tous et stockées dans des bases de données librement accessibles, comme Github pour le logiciel ou Incoterms pour transactions commerciales. Cela ouvre un monde où tout le monde, et plus seulement les juristes, pourront créer des contrats (smart ou non) par l’assemblage de textes pré-écrits, comme les programmeurs codent actuellement (en assemblant des morceaux de code existants dans des bibliothèques). Tous les avocats devraient commencer à apprendre un langage de programmation parce que « l’Uberization » de leur profession arrive rapidement.
CONCLUSION :
Les Smart contrats sont déjà une réalité mais seulement pour les industries ayant des contrats spécifiques normalisés au sein d’un réseau fermé. Nous sommes loin de voir l’application de ces contrats dans notre vie quotidienne, mais les choses vont vite et nous devrions être prêts pour cette révolution inévitable.
SI VOUS AVEZ AIME CET ARTICLE N’HESITEZ PAS A LE PARTAGER ET A LAISSER VOS QUESTIONS EN COMMENTAIRE