Le smart contract c’est pas tout récent 

Ce concept a été apporté en 1996 par Nick Szabo, un informaticien, juriste et cryptographe américain, qui voulait réduire le niveau de risque entre des parties contractantes. Il écrit dans son article “Formalizing and Securing Relationships on Public Networks” :

« Les contrats intelligents réduisent les coûts de transactions mentaux et computationnels imposés par les mandants, les tiers ou leurs outils. Les phases contractuelles de recherche, de négociation, d’engagement, de performance et de décision constituent le domaine des contrats intelligents. Cet article couvre toutes les phases, en particulier la performance. Les contrats intelligents combinent des protocoles et des interfaces utilisateurs afin de faciliter toutes les étapes du processus contractuel. Cela donne de nouvelles façons de formaliser les relations qui sont bien plus fonctionnelles que leurs ancêtres inanimés inscrits sur du papier. »

L’idée principale, derrière le contrat intelligent, est de pouvoir enregistrer des contrats directement en langage informatique. Ceux-ci  seraient, non pas exécutés par des individus (tiers de confiance), mais automatiquement déclenchés lorsque des conditions seraient remplies. Jusqu’ici rien de nouveau. A l’heure actuelle, les terminaux de paiement peuvent être considérés comme des contrats intelligents.

La carte bancaire et le distributeur de billets sont des sortes smart contracts

Prenons l’exemple du distributeur automatique de billets. Lorsque vous choisissez le montant à retirer sur le distributeur automatique, imaginons 50 euros, et que vous insérez votre carte bleue, les algorithmes informatiques vont (automatiquement) détecter votre compte bancaire en fonction de la carte insérée, puis vous recevrez (si vous êtes autorisés) les fonds par la fente en bas de la machine.

Vous pourriez me dire “Mais finalement le smart contract n’est pas nouveau du tout !”. Oui mais dans le cas de notre distributeur automatique, le tiers de confiance est la banque (un organe de contrôle centralisé) alors qu’avec l’apparition de la blockchain et de son ensemble d’ordinateurs connectés, le tiers de confiance est transféré de la banque au réseau décentralisé, autrement dit à l’ensemble des ordinateurs qui le constituent. Si le contrat intelligent n’est pas nouveau conceptuellement  parlant, le validateur des transactions lui, est technologiquement inédit. La partie suivante va être un peu technique mais nécessaire pour couvrir tous les aspects des contrats intelligents. Ne paniquez pas, j’ai concocté  des cas d’utilisation un peu plus bas.

Des contrats immuables soutenus par le code informatique

Les contrats intelligents sont essentiellement des accords automatisés, auto-exécutables dont les termes entre le créateur du contrat et le destinataire sont inscrits dans des lignes de code de la blockchain, ce qui le rend immuable et irréversible. Nous pouvons considérer le smart contract comme la version numérique d’un contrat papier standard. Sauf que cette fois-ci, l’application et l’exécution du contrat ne nécessitent pas l’intervention humaine mais bel et bien celle de la blockchain. Ces contrats ont été largement popularisés par Ethereum, la deuxième blockchain la plus populaire du monde derrière Bitcoin. 

L’inscription d’un contrat sur la blockchain permet une réplication de celui-ci sur de nombreux ordinateurs qui composent le réseau, ce qui garantit la facilitation et l'exécution transparente et sécurisée des termes du contrat. De plus, un réseau décentralisé permet d’être résistant aux pannes et aux éventuelles attaques de hacker, étant donné que la blockchain ne comprend pas un seul point central unique. Comme nous commençons à le comprendre dans cette saga, une entité centralisée (une banque, une entreprise, un organisme) est plus exposée au piratage de données par rapport à un réseau décentralisé mondial, car il ne faudrait pas dans ce cas pirater une base de données unique mais l’ensemble des bases de données de la moitié des ordinateurs du réseau. Un quantité d’énergie colossale devrait être générée et qui a, pour l’heure, l’effet de décourager tout pirate informatique. Avec quasiment 15 000 validateurs sur le réseau Bitcoin, le piratage semble extrêmement compliqué pour ne pas dire impossible et l’histoire prouve que Bitcoin s'est révèlé inviolable depuis sa création, soit depuis 2008. 

Nombre de noeuds validateurs sur le réseau Bitcoin
Source : Bitnodes.

 

