logo academy

Smart contract Etherum, comment ça marche ?

29 août, 2022

11 min

Smart contract Etherum, comment ça marche ?
débutant

Que sont les smart contracts ? Des logiciels construits sur la blockchain pour automatiser et décentraliser tout type d’application. Les applications décentralisées, créées grâce à ces codes, sont appelées les DApps. Elles constituent la base de la finance décentralisée (DeFi) et du Web3. Mais comment les smart contracts ont-ils vu le jour et comment fonctionnent-ils ? Dans cet article, nous suivons l’évolution de latechnologie qui a mené aux smart contracts sur Ethereum et nous nous projetons dans l’avenir : les smart contracts remplaceront-ils les contrats traditionnels ?

Smart contracts : de quoi s’agit-il ?

Les règles sont fondamentales pour la stabilité de toute société humaine. C’est pourquoi des contrats sont établis : une garantie que les accords sont respectés par les parties concernées. L’efficacité des contrats traditionnels n’est cependant pas instantanée : les conditions passent par un circuit bureaucratique d’intermédiaires (les contractants eux-mêmes, les avocats, les juges, les notaires) avant d’entrer en vigueur, d’être modifiées ou d’être exécutées. Il en résulte un processus souvent lent et lourd, et parfois une interprétation arbitraire du contrat en soi.

En revanche, les accords enregistrés dans les smart contracts génèrent automatiquement des conséquences logiques lorsque les conditions énoncées se produisent. En bref, les smart contracts définissent une série de chaînes de cause à effet, basées sur des formulations du type “si… alors” : par exemple : SI je paie mon loyer le premier du mois ALORS le propriétaire me laisse utiliser l’appartement. Donc, en bref, comment fonctionne un smart contract ? Tout d’abord, l’une des parties impliquées dans l’accord génère une transaction (si…), comme l’envoi d’un certain montant de cryptomonnaie, ou une transmission d’informations. Cette transaction est prise en charge par le smart contract de référence qui, l’évaluant dans le respect des règles, génère à son tour une ou plusieurs transactions (…alors). Ce résultat peut être l’envoi de fonds à la deuxième partie impliquée dans l’accord, ou le déblocage de l’accès à un objet réel, comme un appartement dans notre exemple.

Ces contrats sont “smart” car ils permettent d’obtenir des résultats de manière optimale, en réduisant à l’essentiel le mécanisme qui régit la relation entre les parties. En d’autres mots, un tel contrat est “intelligent” non pas parce qu’il est “rationnel”, mais parce qu’il ne permet pas d’exceptions ou d’interprétations. Il agit de manière planifiée et prédéterminée.

Au fond, un smart contract est essentiellement un logiciel développé et exécuté sur la blockchain, composé de codes qui définissent les règles de fonctionnement du programme lui-même. Ils présentent les mêmes caractéristiques que la technologie qui sous-tend les cryptomonnaies :

  • Immuabilité : une fois créés, les smart contracts ne peuvent pas être modifiés ; tout comme les blocs contenant les transactions en Bitcoin, ils ne peuvent pas être “réécrits”.
  • Décentralisation : les smart contracts sont répartis entre tous les nœuds appartenant au réseau d’une blockchain. Comme nous l’avons dit, ils génèrent des transactions s’ils sont activés, et les nœuds doivent parvenir à un consensus sur la validité de ces transactions résultantes avant de les enregistrer dans la blockchain. Par conséquent, chaque nœud, individuellement, répète le processus de demande au smart contract, afin d’évaluer sa réponse : si la plupart des nœuds reçoivent la même réponse, alors la transaction est considérée comme valide. Cela est possible car chaque nœud conserve une copie du code de tous les smart contracts.
  • Trustlessness (le fait de ne pas avoir besoin de confiance) : le consensus atteint par les nœuds sur les conséquences d’un accord est suffisant pour rendre un smart contract efficace. Les parties qui interagissent par son intermédiaire n’ont pas besoin de se faire confiance, et encore moins d’un intermédiaire garant.
  • Transparence/confidentialité : les codes des smart contracts, étant hébergés sur une blockchain, sont accessibles à tous. Cette visibilité totale ne sacrifie toutefois pas la vie privée : les utilisateurs de smart contracts conservent leur anonymat, car ils s’identifient à l’aide de l’adresse de leur portefeuille ou de leur clé cryptographique.

