Un smart contract (contrat intelligent) est un programme stocké sur une blockchain qui exécute automatiquement les conditions inscrites dans son code dès qu’une transaction ou un autre contrat l’appelle. Un programme est un ensemble d’instructions informatiques. Une blockchain est un registre partagé auquel de nouvelles entrées s’ajoutent les unes après les autres. Une transaction est une requête envoyée à une blockchain.
Où se trouve un smart contract ?
Un smart contract est stocké à une adresse sur une blockchain. Une adresse est un identifiant sur une blockchain désignant un utilisateur ou un smart contract. Le code du contrat, ainsi que les données qu’il conserve, sont stockés à cette adresse. L’état (state) désigne les données qu’un smart contract conserve, afin qu’elles soient toujours disponibles la prochaine fois que le contrat s’exécute.
Déployer un smart contract signifie placer son code sur la blockchain via une transaction qui transporte ce code. Après le déploiement, le contrat possède une adresse à laquelle des transactions peuvent être envoyées.
Comment fonctionnent les smart contracts ?
Un smart contract s’exécute lorsqu’une transaction ou un autre contrat appelle l’une de ses fonctions. Appeler une fonction, c’est demander à un contrat de l’exécuter. Une fonction est une partie nommée du code du contrat. Une transaction envoyée à l’adresse du contrat désigne une fonction et fournit ses entrées, c’est-à-dire les données dont la fonction a besoin.
Les nœuds du réseau blockchain exécutent le code d’un smart contract. Un nœud est un ordinateur qui exécute le logiciel d’un réseau blockchain et se connecte aux autres ordinateurs du réseau. Lorsque le code modifie l’état du contrat, ce changement est enregistré sur la blockchain.
Un compte est un enregistrement sur une blockchain qui possède une adresse et un solde. Un solde est la quantité de la monnaie native de la blockchain détenue par un compte. Une monnaie native est l’unité propre à une blockchain, comme le BTC sur Bitcoin.
Sur Ethereum, comme le décrit sa documentation, il existe deux types de comptes. Un compte utilisateur est contrôlé par une personne disposant d’une clé privée. Une clé privée est un nombre secret qui signe les transactions. Un compte contrat contient du code, et un smart contract est stocké à l’adresse d’un compte contrat.
Un appel à un smart contract provient soit d’un compte utilisateur, soit d’un autre contrat. Dans cet article, l’expression « auto-exécutable » désigne un contrat dont le code exécute ses instructions dès qu’il est appelé. Elle ne désigne pas un contrat qui déclenche lui-même une exécution, car un compte contrat ne peut envoyer de messages qu’en réponse à la réception d’une transaction.
Un exemple fictif illustre un appel. Les contrats réels diffèrent dans ce qu’ils conservent et dans la manière dont leurs fonctions sont écrites. Dans cet exemple, un contrat conserve un nombre d’unités pour chacune de deux adresses. Une unité est un décompte que le contrat conserve. L’adresse A possède 100 unités, et l’adresse B possède 20 unités.
- Un compte utilisateur envoie une transaction qui appelle la fonction
transferdu contrat, demandant de déplacer 30 unités de l’adresse A vers l’adresse B. - Les nœuds exécutent le code du contrat.
- Le code vérifie que l’adresse A possède au moins 30 unités.
- Le code réduit l’adresse A à 70 unités et augmente l’adresse B à 50 unités.
- Le changement est enregistré sur la blockchain. Les deux adresses détiennent 120 unités au total, aussi bien avant qu’après l’appel.
Que peut détenir et faire un smart contract ?
Un smart contract peut détenir un solde de la monnaie native de la blockchain, tout comme un compte utilisateur. Un smart contract peut également conserver des enregistrements dans son état, comme un compteur pour chaque adresse, et un appel à l’une de ses fonctions peut modifier ces enregistrements.
Un smart contract peut appeler d’autres contrats, ce qui permet au code d’un contrat d’utiliser les fonctions d’un autre. Une fonction peut enregistrer un événement, c’est-à-dire un avis sur la blockchain qu’un logiciel externe à la blockchain peut surveiller.
Un contrat de token est un smart contract qui crée et suit des tokens. Contrairement à une monnaie native, un token est une unité émise sur une blockchain existante par le biais d’un smart contract. Un standard de token est une spécification publiée des fonctions et des événements qu’un contrat de token fournit.
Qu’est-ce qui détermine le comportement d’un smart contract, et peut-il encore changer ?
Le code stocké à l’adresse d’un smart contract détermine ce que fait le contrat. Un smart contract exécute ce que son code indique, ce qui peut différer de ce que son auteur voulait dire. Le code à l’adresse d’un smart contract ne change pas après le déploiement du contrat, mais un contrat peut être conçu de manière à ce que le comportement qu’il exécute soit remplacé.
Un smart contract peut effectivement être conçu de sorte que son comportement puisse être remplacé. Un contrat peut stocker l’adresse d’un second contrat et lui transmettre les appels. Si le premier contrat a été conçu pour permettre le changement de l’adresse stockée, le comportement exécuté peut changer tandis que l’adresse du premier contrat reste la même. Un contrat conçu de cette manière peut également définir quels comptes sont autorisés à modifier l’adresse vers laquelle il transmet les appels.
Quel est l’équivalent des smart contracts sur Bitcoin ?
Bitcoin, un réseau de cryptomonnaie dont la monnaie est le BTC, possède un équivalent sous forme de scripts. Un script est une règle, écrite dans le langage de script de Bitcoin, qui doit être satisfaite avant qu’un montant de BTC puisse être déplacé. En octobre 2026, la documentation de Bitcoin décrit son langage de script comme volontairement limité. Le BTCFi, abréviation de « Bitcoin-native finance », est une appellation utilisée par diverses parties pour désigner l’activité financière construite autour du BTC, incluant les smart contracts et d’autres conceptions.
Qu’est-ce qu’une revue de code d’un smart contract ?
Une revue de code d’un smart contract est un contrôle du code du contrat effectué par des personnes autres que son auteur, qui lisent le code à la recherche d’erreurs. Un audit est une façon de réaliser une revue de code. Une revue peut passer à côté d’erreurs, elle ne garantit donc pas que le code d’un contrat est exempt d’erreurs.
Quelles sont les limites d’un smart contract ?
Sans oracle, un smart contract ne fonctionne qu’avec les données présentes sur la blockchain sur laquelle il s’exécute. Un oracle est un service qui transmet des données externes à un contrat. Les données externes sont des données qui ne sont pas stockées sur la blockchain du contrat, comme une date externe ou un résultat externe.
Une erreur dans le code d’un smart contract déployé peut y rester, à moins que le contrat n’ait été conçu pour permettre le remplacement de son comportement.
27 novembre 2025