Revenons-en à nos contrats intelligents. Les smart contracts sont généralement utilisés pour automatiser l'exécution d'un accord afin que toutes les parties puissent être sûres que les règles soient bien appliquées sans avoir besoin d'intermédiaires humains. Chaque partie s'engage à respecter les obligations légales convenues dans l'accord écrit une fois le contrat dûment signé. Des événements simples à automatiser comme déclencher un paiement ou encore enregistrer une expédition de colis peuvent faire l’objet d’un smart contract. 

Le fonctionnement d’un contrat intelligent

Fonctionnement smart contract
Source : Bitpanda

 

Détaillons un peu cette infographie.

Le fonctionnement d’un contrat intelligent

Pour bien comprendre son fonctionnement, il faut considérer le contrat avec la déclaration suivante : “SI l'événement X intervient ALORS l'événement Y interviendra”. Autrement dit, si les conditions sont remplies alors l’entente entre les parties peut-être honorée. Nous allons ici prendre plusieurs exemples pour bien comprendre :

Le marché de l’aubergine thaï à la sauce smart contract

  • Un supermarché demande au cultivateur en question la livraison de 1000 aubergines
  • Une négociation formelle s’instaure entre le cultivateur et le supermarché pour déterminer le prix de vente. 
  • Une fois le prix déterminé, les deux parties déterminent les conditions suivantes au sein d’un smart contract :
  1. Date de livraison : 02/02/2022
  2. Quantité : 1000
  3. Prix de vente unitaire : 0,50$
  4. Facture : 500$

Faisons un exemple simple, mais nous pourrions imaginer des conditions supplémentaires comme des rabais sur le prix de vente si la livraison n’est pas honorée à temps ou encore annuler la commande si la qualité n’est pas au rendez-vous. Continuons.

  • Le supermarché met sous séquestre la somme associée : 1000$ au sein du smart contract et seront débloqués SI et seulement SI les conditions (mentionnées ci-dessus) sont réunies. 
  • Une fois que les aubergines ont été déposées et contrôlées par le supermarché, les fonds seront immédiatement débloqués pour le cultivateur.

En termes un peu plus techniques, l'idée d'un contrat intelligent peut être décomposée en quelques étapes. Premièrement, un contrat intelligent nécessite un accord entre deux ou plusieurs parties. Une fois établi, les deux peuvent convenir des conditions dans lesquelles le contrat intelligent sera considéré comme complet. La décision serait écrite dans le contrat intelligent, qui est ensuite crypté et stocké dans le réseau blockchain.

Une fois le contrat terminé, la transaction est enregistrée sur la blockchain comme n'importe quelle autre transaction. Ensuite, tous les nœuds (ordinateurs connectés au réseau) mettront à jour leur copie de la blockchain avec cette transaction, mettant à jour le nouvel « état » du réseau.

Sur la base de cet exemple prenons deux autres cas concrets d’utilisation possible :

L’achat d’une maison au fin fond de la Creuse 

Imaginons que Tommy veuille acheter la maison de vacances d’Etienne à Guéret. Cet accord est formé sur la blockchain Ethereum à l'aide d'un contrat intelligent. Ce contrat intelligent contient un accord entre les contractants.

Dans les termes les plus simples, l'accord ressemblera à ceci : "QUAND Tommy paiera Etienne 200 Ether, ALORS Tommy deviendra propriétaire de la maison ". Une fois que cet accord de contrat intelligent a été mis en place, il ne peut plus être modifié, ce qui signifie que Tommy peut se sentir en sécurité pour payer Etienne 200 Ether pour la maison.

Sans l'utilisation d'un contrat intelligent dans ce scénario, Tommy et Etienne devraient payer de nombreux frais à des sociétés tierces. Y compris la banque, un avocat et un courtier immobilier. Petit aparté conceptuel, une notion de confiance entre évidemment en jeu, aussi bien entre les deux individus et sur le réseau hébergeant le smart contract lui-même, mais nous y reviendrons un peu plus bas.

Assurance d’un vol Paris - Montréal