Pour bien comprendre ce qu’est un smart contract, il faut toutefois se plonger dans les raisons de sa création dans le monde de la cryptomonnaie. Pourquoi l’exécution automatique de logiciels immuables et distribués est-elle nécessaire ? Nous allons le découvrir en reconstituant l’histoire des smart contracts : de l’origine du concept à la première mise en œuvre réussie dans Ethereum.

L’histoire des smart contracts : de Nick Szabo à Vitalik Buterin

Qui a inventé les smart contracts ? La forme sous laquelle nous les connaissons aujourd’hui est l’idée de Vitalik Buterin, le créateur d’Ethereum. Par contre, l’origine du concept est antérieure. C’est en fait Nick Szabo qui a inventé le terme “smart contract”, le définissant en 1994 comme “un protocole de transaction informatisé qui exécute les termes d’un contrat. D’ailleurs, c’est aussi un candidat potentiel pour l’identité du fameux Satoshi Nakamoto.

Le créateur de Bit Gold, une monnaie décentralisée basée sur la cryptographie et le Proof-of-Work (comme le Bitcoin) énumère dans le même document les avantages possibles des smart contracts. Tout d’abord, la réduction des coûts d’exécution des contrats et de la dépendance vis-à-vis des intermédiaires, mais aussi la création de nouveaux modèles d’entreprises et d’institutions sociales. En fait, Szabo a proposé la création et l’échange d’actifs synthétiques, ainsi que la réalisation de “droits de vote” par le biais de smart contracts. Cette dernière fonction a effectivement été mise en œuvre de nos jours dans les DAO, comme nous le verrons plus loin. L’émission de tokens dérivés est désormais également courante dans la DeFi.

L’évolution du concept nous a donc conduit à sa première version moderne, les Ethereum Smart Contracts. La mise en œuvre de la blockchain de Vitalik Buterin a mis en pratique l’idée de Szabo. Le code d’Ethereum, en effet, est né pour aller au-delà des échanges de valeurs Peer-to-Peer (P2P) du Bitcoin. Le but est de créer des logiciels pour n’importe quelle application décentralisée, précisément par le biais de smart contracts.

Afin de créer un véritable écosystème de finance décentralisée (DeFi) et plus généralement tous les produits et services que nous reconnaissons aujourd’hui comme faisant partie du Web3 ; il était nécessaire de remplacer les tiers traditionnels par la programmation de codes. Les smart contracts conduiraient automatiquement aux résultats prédéterminés, sans intervention humaine : un objectif complexe, car ces programmes devaient à la fois respecter les caractéristiques de la blockchain, énumérées ci-dessus, et être relativement simples à créer. En bref, il fallait un langage standard compréhensible par tous les développeurs, ainsi qu’un environnement partagé hébergeant toutes les “règles” des smart contracts. Ethereum a été doté des deux : découvrons Solidity et l’Ethereum Virtual Machine (EVM).

Solidity et EVM

Gavin Wood, l’un des fondateurs d’Ethereum ainsi que de Polkadot, a proposé le langage de programmation des smart contracts d’Ethereum : Solidity. La syntaxe curly brackets est dérivée du C++, le langage dans lequel Wood a initialement mis en œuvre le whitepaper d’Ethereum. Solidity prend en charge des bibliothèques de code réutilisables, c’est-à-dire les fonctions standards qui peuvent être appelées par chaque smart contract.

Les smart contracts sont écrits en Solidity mais, pour être utilisés, leur exécution doit se faire sur la blockchain d’Ethereum. Pour ce faire, ils sont “compilés“, c’est-à-dire traduits en bytecode : une séquence de commandes, appelée OP CODE. Ces instructions décrivent des opérations étape par étape, exécutées par la Ethereum Virtual Machine (EVM). Cette dernière est une “machine virtuelle”, c’est-à-dire l’environnement dans lequel tous les smart contracts sont exécutés. Imagine qu’il s’agit d’un “ordinateur mondial” capable de prendre en charge n’importe quel type de programme s’il dispose de suffisamment de temps et d’espace. Vitalik Buterin a également décrit l’EVM comme un “couteau suisse“, un ensemble d’outils (logiciels) et de règles adaptés à tous les besoins.

