Cet article est la traduction intégrale en français de l’article “‘Unpacking the term ‘Smart Contract’” rédigé initialement par Pelle Braendgaard et traduit par ConsenSys Media pour Ethereum France. Son objectif est de rendre compréhensible le terme « smart contract », dans la lignée de l’article « Smart-Contract ou le contrat auto-exécutant » .

De contrat à smart contract sur Ethereum. J’ai toujours été fasciné par la définition que Nick Sazbo donne des smarts contracts. J’ai joué avec les premières versions expérimentales du concept, et puis Ethereum a sorti sa première implémentation concrète.

Que sont les smart contracts ?

Les smart contracts sont essentiellement des clauses qui sont programmés pour exécuter des actions spécifiques.

Sur Ethereum, ce qu’on appelle contrat est un morceau de code qui existe sur la blockchain. Le contrat est créé lors d’une transaction, qui est exécutée par toutes les noeuds connectées sur la blockchain. Les parties et leurs droits spécifiques sont conservés sous forme de données et de code sur la blockchain elle-même. Les parties peuvent accéder à leurs droits en utilisant les fonctions qui ont été prédéterminées par le smart contractChaque appel aux fonctions est une transaction sur Ethereum. Le code de cette fonction est exécuté par chaque noeud présent sur le réseau Ethereum.

Un smart contract dans le contexte d’Ethereum n’est pas nécessairement un contrat légal, mais peut a priori l’être. Cet article ne rentrera pas en détail sur l’architecture de la blockchain Ethereum mais se concentrera sur la notion de smart contracts.

Un contrat de séquestre simplifié

Une séquestre est traditionnellement un contrat légal dont un tiers de confiance détient le contrôle pour le compte d’un acheteur ou vendeur, par exemple.

Imaginons que je veuille acheter la voiture d’Alice. Alice n’habite pas dans la même ville que moi mais elle peut faire livrer la voiture en question. Je ne veux pas lui envoyer la somme que je lui dois sans recevoir la voiture au préalable, car je risquerais de ne pas la recevoir.

Il nous manque un élément pour garantir le succès de la transaction. Ce qui nous manque est la tierce partie, le tiers de confiance. Un tiers de confiance est par exemple un avocat, une banque ou un service spécialisé.

Maintenant, je peux mettre en place un contrat entre Alice, le tiers de confiance Bob, et moi. . J’envoie le versement à Bob, le tiers de confiance, qui le garde jusqu’à ce que je confirme la réception de la voiture. Il ne donnera les fonds à Alice qu’avec cette confirmation.

Le contrat :

Je  (l’acheteur) verse une caution de $10,000 à Bob (le tiers de confiance) qui gardera cette somme en sécurité dans son compte de banque jusqu’à ce que l’acheteur confirme l’arrivée d’une 1996 Mazda Protegé (la voiture) de la part d’Alice (la vendeuse). Une fois la transaction confirmée par l’acheteur,  le tiers de confiance peut verser les fonds à la vendeuse. Si la vendeuse ne livre pas la voiture à l’acheteur avant le 1er Avril, le tiers de confiance rendra la caution à l’acheteur.

Ecriture d’un contrat de séquestre sous forme d’un smart contract

Créons une implémentation simple d’un contrat de séquestre avec Solidity, qui est devenu le langage de référence pour développer des smart contracts sur Ethereum.

Il n’y a rien à craindre si vous n’êtes pas développeur. Vous n’êtes pas obligés de connaître le code pour pouvoir suivre :

Code source pour un contrat de séquestre simple

Ce contrat est créé par l’acheteur et comprends deux parties ; il donne la permission au tiers de confiance de verser les fonds au vendeur ou d’annuler la transaction et rendre les fonds à l’acheteur.