Tommy a eu le mal du pays dans le département de la Creuse. Il est sur le point de prendre un avion de Paris à Montréal. Pour ce faire, il envoie 5 $ de cryptomonnaies au contrat intelligent d’une compagnie d’assurance, imaginons la MAAF, et leur fournit son numéro de vol. Oui car Tommy préfère prendre une assurance en cas d’un retard ou d’une annulation sur son vol. La MAAF de son côté envoie 95 $ au contrat intelligent. Donc, il y a 100 $ dans le contrat intelligent.

Si le vol de Tommy est à l'heure, La MAAF reçoit 100 $ du contrat intelligent (Tommy aura perdu 5$ pour se couvrir du risque de retard/annulation). Mais si l'avion est en retard, 100 $ sont envoyés à Tommy automatiquement à partir du contrat intelligent.

Smart contract : tout n’est pas rose…

Un défi majeur dans l'adoption généralisée des contrats intelligents est que les parties devront très probablement s'appuyer sur un expert technique de confiance pour enregistrer l'accord des parties dans le code ou confirmer que le code écrit par un tiers (un programmateur) est valable. Un non-programmeur serait totalement incapable de comprendre le contrat intelligent le plus classique et est donc beaucoup plus enclin à faire appel à un expert afin d'expliquer ce que le contrat "dit". 

Pour nuancer, dans une certaine mesure, l'incapacité des parties contractantes à comprendre le code des contrats intelligents ne sera pas un obstacle à la conclusion d'accords de code. En effet, pour de nombreuses fonctions de base, des modèles de texte peuvent être créés et utilisés pour indiquer quels paramètres doivent être entrés et comment ces paramètres seront exécutés.

Par exemple, supposons une simple fonction de contrat intelligent qui extrait des frais de retard du portefeuille d'une contrepartie si un paiement défini n'est pas reçu à une date spécifiée. Le modèle de texte pourrait inciter les parties à saisir le montant du paiement attendu, la date d'échéance et le montant des frais de retard. Cependant, une partie peut souhaiter confirmer que le code sous-jacent exécutera réellement les fonctions spécifiées dans le texte, et qu'il n'y a pas de conditions ou de paramètres supplémentaires, en particulier lorsque le modèle décline toute responsabilité découlant de l'exactitude du code sous-jacent. Cet examen nécessitera un tiers de confiance ayant une expertise en programmation. Finalement, l'extinction des tiers de confiance ne semble pas si évidente et si facile à mettre en place.

De plus, les parties peuvent également souhaiter des déclarations écrites du programmeur indiquant que le code fonctionne comme prévu. Le résultat net est que pour les arrangements personnalisés qui ne reposent pas sur un modèle existant, les parties peuvent avoir besoin de conclure un accord écrit avec le programmeur de contrat intelligent, un peu comme le contrat que les parties peuvent conclure avec un fournisseur de services.

La dépendances aux données "hors-chaîne"

De nombreux cas d'utilisation proposés par des contrats intelligents supposent que le contrat intelligent recevra des informations ou des paramètres de ressources qui ne se trouvent pas sur la blockchain (“on-chain”) elle-même, appelées ressources hors chaîne (“off-chain”). Par exemple, supposons qu'un contrat intelligent d'assurance soit programmé pour transférer de la valeur à un assuré si la température tombe en dessous de 0 degré à tout moment. Le contrat intelligent devra recevoir ces données de température d'une source convenue. Cela pose deux problèmes. 

Premièrement, les contrats intelligents n'ont pas la capacité d'extraire des données de ressources hors chaîne. Au lieu de cela, ces informations doivent être « poussées » vers le contrat intelligent.

Deuxièmement, si les données en question sont en flux constant et que le code est répliqué sur plusieurs nœuds du réseau, différents nœuds peuvent recevoir des informations différentes, même à quelques secondes d'intervalle. Dans notre exemple, le nœud 1 (validateur sur le réseau) peut recevoir des informations indiquant que la température est de -0,1 degré, tandis que le nœud 2 peut recevoir des informations indiquant que la température est en fait de 0 degré. Étant donné qu'un consensus est requis entre les nœuds pour qu'une transaction soit validée, de telles fluctuations peuvent faire en sorte que la condition soit considérée comme "non satisfaite" ou du moins retardée.

Les parties contractantes pourront résoudre ce problème en utilisant un “oracle”. Les oracles sont des tiers de confiance qui récupèrent des informations hors chaîne, puis transmettent ces informations à la blockchain à des moments prédéterminés. Dans l'exemple précédent, l'oracle surveillerait la température quotidienne, déterminerait que l'événement de gel s'est produit, puis transmettrait cette information au contrat intelligent.

