Qu’est-ce qu’un smart contract?

Si vous avez entendu parler des blockchains de seconde génération et plus, vous avez forcément entendu parler des smart contracts (en Français contrat intelligent ou encore contrat auto-exécutant). Ces programmes ont marqué une rupture idéologique dans la façon de gérer des transactions au sein d’un réseau et ont ouvert la voie à de nombreuses utilisations (NFTs, DeFi, Gaming, Gambling, etc…) que nous connaissons actuellement.

Historiquement, le terme n’est pas lié à la blockchain, même si cette dernière l’a rendu populaire. Il a été employé par Nick Szabo en 1993.

Prérequis : Mais c’est quoi la blockchain?, Les générations de blockchains publiques

Les définitions

La première plateforme à l’avoir mise en place en propose la définition suivante : « un smart contract est un programme qui s’exécute sur la blockchain Ethereum. C’est un ensemble d’instructions et de données qui résident sur une adresse spécifique sur la blockchain Ethereum ». C’est une définition très centrée sur la blockchain Ethereum.

Par la suite, ce terme a été repris par les réseaux concurrents. En voici une définition plus généraliste que donne wikipédia : « les smart contracts sont des protocoles informatiques qui facilitent, vérifient et exécutent la négociation ou l’exécution d’un contrat, ou qui rendent une clause contractuelle inutile (car rattachée au contrat intelligent). Les contrats intelligents ont généralement une interface utilisateur et émulent la logique des clauses contractuelles« . 

Un smart contract est ‘juste’ du code informatique, nous sommes bien loin d’un engagement ou d’une convention qui crée des obligations et qui aurait une légalité juridique. Ce terme a suscité quelques controverses au point que le fondateur d’Ethereum Vitalik Buterin disait regretter l’adoption de ce terme dans un tweet du 13 octobre 2018, il lui préfère le terme de « persistent scripts » ou « digital vending machine« . Son objectif n’étant pas que ces contrats fassent office de loi (Code is law) sur le réseau.

Caractéristiques d’un smart contract

Un smart contract, dans notre contexte, est obligatoirement déployé sur une blockchain. Cette dernière lui fourni les ressources et les informations nécessaires pour fonctionner. Une fois sur le réseau, il ne peut plus être mis à jour ou modifier. Il présente un caractère immuable et irréversible.

Il attend des conditions en entrée pour pouvoir s’exécuter comme un programme. Il possède une adresse sur le réseau et un utilisateur peut interagir avec pour qu’un service précis lui soit rendu.

Dans la réalisation des tâches, il n’y aucune intervention humaine. Il réalise uniquement les actions qui ont été prédéfinies et ne peut s’arrêter que si le réseau lui-même est en arrêt complet. Il est donc important de bien le concevoir et le coder en amont.

Formaliser un smart contract

Il existe une variété de langages sur une multitude de blockchains permettant de coder un smart contract. Certaines blockchains comme Tezos, proposent jusqu’à 5 langages de programmation en permettent de vérifier la validité de son code avant de le déployer. Il faut quand même nuancer, un code valide, ne répond pas forcément à un besoin fonctionnelle. Il est nécessaire de le tester sur les testnets si la blockchain le propose.

Si Ethereum propose son propre langage Solidity, la tendance montre un retour à l’utilisation de langages plus traditionnelles (java, python, haskell, etc…) pour attirer le maximum de développeurs. Dans certains cas, il n’est pas même pas nécessaire d’avoir un background technique solide en programmation.

Il faut disposer d’outils de développement pour pouvoir coder, tester et debugger si nécessaire. Il faut également connaitre les nombreuses APIs pour pouvoir communiquer avec elles et le réseau.

La connaissance des standards de développement est indispensable pour permettre une portabilité des tokens si vous réalisez un smart contract de tokens par exemple. Vous avez quelques exemples de standards ici pour la blockchain Ethereum.

Conclusion

Les smart contracts représentent une avancée majeure pour le réseau blockchain. Ils présentent plusieurs avantages dont la réduction des temps de traitement dû à l’absence d’intermédiaire physique, une transparence et un déterminisme dans la réalisation de ses fonctionnalités.

Cependant quelques défauts viennent noircir le tableau.

En effet les contrats déjà déployés ne sont pas évolutifs, ils ne peuvent pas être mis à jour. Ceci est problématique si l’on souhaite faire évoluer son code après coup.

La sélection des oracles pour récupérer des informations du monde réel peut poser des problèmes de fiabilité des données.

Par ailleurs, la suppression de tiers de confiance, retire aux personnes marginales la possibilité de se voir accorder une ‘chance’ dans le traitement d’un dossier. L’empathie dans l’exécution du contrat est totalement occulté.

Un commentaire

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s