C’était d’ailleurs l’objectif de la création d’Ethereum, de décentraliser tous les services et de les fournir par le biais de la technologie blockchain. Un véritable engagement, car aujourd’hui, les applications décentralisées (DApps) les plus utilisées se trouvent sur Ethereum, aux côtés des plus grandes organisations autonomes décentralisées (DAOs). Mais que sont les DApps et qu’est-ce qu’une DAO ?

Que sont les DApps et les DAO ?

Qu’est-ce qui différencie les DApps des smart contracts ? Pour faire simple, les DApps sont des applications construites sur la blockchain, dont les fonctions correspondent à différents smart contracts. C’est un ensemble de codes pour une grande variété de cas d’utilisation : au-delà de la finance, les jeux et les réseaux sociaux, par exemple.

Le protocole du Bitcoin pour l’échange p2p (Peer-to-Peer) de cryptomonnaies peut en fait être considéré comme la première DApp, mais la représentation la plus précise vient encore de l’article de Nick Szabo : un distributeur automatique, qui fournit des produits et des services en échange du bon nombre de coins. Ainsi, en envoyant des cryptomonnaies, ou souvent en payant simplement une redevance (gas fees), tu peux profiter des fonctions d’un smart contract. Regardons des exemples de DApp afin de mieux les comprendre.

  • Finance : il existe des DApps Ethereum pour les prêts décentralisés, comme Aave, et des exchanges décentralisés (DEX) pour échanger des cryptos, comme la DApp d’Uniswap. Si tu veux en savoir plus sur les smart contracts et les DApps, les fondateurs de ces projets, Stani Kulechov et Hayden Adams, ont des histoires intéressantes à te raconter.
  • GameFi : le jeu vidéo Axie Infinity est né sur Ethereum, un exemple de DApp dans la Game Finance.
  • Réseau social : le projet d’un réseau social Web3 appartient toujours au fondateur d’Aave, bien que ce ne soit pas le premier exemple (Steemit et Voice, par exemple). Il s’agit essentiellement d’une DApp similaire à Twitter, mais basée sur des tokens et des smart contracts : le protocole Lens.

Cependant, les smart contracts peuvent également prendre en charge des fonctions sociales : les organisations autonomes décentralisées (DAO) rassemblent virtuellement les détenteurs dune certaine cryptomonnaie (token holders), qui ont ainsi le droit de vote sur des questions concernant la DAO. Le droit de vote est la base de toutes les fonctions de gouvernance, précisément réalisées par le biais de smart contracts. Il peut s’agir de la gestion de la trésorerie dun projet, la proposition et la mise en œuvre des mises à jour du protocole, la définition et la modification de la feuille de route et bien plus encore. Les DAO des détenteurs d’UNI et d’AAVE sont également hébergés sur la blockchain d’Ethereum, mais il existe d’autres exemples : Yearn Finance (YFI), Ethereum Name Service (ENS) et Compound (COMP). Tous ces tokens de référence sont également émis en convention avec un type particulier de norme de smart contract natif sur Ethereum : le standard ERC-20.

L’avenir des smart contracts

Les smart contracts semblent être la solution idéale pour décentraliser les services et les applications Web3 dans les DApps, mais ils ont toutefois aussi des limites. Tout d’abord, les smart contracts étant écrits par des humains, il est possible qu’ils contiennent des erreurs : les codes ont besoin de temps pour être examinés, puis audités. La sécurité de la technologie blockchain, ainsi que le DeFi qui en découle, n’a pas encore été correctement testée.

Enfin, la programmation de la variabilité et du caractère aléatoire, des caractéristiques du monde réel, est extrêmement complexe. Les smart contracts n’ont pas encore suffisamment de “flexibilité” pour inclure le facteur humain. L’intégration avec la technologie des oracles (Chainlink) permet d’apporter des événements et des informations du monde réel sur la blockchain, tout comme l’intelligence artificielle (IA) pourrait analyser les processus de smart contracts pour les optimiser et faire des prédictions utiles. La création de logiciels pour gérer les infinies facettes du comportement humain reste néanmoins extrêmement difficile. Cela désavantage la blockchain par rapport aux solutions centralisées traditionnelles : nous nous tournons toujours vers les juges et les avocats pour résoudre les litiges complexes, mais peut-être qu’un jour, les smart contracts seront capables de tout clarifier avec des chaînes de codes.

En rapport