
Un smart contract est un programme déployé sur une blockchain qui s’exécute automatiquement lorsque ses conditions sont remplies. Une fois déployé, le code est immuable, les règles ne peuvent pas être modifiées sans un mécanisme de mise à jour, et l’exécution est vérifiée par chaque nœud du réseau. Le même code produit le même résultat pour tous — il n’y a aucun intermédiaire pour interpréter ou refuser une transaction qui respecte les termes du contrat.
Ethereum a popularisé ce modèle avec la Ethereum Virtual Machine (EVM), qui exécute du code Solidity et Vyper. La plupart des chaînes modernes ont adopté l’EVM ou construit leurs propres environnements d’exécution — Solana avec des programmes basés sur Rust, les chaînes Cosmos avec CosmWasm, NEAR avec WASM. Les smart contracts alimentent tous les protocoles DeFi, les places de marché NFT, les jeux on-chain et les DAO existants.
L’immuabilité est à la fois une caractéristique et un danger. Un contrat correctement écrit applique ses règles exactement comme prévu, mais un contrat défectueux exécutera ses bugs tout aussi fidèlement. Des milliards ont été perdus à cause d’exploits de smart contracts — attaques par réentrance, manipulations d’oracles, dépassements d’entiers, et erreurs de contrôle d’accès. Les audits, la vérification formelle et les modèles de code éprouvés atténuent mais n’éliminent jamais totalement le risque. L’expression « code is law » reflète à la fois la puissance et la brutalité de ce modèle.
Les smart contracts vivent sur une blockchain, ce qui signifie que leur code et leur état sont stockés sur un registre distribué maintenu par un réseau de nœuds. Lorsqu’un utilisateur ou un autre contrat envoie une transaction qui appelle une fonction de smart contract, chaque nœud exécute le code indépendamment, vérifiant la logique et mettant à jour l’état en conséquence. Cette validation décentralisée garantit l’absence de confiance — aucune partie unique ne contrôle le résultat.
Parce que les smart contracts s’exécutent on-chain, ils nécessitent des ressources de calcul, qui sur des réseaux comme Ethereum sont payées via des gas fees. Ces frais rémunèrent les mineurs ou validateurs pour l’exécution du code du contrat et aident à prévenir les abus tels que les boucles infinies ou les transactions spam. Le coût d’exécution de contrats complexes peut varier considérablement selon la congestion du réseau et la complexité des opérations effectuées.
Les smart contracts peuvent interagir avec d’autres contrats, permettant la composabilité — la capacité de construire des applications décentralisées (dApps) complexes en combinant plusieurs contrats. Cette conception modulaire a stimulé l’innovation dans la finance décentralisée et d’autres secteurs, permettant aux développeurs de créer des protocoles qui empruntent, prêtent, font du trading et gèrent des actifs sans intermédiaires.
Ethereum reste la plateforme la plus utilisée pour les smart contracts, grâce à son rôle pionnier et à l’écosystème étendu construit autour de l’EVM. Solidity est le langage principal des contrats Ethereum, conçu spécifiquement pour écrire des programmes blockchain sécurisés et efficaces. Vyper est un autre langage Ethereum qui met l’accent sur la simplicité et la sécurité, avec une syntaxe proche de Python.
D’autres blockchains ont développé leurs propres environnements de smart contracts pour optimiser la vitesse, la scalabilité ou les préférences des développeurs. Solana utilise Rust et C pour écrire des programmes haute performance qui tournent sur son consensus unique proof-of-history. Les chaînes Cosmos utilisent CosmWasm, un framework basé sur WebAssembly qui supporte plusieurs langages et permet l’interopérabilité entre différentes blockchains.
NEAR Protocol utilise également WebAssembly (WASM) pour permettre aux développeurs d’écrire des contrats dans des langages familiers comme Rust et AssemblyScript. Ces environnements variés reflètent la demande croissante pour des plateformes de smart contracts scalables et flexibles au-delà d’Ethereum, chacune avec des compromis en termes de sécurité, vitesse et facilité d’utilisation.
Bien que les smart contracts automatisent les accords et réduisent la dépendance aux intermédiaires, leur immuabilité signifie que tout bug ou vulnérabilité peut avoir des conséquences graves. Les vecteurs d’attaque courants incluent les attaques par réentrance, où les appels externes d’un contrat sont exploités pour vider des fonds ; la manipulation d’oracles, où des données externes fausses conduisent à une exécution incorrecte du contrat ; et les dépassements d’entiers, qui peuvent provoquer des comportements inattendus dans les opérations arithmétiques.
Les erreurs de contrôle d’accès, comme des fonctions mal restreintes, peuvent permettre à des utilisateurs non autorisés de modifier l’état du contrat ou de retirer des actifs. Parce que les smart contracts gèrent souvent de grosses sommes d’argent, ces vulnérabilités ont conduit à des hacks et pertes très médiatisés. Par exemple, le hack du DAO en 2016 a exploité une faille de réentrance, entraînant le vol de millions de dollars et une scission ultérieure du réseau Ethereum.
Pour réduire les risques, les développeurs s’appuient sur des audits de sécurité réalisés par des sociétés spécialisées, des méthodes de vérification formelle qui prouvent mathématiquement la correction des contrats, et des bibliothèques de code standardisées et éprouvées. Malgré ces mesures, aucun contrat n’est totalement sans risque, et les utilisateurs doivent faire preuve de prudence lorsqu’ils interagissent avec des smart contracts nouveaux ou non audités.
Une idée reçue fréquente est que les smart contracts sont des contrats légaux exécutables en justice. En réalité, ce sont des codes auto-exécutables qui appliquent des règles de manière programmée sur une blockchain, indépendamment des systèmes juridiques traditionnels. Bien que certains smart contracts incluent un langage légal ou soient conçus pour interagir avec des accords juridiques, leur fonction principale est l’exécution automatique basée sur des conditions codées.
Par exemple, une plateforme d’échange décentralisée (DEX) utilise des smart contracts pour appairer les ordres et échanger des tokens sans intermédiaire centralisé. Lorsqu’un utilisateur soumet un ordre, le contrat vérifie la commande, exécute le transfert de tokens et met à jour les soldes — le tout de manière transparente et sans confiance. De même, une organisation autonome décentralisée (DAO) utilise des smart contracts pour gérer les votes et la gouvernance, garantissant que les décisions sont exécutées exactement comme voté par les détenteurs de tokens.
Comprendre les smart contracts implique aussi de reconnaître leur relation avec d’autres concepts blockchain comme la technologie blockchain et les wallets de cryptomonnaies, qui interagissent avec les contrats pour initier des transactions et gérer les actifs en toute sécurité. Ensemble, ces composants forment la base du web décentralisé émergent, ou Web3.