Exemple de l'oracle  “Chainlink”
Source : Chainlink.com

Bien que les oracles présentent une solution élégante pour accéder aux ressources hors chaîne, ce processus ajoute une autre partie avec laquelle les contractants devraient conclure un contrat pour effectuer un contrat intelligent, diluant ainsi, une nouvelle fois, quelque peu les avantages décentralisés des contrats intelligents. Cela introduit également un "point de défaillance" potentiel. Par exemple, un oracle peut rencontrer une faille système et être incapable de fournir les informations nécessaires, fournir des données erronées ou tout simplement faire faillite. Les contrats intelligents devront tenir compte de ces éventualités. 

Smart contracts : encore des défis à relever

L'un des principaux attributs des contrats intelligents est leur capacité à exécuter automatiquement et sans relâche des transactions sans intervention humaine. Cependant, cette automatisation et le fait que les contrats intelligents ne peuvent pas être facilement modifiés ou résiliés à moins que les parties n'intègrent ces capacités lors de la création du contrat intelligent, présentent certains des plus grands défis auxquels est confrontée l'adoption généralisée des contrats intelligents.

Par exemple, avec les contrats textuels traditionnels, une partie peut facilement excuser une violation simplement en n'appliquant pas les pénalités disponibles. Si un client est en retard de paiement d'un mois, le vendeur peut décider en temps réel que la préservation de la relation commerciale à long terme est plus importante que tout droit de résiliation ou pénalité de retard disponible. Cependant, si cette relation avait été réduite à un contrat intelligent, un retard de paiement aurait entraîné l'extraction automatique d'une pénalité de retard du compte du client ou la suspension de l'accès d'un client à un logiciel ou à un appareil connecté à Internet si c'est ce pour quoi le contrat intelligent a été programmé. L'exécution automatisée fournie par les contrats intelligents pourrait donc ne pas correspondre à la manière dont de nombreuses entreprises fonctionnent dans le monde réel.

En effet, étant donné que les blockchains sont immuables, modifier un contrat intelligent est bien plus compliqué que de modifier un code logiciel standard qui ne réside pas sur une blockchain. Le résultat est que la modification d'un contrat intelligent peut entraîner des coûts de transaction plus élevés que la modification d'un contrat basé sur du texte.

Opération complexe = contrat hydride ? 

A l’heure actuelle nous avons fort à parier que pour les contrats complexes, un contrat hybride utilisant du texte et du code devrait être plutôt privilégié. Le texte doit clairement spécifier le code du contrat intelligent auquel il est associé, et les parties doivent avoir une visibilité complète sur les variables qui sont transmises au contrat intelligent, comment elles sont définies et les événements qui déclencheront l'exécution du code.

En définitive nous comprenons que dans le cas d’un smart contract, sur une opération complexe du moins, un monde sans tiers de confiance est difficilement imaginable. De petites opérations transactionnelles peuvent être envisagées, mais dans le cadre de relations complexes, la nécessité de tiers de confiance semble inévitable, surtout pour les non initiés à la programmation. 

À cette fin, et lorsque l'on pense aux contrats intelligents, il est important de ne pas simplement penser à la façon dont les concepts et structures existants peuvent être portés sur cette nouvelle technologie. Au contraire, la véritable révolution des contrats intelligents viendra de paradigmes entièrement nouveaux que nous n'avons pas encore envisagés. 

Notons que la confiance que l’on porte dans le cadre d’un contrat est en réalité la confiance que l’on porte à un système entourant et garantissant le contrat : la loi, les représentants de la loi et plus généralement l’Etat. A l’heure actuelle, ce sont sur ces entités que repose notre confiance pour garantir la sécurité des contrats. Un déplacement de cette confiance vers un protocole décentralisé peuplé de mineurs ressemble à une utopie numérique lointaine, du vaudou. Mais pour combien de temps ? A très vite pour un nouvel épisode de la saga qui démystifiera une nouvelle facette du Web 3.0.

Episode précédent : Episode 6 : Le Web 3.0, les différentes blockchains et le cultivateur cambodgien

Episode suivant : Episode 8 : Le Web 3.0, la redéfinition de son identité numérique