L’acheteur crée le contrat à l’aide d’une application dédiée sur internet. Puis, il l’envoie au réseau Ethereum avec les données concernant le vendeur et l’agent (leurs adresses ethereum) et la valeur du bien (en ether). Tout comme le bitcoin, la monnaie principale de la blockchain Bitcoin, ether est la monnaie du réseau d’Ethereum. Il est tout à fait possible de créer d’autres formes de monnaies sur Ethereum mais gardons cet article simple pour l’instant.

Cet exemple de cas d’usage d’un smart contract est-il pertinent ?

En d’autres termes, est-ce que ce smart contract est vraiment si ‘smart’ que ça ?

Puisque le tiers de confiance ne peut pas accéder aux fonds directement, il peut seulement les transmettre au vendeur ou les rendre à l’acheteur. Ceci est déjà une amélioration du procédé traditionnel.

Remarquons qu’ici, il n’est pas spécifié de clauses pour le transfert des fonds vers l’acheteur ou pour l’annulation.

Dans le système traditionnel, un tel contrat aurait une clause d’échéance. Ces propriétés peuvent êtres intégrés à Ethereum, mais sont plus complexes.

Avons nous besoin d’un tiers de confiance ?

Idéalement, nous voulons éliminer le besoin d’un tiers de confiance pour les smart contracts. Nous avons réussi à réduire notre dépendance au tiers de confiance en limitant son pouvoir d’intervention sur les fonds. Pourtant, ce serait encore mieux qu’il y ait une exécution automatique du contrat. Si l’autre partie du contrat (le transfert du bien) est effectuée sur le réseau Ethereum, il est possible de remplacer le tiers de confiance par un autre smart contract (ndt : il est également possible de faire appel à des tiers de confiance spécialisés, dits « Oracles », concept exploré ici).

Un smart contract est-il vraiment un contrat?

Premièrement, voyons ce qu’est un contrat. Selon Wikipédia…

Un contrat est un accord de volonté en vue de créer une ou des obligations juridiques. C’est un engagement volontaire, formel ou informel, seul ou entre plusieurs parties et reconnu par le droit.

  • Formel ou informel, le contrat n’est pas soumis, sauf exceptions, à des exigences de forme. Cette liberté est le corollaire de l’autonomie des volontés.
  • Au moins deux parties sont liées par le contrat, ce qui distingue le contrat d’un simple engagement individuel ou d’un droit réel, comme la propriété.
  • Reconnu par le droit, le contrat diffère ainsi de la promesse qui ne nécessite pas de consécration officielle

Tout seul, un smart contract, ne satisfait pas aux critères requis pour répondre à la définition d’un contrat. La création du smart contract pourrait être interprétée comme une offre de l’acheteur, mais ceci ne prend pas en compte le tiers de confiance ni le vendeur pour accepter la transaction.

Le contrat ne considère pas la logistique du vendeur ni de l’acheteur (la livraison de voiture) ni la logistique de l’agent (ses services et ses honoraires).

Ceci ne rend pas l’utilisation d’un smart contract impossible. En réalité, tant qu’une partie de la communication entre les acteurs de l’échange se fait hors du contrat, le contrat peut prendre place.

Le vrais contrat pourrait être implémentés comme application classique sur internet avec un intermédiaire comme tiers de confiance (comme c’est le cas pour eBay) ou dans une dApp (terme utilisé pour décrire un nouveau type d’application qui est décentralisé sur Ethereum).

L’important est que toutes les acteurs de chaque transaction comprennent le contrat et le rôle du smart contract.

Commentaires

Commentaires

  1. Fabrice CROISEAUX
    23 décembre 2016 - 21h27

    Excellent article. J’aimerais avoir votre avis sur mon article sur le même thème mais abordé avec un angle sensiblement différent : Blockchain et gouvernance. Pourquoi un Smart Contract n’est pas un Contrat. https://www.linkedin.com/pulse/blockchain-et-gouvernance-pourquoi-un-smart-contract-nest-croiseaux?trk=pulse_spock-articles.
    Bien à vous
    Fabrice

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *