Qu’est-ce qu’un contrat intelligent ?
Qu’est-ce qu’un contrat intelligent ? Découvrez comment fonctionnent ces programmes autoexécutables sur la blockchain, ce qu’ils permettent, leurs limites et leurs risques, et comment en vérifier un avant de l’utiliser.
Un contrat intelligent (smart contract) est un programme stocké sur une blockchain qui s’exécute automatiquement lorsque des conditions prédéfinies sont réunies. Il peut détenir et déplacer des fonds selon son code, sans qu’une banque, un courtier ou un autre intermédiaire décide de l’exécution de chaque étape.
Les contrats intelligents alimentent presque tout ce qui va au-delà des simples paiements en crypto : jetons, plateformes d’échange décentralisées, protocoles de prêt, NFT et DAO. Comprendre ce qu’ils peuvent faire ou non aide à évaluer à la fois les opportunités et les risques liés à leur utilisation.
Comment fonctionnent les contrats intelligents
L’idée de contrats appliqués par du code a été décrite par l’informaticien Nick Szabo dans les années 1990, avec l’analogie d’un distributeur automatique : insérez les bonnes pièces, choisissez un produit, et la machine le délivre sans commerçant.
Sur une blockchain, le processus se déroule ainsi :
- 1Un développeur écrit le code, par exemple en Solidity pour Ethereum ou en Rust pour d’autres réseaux.
- 2Le code est déployé dans une transaction et reçoit sa propre adresse.
- 3Les utilisateurs appellent le contrat en envoyant des transactions à cette adresse, souvent avec des jetons joints.
- 4Chaque nœud exécute le code et s’accorde sur le résultat, qui est donc le même pour tous.
- 5L’état du contrat est mis à jour : soldes, registres de propriété ou paramètres changent sur la chaîne.
Chaque étape coûte des frais de réseau. Sur Ethereum, ces frais s’appellent le gas ; voir ce qu’est le gas sur Ethereum pour comprendre son fonctionnement.
À quoi servent les contrats intelligents
| Usage | Ce que fait le contrat | Exemple |
|---|---|---|
| Jetons | Suit les soldes et les transferts | Un contrat de jeton ERC-20 |
| Plateformes d’échange décentralisées | Détient des réserves de jetons et fixe les prix avec une formule | Un teneur de marché automatisé |
| Prêt | Accepte des garanties, accorde des prêts, liquide les positions risquées | Un marché monétaire DeFi |
| NFT | Enregistre la propriété d’objets uniques | Le contrat NFT d’une collection |
| DAO | Compte les votes et exécute les propositions approuvées | Un contrat de gouvernance on-chain |
| Portefeuilles multisig | Exige plusieurs approbations pour déplacer des fonds | La trésorerie d’un projet |
Beaucoup de ces contrats s’appellent les uns les autres, d’où l’expression « legos financiers » parfois utilisée pour la DeFi. Notre guide de la DeFi montre comment ces pièces s’assemblent.
Contrats intelligents vs contrats traditionnels
Il est utile de comparer les contrats intelligents aux accords papier que la plupart des gens connaissent.
| Contrat traditionnel | Contrat intelligent | |
|---|---|---|
| Rédigé en | Langage humain | Code informatique |
| Appliqué par | Tribunaux, institutions, bonne foi des parties | Le réseau blockchain qui exécute le code |
| Flexibilité | Peut être renégocié ou interprété | S’exécute tel quel, sauf s’il est conçu pour évoluer |
| Transparence | Généralement privé | Code et activité souvent publics sur la chaîne |
| Règlement des litiges | Juges, arbitres, avocats | Aucun mécanisme intégré au-delà du code |
| Rapidité | De quelques jours à plusieurs mois | De quelques secondes à quelques minutes selon le réseau |
Leurs atouts sont la rapidité, la transparence et la suppression des intermédiaires. Leur faiblesse est la rigidité : le code ne peut pas peser l’équité ou le contexte. Si un événement imprévu survient, le contrat suit simplement ses règles, même lorsque le résultat n’est clairement pas celui que quiconque souhaitait. Nous détaillons ce point dans Qu’est-ce qu’un testnet et un mainnet ?
Qui écrit et contrôle les contrats intelligents
N’importe qui peut déployer un contrat intelligent ; il n’existe aucun processus d’approbation sur les blockchains publiques. Cette ouverture permet une innovation rapide, mais signifie aussi que les contrats frauduleux sont aussi faciles à déployer que les légitimes. Une fois déployé, le contrôle dépend de la façon dont le contrat a été écrit : certains n’ont aucun propriétaire, d’autres sont contrôlés par un seul portefeuille, d’autres encore par un multisig ou un vote de DAO avec un délai. Savoir quel modèle s’applique est essentiel pour évaluer le risque d’une application. À lire aussi : Les exploits de contrats intelligents.
Ce que les contrats intelligents ne peuvent pas faire
Les contrats intelligents sont puissants, mais limités.
- Ils ne connaissent que les données de la chaîne. Pour utiliser des informations du monde réel, comme des prix ou des résultats sportifs, ils s’appuient sur des oracles, qui apportent des données externes sur la chaîne et peuvent tomber en panne ou être manipulés.
- Ils ne comprennent pas l’intention. Si vous envoyez des fonds à la mauvaise fonction ou signez une autorisation malveillante, le contrat fait ce que dit le code.
- Ce ne sont pas automatiquement des contrats juridiques. L’exécution du code et la force juridique sont deux questions distinctes.
- Ils ne peuvent pas annuler les erreurs. Une transaction terminée le reste normalement.
Les risques liés aux contrats intelligents
Bugs et exploits
Le code est écrit par des humains, et les erreurs arrivent. Les attaquants cherchent des failles et peuvent vider des fonds en une seule transaction. Les audits aident, mais ne garantissent pas la sécurité — voir comment évaluer un rapport d’audit de contrat intelligent.
Clés d’administration et mises à jour
Beaucoup de contrats sont évolutifs ou ont des fonctions propriétaire capables de suspendre les échanges, modifier les frais ou créer des jetons. Cela peut protéger les utilisateurs en cas d’urgence, mais ouvre aussi la porte aux abus ou au vol d’une clé d’administration. À lire aussi : L’account abstraction expliquée.
Contrats malveillants
Les jetons frauduleux peuvent contenir des règles cachées, comme le blocage des ventes ou d’énormes taxes de transfert. Un contrat peut sembler normal sur la page d’un jeton tout en se comportant très différemment en pratique. Voir aussi : ICO vs IEO vs IDO.
Autorisations
Utiliser la DeFi exige souvent d’autoriser un contrat à dépenser vos jetons. Des autorisations illimitées accordées à un contrat bogué ou malveillant peuvent ensuite servir à prendre ces jetons. Pour aller plus loin, lisez Qu’est-ce que la mempool ?
Comment vérifier un contrat intelligent avant de l’utiliser
- 1Confirmez l’adresse sur le site officiel du projet et auprès d’une source indépendante.
- 2Recherchez-la sur un explorateur de blocs pour voir sa date de création, son activité et si son code source est vérifié.
- 3Cherchez des audits de sociétés reconnues et vérifiez si les problèmes relevés ont été corrigés.
- 4Identifiez qui contrôle les fonctions d’administration : un multisig, un timelock ou un seul portefeuille.
- 5Commencez petit et limitez les autorisations de jetons au montant nécessaire.
Notre guide pour vérifier l’adresse de contrat officielle d’un jeton détaille les deux premières étapes.
En résumé
Un contrat intelligent est du code autoexécutable sur une blockchain, capable de détenir et de déplacer de la valeur sans intermédiaire. Il rend possible une finance ouverte et programmable, mais signifie aussi que les bugs, les pouvoirs d’administration cachés et le code malveillant agissent instantanément et de manière irréversible. Vérifiez l’adresse, comprenez qui contrôle le contrat et n’autorisez que ce dont vous avez besoin.
Questions fréquentes
Les contrats intelligents ont-ils une valeur juridique ?
Pas automatiquement. Un contrat intelligent est un logiciel qui s’exécute sur une blockchain, pas un accord juridique en soi. Certains systèmes juridiques peuvent reconnaître des accords enregistrés ou exécutés par du code, mais cela dépend du pays et des circonstances. Si la force juridique compte, vérifiez le droit local ou consultez un professionnel qualifié.
Un contrat intelligent peut-il être modifié après son déploiement ?
Le code déployé lui-même ne peut généralement pas être modifié. Cependant, de nombreux projets utilisent des architectures évolutives, comme les contrats proxy, qui permettent à un administrateur de rediriger les utilisateurs vers un nouveau code. Cette flexibilité aide à corriger les bugs, mais signifie aussi que quelqu’un a le pouvoir de changer les règles. Vérifiez qui contrôle les clés de mise à jour ou d’administration.
Quelles blockchains prennent en charge les contrats intelligents ?
Ethereum a popularisé les contrats intelligents généralistes, et de nombreux autres réseaux les prennent en charge, notamment BNB Chain, Solana, Avalanche, Cardano et les réseaux de couche 2 d’Ethereum. Bitcoin ne prend volontairement en charge qu’un scripting limité. Chaque plateforme a ses propres langages et outils, les contrats ne sont donc pas automatiquement transférables.
Que se passe-t-il si un contrat intelligent contient un bug ?
Le code s’exécute exactement comme il est écrit, bug compris. Des attaquants peuvent l’exploiter pour vider les fonds, et les transactions ne peuvent généralement pas être annulées. Certains projets peuvent suspendre ou mettre à jour leurs contrats pour limiter les dégâts, tandis que les contrats immuables ne peuvent pas être corrigés. Les audits et les programmes de bug bounty réduisent ce risque sans l’éliminer.
