Capitalisation 2,28 T $ −6,41 % sur 24 heuresVolume 24 h 91,15 Md $Dominance BTC 58,7 %ETH 10,1 %Fear & Greed 13 Peur extrêmeCryptos 22 238

Smart contract : définition, exemples, limites et valeur juridique

Smart contract définition : un code à une adresse qui s'exécute quand on l'appelle, six exemples réels sur Ethereum, Etherscan, bugs coûteux et droit.

Débutant 31 min de lectureMis à jour À lire d'abord : Frais de gas Ethereum : comment fonctionnent le gas, l’EIP-1559 et le burn
Un contrat signé, des blocs empilés, un engrenage et une balance de justice
Sommaire
  1. Smart contract : définition d’un programme posté à une adresse qui attend
  2. De l’essai de Szabo en 1994 au distributeur automatique de 1996
    1. 1994 : un protocole qui exécute les termes
    2. 1996 : l’humble distributeur automatique
    3. 2013 à 2015 : l’idée passe sur une blockchain
  3. Ce qui se passe quand on appelle un smart contract, étape par étape
  4. Smart contract : exemples, six contrats à ouvrir dès aujourd’hui
    1. USDC : un jeton est un contrat qui tient un registre
    2. Uniswap : le pool détient lui-même l’argent
    3. Aave : un prêt sans chargé de clientèle
    4. ENS : enregistrer un nom, c’est appeler un contrat
    5. Safe et Chainlink : portefeuilles partagés et prix venus de l’extérieur
  5. Comment vérifier un smart contract sur Etherscan sans connecter de portefeuille
  6. Ce que les smart contracts font mieux qu’un intermédiaire
  7. Là où les smart contracts échouent : code irréversible et bugs coûteux
    1. Un code qu’on ne peut pas modifier, et l’exception du proxy
    2. The DAO, juin 2016 : le bug qui a scindé Ethereum
    3. Parity, novembre 2017 : un demi-million d’ETH gelés, pas volés
    4. Truebit, janvier 2026 : un vieux code, sans contrôle de dépassement
    5. Les audits réduisent le risque sans le supprimer
  8. Le problème de l’oracle : un contrat ne peut pas regarder par la fenêtre
  9. Ce que « trustless » veut vraiment dire : la confiance se déplace, elle ne disparaît pas
  10. Un smart contract est-il un contrat légal ? Ce que disent les textes
  11. Limites de taille et autres contraintes à connaître
  12. Six questions à se poser avant de faire confiance à un smart contract

Collez 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 dans Etherscan, un site gratuit qui montre tout ce qui est inscrit sur Ethereum, et vous regardez l’USDC, un jeton censé valoir un dollar américain. Lu dans le contrat lui-même le 10 novembre 2026 à 09:43 UTC, blockchain that runs exactly as written when it is called, holding and moving funds according to its code, without an intermediary able to change the outcome.">smart contract holding reserves of two or more tokens, supplied by users, that a decentralized exchange uses to execute trades automatically at a price set by a formula.">pool diverge, compared with simply holding the same tokens in a wallet. It becomes permanent when the provider withdraws.">il recensait environ 45,9 milliards de jetons sur cette chaîne. Aucune base de clients ne se cache derrière cette page. Les soldes vivent dans un programme stocké à cette adresse : 2 186 octets de code qui transmettent chaque requête à un second programme, plus gros, où se trouvent les règles du jeton. N’importe qui peut lire les deux, à toute heure, sans demander la permission à Circle.

Ce programme est un smart contract. Quelle est la définition d’un smart contract, en mots simples ? C’est un morceau de code stocké sur une blockchain, à sa propre adresse, qui fait exactement ce pour quoi il a été écrit quand quelqu’un lui envoie une transaction, et rien du tout le reste du temps. Il peut détenir de l’argent, tenir des registres et appliquer des règles. Il ne se réveille jamais tout seul.

Le nom trompe à deux titres. Un smart contract n’a rien d’intelligent : il ne juge pas, ne devine pas et ne change pas d’avis. Et ce n’est pas automatiquement un contrat au sens juridique, question traitée pays par pays plus bas. La présentation d’Ethereum choisit une image plus modeste, celle d’un distributeur automatique où des « entrées précises garantissent des sorties prédéterminées » (ethereum.org, traduit de l’anglais). L’image précède Ethereum de presque vingt ans, et elle vient de l’homme qui a inventé le terme.

Cette leçon pour débutants prolonge nos leçons sur le fonctionnement de la machine virtuelle d’Ethereum et sur les frais de gas et l’EIP-1559. Vous pouvez la suivre sans les avoir lues : retenez seulement que chaque action sur Ethereum coûte une petite somme payée en ether, la monnaie propre du réseau.

Smart contract : définition d’un programme posté à une adresse qui attend

Ethereum compte deux sortes de comptes. Le premier est celui de votre portefeuille : une adresse contrôlée par une clé privée, qui peut envoyer des ether et signer des demandes. Le second est un compte de contrat : une adresse contrôlée par du code. Notre guide sur le modèle de comptes détaille la différence. Personne ne détient de clé qui permettrait d’en retirer l’argent. La seule porte d’entrée consiste à appeler l’une des fonctions que son code propose, et c’est le code qui décide si la demande aboutit.

C’est la première chose à comprendre : un smart contract est passif. Il ne s’exécute que lorsqu’une transaction arrive, envoyée par une personne ou par un autre contrat lui-même appelé par une personne. Un contrat de prêt ne peut pas vendre votre garantie de sa propre initiative ; quelqu’un doit lui envoyer une transaction qui demande la vente, et le code vérifie alors si les règles l’autorisent.

Il en va de même du temps. Un contrat ne peut pas programmer un réveil pour minuit. Si sa règle dit « payer après le 1er décembre », il ne paie que lorsque quelqu’un l’appelle après cette date ; le code compare alors la date du bloc en cours avec celle qu’il a mémorisée. Des robots et des services d’automatisation gagnent des commissions en envoyant ces appels de réveil.

La deuxième chose est qu’un contrat est prévisible. Des milliers d’ordinateurs exécutent le même code avec les mêmes données et doivent aboutir au même résultat, faute de quoi ils ne s’accorderaient pas sur l’état de la chaîne. C’est pourquoi un contrat ne peut ni consulter un site web ni lancer de vrais dés : le même appel doit donner la même réponse partout. La machine qui rend cela possible est le sujet de notre leçon sur l’EVM ; ici, l’idée utile est simple : les règles, c’est le code, et le code est le même pour tout le monde.

Qui écrit ces programmes ? Des développeurs, le plus souvent dans un langage appelé Solidity, qu’une prochaine leçon sur Solidity pour non-développeurs présentera sans code. Une fois le contrat déployé, les octets stockés à son adresse ne peuvent plus être modifiés. Il existe un contournement très répandu, le proxy, que la section sur les limites explique.

De l’essai de Szabo en 1994 au distributeur automatique de 1996

Le terme « smart contract » n’a pas été inventé pour Ethereum. Il vient de l’informaticien Nick Szabo, qui en a écrit au milieu des années 1990, bien avant l’existence de la moindre blockchain.

1994 : un protocole qui exécute les termes

Dans son essai de 1994 intitulé « Smart Contracts », Szabo donne une définition en une ligne : un smart contract est « un protocole de transaction informatisé qui exécute les termes d’un contrat » (Szabo, 1994, traduit de l’anglais). Il voyait des versions rudimentaires dans les outils électroniques de l’époque, comme les terminaux de paiement par carte et l’échange électronique de commandes et de factures entre entreprises, et jugeait les protocoles de monnaie numérique de beaux exemples. Il imaginait aussi la « propriété intelligente », par exemple une voiture dont l’accès pourrait être coupé si le prêt qui la finance n’était pas remboursé.

Les objectifs qu’il énumérait semblent familiers aujourd’hui : satisfaire les conditions habituelles d’un accord, réduire les erreurs et la mauvaise foi, dépendre moins d’intermédiaires de confiance. Ce qui lui manquait, c’était un registre partagé que personne ne contrôle. Bitcoin est arrivé une quinzaine d’années plus tard, en 2009.

1996 : l’humble distributeur automatique

Le distributeur n’apparaît pas dans le texte de 1994. Il vient d’un essai plus long de 1996, « Smart Contracts: Building Blocks for Digital Markets », où Szabo appelle « l’humble distributeur automatique » l’ancêtre primitif de l’idée. Le même essai précise que le mot « smart » n’implique aucune intelligence artificielle (Szabo, 1996).

La comparaison est plus fine qu’il n’y paraît. Un distributeur prend des pièces, rend le produit et la monnaie, et se passe de vendeur. Quiconque a les bonnes pièces peut traiter avec lui, à trois heures du matin, sans montrer de pièce d’identité. Szabo ajoutait une condition que l’on oublie souvent : la machine fonctionne parce que l’argent du tiroir-caisse vaut moins que le coût d’une effraction. Le mécanisme n’impose l’accord que dans la limite d’une perte potentielle réduite.

Cette condition vaut toujours. Un contrat qui détient quelques dollars est une cible médiocre. Un contrat qui détient des dizaines de millions de dollars, lisible par tous, est une cible très attirante, et la section sur les bugs montre ce qui arrive quand la serrure est plus faible que le coffre n’est plein.

2013 à 2015 : l’idée passe sur une blockchain

Le livre blanc d’Ethereum, rédigé par Vitalik Buterin en 2013, proposait une blockchain dotée d’un langage de programmation intégré, pour que chacun puisse déployer des contrats à la Szabo sur un réseau qui n’appartient à personne. Le réseau est entré en service avec la version Frontier le 30 juillet 2015, selon la page d’histoire d’ethereum.org. Cette histoire, du livre blanc aux dernières mises à jour, est racontée dans notre leçon sur l’histoire et le livre blanc d’Ethereum.

Ce qui se passe quand on appelle un smart contract, étape par étape

Prenons un cas courant : vous voulez échanger 1 000 USDC contre de l’ether sur Uniswap, une plateforme d’échange qui fonctionne entièrement avec des contrats, via l’un de ses pools. Vu depuis la chaîne, voici ce qui se passe.

  1. Votre portefeuille, ou le site que vous utilisez, construit une transaction. Elle nomme l’adresse du contrat, la fonction à exécuter et les paramètres : combien d’USDC vous donnez et le montant minimal d’ether que vous acceptez.
  2. Vous signez la transaction avec votre clé privée. La signature vaut consentement, et elle vous engage aussi à payer les frais, appelés gas.
  3. Un validateur, l’un des ordinateurs qui construisent les blocs d’Ethereum, place la transaction dans un bloc. Chaque nœud du réseau exécute alors le même code de contrat avec vos paramètres.
  4. Il vérifie ses conditions une à une : détenez-vous les USDC, avez-vous autorisé le contrat à les déplacer, le prix est-il toujours au-dessus de votre minimum ?
  5. Si toutes les vérifications passent, les soldes changent d’un seul coup : le pool reçoit vos USDC et vous envoie de l’ether. Si une vérification échoue, tout l’appel est annulé comme s’il n’avait pas eu lieu, sauf que le gas déjà consommé reste dû.
  6. Une fois le bloc définitif, il n’existe ni bouton d’annulation ni service client capable d’inverser l’échange.

Le gas est bon marché en ce moment, mais jamais gratuit. Au bloc 26 383 689, miné le 10 novembre 2026 à 09:43 UTC, les frais de base s’élevaient à environ 0,056 gwei (un gwei est un milliardième d’ether), d’après notre propre lecture d’un nœud Ethereum public. À titre d’exemple seulement : un simple transfert d’ether consomme 21 000 unités de gas, soit environ 0,0000012 ETH, à peu près un quart de centime de dollar pour un prix d’exemple de 2 100 dollars l’ether, avant tout pourboire au validateur. Un échange consomme plusieurs fois plus de gas. La façon dont les frais sont fixés, et pourquoi ils étaient bien plus élevés en 2021, fait l’objet de la leçon sur le gas et l’EIP-1559.

Un point surprend encore les débutants : le site sur lequel vous cliquez n’est pas le contrat. Une application décentralisée se compose d’une interface, un site web ordinaire géré par une entreprise ou une équipe, et de contrats sur la chaîne. Le site peut tomber en panne ou bloquer votre pays ; le contrat reste où il est et répond à quiconque l’appelle correctement. Notre guide sur ce qu’est une dApp détaille cette séparation.

Un ordinateur portable, une clé, des maillons de chaîne et des pièces empilées sur fond uni
Un appel à un contrat : vous signez avec votre clé, chaque nœud exécute le code, les soldes changent ou rien ne bouge.

Smart contract : exemples, six contrats à ouvrir dès aujourd’hui

Les six contrats ci-dessous sont tous en service sur Ethereum. Les chiffres viennent de nos lectures d’un nœud public entre 09:41 et 09:55 UTC le 10 novembre 2026, et de DefiLlama le même matin. Ce sont des instantanés datés, pas des données en direct.

ContratCe qu’il faitAdresseChiffre daté (10 nov. 2026)Le code peut-il changer ?
Jeton USDC (Circle)Tient les soldes du stablecoin USDC et les déplace0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48Environ 45,9 milliards d’USDC recensés sur Ethereum, lus dans le contrat à 09:43 UTCOui : c’est un proxy, et son administrateur peut le pointer vers une nouvelle logique
Pool Uniswap v3 USDC/WETH, frais de 0,05 %Détient deux jetons (USDC et WETH, version en jeton de l’ether) et échange l’un contre l’autre à un prix fixé par sa formule0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640Environ 48,4 millions d’USDC et 15 194 WETH détenus, vers 09:50 UTCNon : aucun proxy trouvé dans son stockage
Pool Aave v3Reçoit des dépôts, prête contre garantie, gère les liquidations0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2Aave V3 détient 15,24 milliards de dollars au total, dont 12,75 milliards sur Ethereum (DefiLlama)Oui : un proxy géré par la gouvernance d’Aave
Registre ENSEnregistre qui contrôle chaque nom .eth et vers quoi il pointe0x00000000000C2E074eC69A0dFb2997BA6C7d2e1eENSv2 en service depuis le 27 octobre 2026 ; un nom de cinq lettres ou plus coûte 8 dollars par anENSv2 tourne sur de nouveaux contrats ; la migration d’un nom est facultative et irréversible
Safe (singleton 1.4.1)Code partagé des portefeuilles multisignatures, qui exigent la signature de plusieurs propriétaires0x41675C099F32341bf84BFc5382aF534df5C7461a23 579 octets de code, près de la limite de tailleLes propriétaires choisissent les signataires et le seuil de leur propre portefeuille
Flux de prix ETH/USD de ChainlinkPublie un prix de l’ether que d’autres contrats lisent0x5f4eC3Df9cbd43714FE2740f5E3616155c5b84192 095,72 dollars, dernière mise à jour à 09:01:47 UTCOui : un proxy qui peut pointer vers un nouveau contrat de prix

USDC : un jeton est un contrat qui tient un registre

Un jeton n’est pas un fichier qui voyage de portefeuille en portefeuille. C’est une ligne dans le tableau d’un contrat : l’adresse A possède tant, l’adresse B possède tant. Envoyer des USDC revient à demander au contrat USDC de baisser un nombre et d’en augmenter un autre. La porte d’entrée en 0xA0b8…eB48 est un petit proxy qui transmet les appels au contrat de logique choisi par Circle. Notre lecture du contrat a montré que son administrateur de proxy et son propriétaire sont des adresses ordinaires, sans code, donc contrôlées par des clés, quelles que soient les garanties internes de Circle. Circle peut donc remplacer les règles de l’USDC et geler des adresses : c’est un jeton centralisé qui tourne sur un réseau décentralisé.

Uniswap : le pool détient lui-même l’argent

Le pool Uniswap est un contrat d’un autre genre. Personne chez Uniswap ne détient les 48 millions d’USDC et les 15 194 WETH (de l’ether enveloppé, transformé en jeton standard) qu’il contient : c’est le contrat qui les détient. À part les fournisseurs de liquidité (les utilisateurs qui ont déposé ces jetons) qui retirent leur propre dépôt, la seule façon de sortir des jetons est d’y mettre l’autre jeton, au prix que donne sa formule. Le 10 novembre 2026 à 09:43 UTC, ce prix ressortait à environ 2 103 dollars l’ether. Sur l’ensemble des chaînes, les contrats d’Uniswap V3 détenaient 1,48 milliard de dollars selon DefiLlama, et les plateformes d’échange décentralisées sur Ethereum ont traité environ 1,9 milliard de dollars d’échanges sur les 24 heures précédentes.

Aave : un prêt sans chargé de clientèle

Aave est un service de prêt construit avec des contrats. Un prêt y est une suite d’appels au contrat Pool : vous déposez une garantie, puis vous empruntez contre elle, et le contrat suit le rapport entre les deux. Si la valeur de votre garantie baisse trop, n’importe qui peut appeler le contrat pour rembourser une partie de votre dette et récupérer une partie de la garantie avec un bonus. Le Pool est lui aussi un proxy. Le contrat qui décide de la logique exécutée par le Pool appartient à un autre contrat, qu’Etherscan nomme « Executor » et étiquette « Aave: ACL Admin V3 2 » : un exécuteur de gouvernance, par lequel les détenteurs du jeton d’Aave appliquent leurs votes.

ENS : enregistrer un nom, c’est appeler un contrat

L’Ethereum Name Service transforme de longues adresses en noms comme alice.eth. Enregistrer un nom revient à appeler un contrat, à payer et à recevoir le nom sous forme de jeton dans son portefeuille. ENSv2 est entré en service sur le réseau principal d’Ethereum le 27 octobre 2026 ; un nom .eth de cinq caractères ou plus coûte désormais 8 dollars par an, payés en USDC ou en DAI, comme l’explique notre article sur le lancement d’ENSv2. Les anciens contrats d’enregistrement restent sur la chaîne, mais les nouveaux enregistrements par leur intermédiaire sont désactivés. Les contrats ne disparaissent pas ; leurs propriétaires orientent les utilisateurs ailleurs.

Un Safe est un portefeuille qui est lui-même un contrat. Il ne déplace des fonds que lorsque, par exemple, trois de ses cinq propriétaires ont signé, ce qui explique que des entreprises et des DAO (groupes qui décident par vote de jetons) l’utilisent pour garder leurs fonds. Le flux de Chainlink est un cas à part : il ne détient pas d’argent, il publie un prix que des contrats de prêt comme Aave lisent. Sa dernière mise à jour, à 09:01:47 UTC, datait de plus de 40 minutes quand nous l’avons lue, dans la limite du rafraîchissement horaire que le flux autorise quand le marché est calme.

Comment vérifier un smart contract sur Etherscan sans connecter de portefeuille

Notre guide pour lire un explorateur de blocs ouvre déjà l’onglet du contrat USDC. Voici le même parcours sur un autre contrat, le pool Uniswap du tableau. Il vous faut un navigateur, rien d’autre. Au 10 novembre 2026, Etherscan recensait 942 818 contrats vérifiés, si bien que les mêmes étapes valent pour la plupart des contrats que vous croiserez.

  1. Allez sur etherscan.io et collez 0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640 dans la barre de recherche. Copiez toujours les adresses depuis la documentation officielle du projet, jamais depuis un message privé ou une publicité, et vérifiez les premiers et derniers caractères.
  2. Sur la vue d’ensemble, ouvrez la liste des jetons détenus. Vous y verrez les USDC et les WETH du pool : c’est l’argent que le code contrôle.
  3. Cliquez sur l’onglet Contract. Une coche verte et la mention « Source Code Verified » signifient que le code source publié se compile exactement en octets identiques à ceux stockés sur la chaîne. Cela ne veut pas dire que le code est sûr ; Etherscan le précise lui-même.
  4. Ouvrez Read Contract. Chaque ligne est une fonction que vous pouvez exécuter gratuitement. Essayez token0 et token1 (elles renvoient les adresses de l’USDC et du WETH), fee (elle renvoie 500, soit 0,05 %) et liquidity.
  5. Cherchez les onglets Read as Proxy et Write as Proxy. Sur la page de l’USDC, ils sont présents, ce qui indique que la logique vit dans un autre contrat qui peut être remplacé. Un contrat qui n’en a pas, comme ce pool, exécute le code que vous lisez et rien d’autre.
  6. Repérez la ligne Contract Creator sur la vue d’ensemble : elle indique quelle adresse a déployé le contrat et dans quelle transaction, ce qui permet de voir son ancienneté.
  7. Ne cliquez pas sur Write Contract ni sur « Connect to Web3 » juste pour regarder. La lecture n’exige aucun portefeuille. L’écriture envoie une vraie transaction, et un site qui vous demande de connecter un portefeuille simplement pour « voir » un contrat est un piège classique.

Ce que les smart contracts font mieux qu’un intermédiaire

Le premier avantage est celui que décrivait Szabo : une exécution sans employé. Personne n’a à approuver un échange, à contrôler un formulaire ni à ouvrir le guichet. Le contrat répond à trois heures du matin un dimanche exactement comme un mardi après-midi, et un utilisateur de l’Ohio obtient les mêmes règles qu’un utilisateur de Londres ou de Lyon.

Le deuxième est que les règles sont publiques. Avec un contrat vérifié, vous pouvez lire le code même qui traitera votre argent, ou vous fier à des gens dont c’est le métier de le lire. Les systèmes internes d’une banque n’offrent rien de comparable.

Le troisième est que les contrats peuvent s’appeler entre eux. Un contrat de portefeuille peut appeler un contrat de prêt, qui lit un contrat de prix, que lit aussi un contrat de trading, le tout dans une seule transaction. Les développeurs appellent cela la composabilité ; c’est ce qui explique que de nouveaux services de DeFi (finance décentralisée) apparaissent vite, bâtis sur des briques qui fonctionnent déjà. Au 10 novembre 2026, les contrats de DeFi sur Ethereum détenaient 41,8 milliards de dollars (leur valeur totale verrouillée) selon DefiLlama, sur 78,8 milliards de dollars pour l’ensemble des chaînes qu’il suit.

La formule honnête est « moins de dépendance aux intermédiaires pour l’exécution », pas « aucune confiance nécessaire ». Quelqu’un a écrit le code, un auditeur l’a peut-être relu, un oracle l’alimente peut-être, et un administrateur peut peut-être le modifier.

Là où les smart contracts échouent : code irréversible et bugs coûteux

Un code qu’on ne peut pas modifier, et l’exception du proxy

Une fois déployé, le code d’un contrat est figé. C’est la source de sa valeur, puisque personne ne peut changer discrètement les règles, et de son danger, puisque personne ne peut corriger vite une erreur. Si le code laisse la mauvaise personne retirer des fonds, le retrait est valide aux yeux de la chaîne.

Les développeurs atténuent cela avec des proxys. L’adresse que les utilisateurs appellent contient très peu de code et transmet chaque requête à un contrat de logique distinct ; l’administrateur peut ensuite pointer le proxy vers un nouveau contrat de logique. L’USDC et le Pool d’Aave fonctionnent tous deux ainsi, comme l’ont montré nos lectures de leur stockage le 10 novembre 2026. Un proxy permet de corriger les bugs, mais il rétablit une personne ou un comité capable de changer les règles. Une prochaine leçon sur les contrats évolutifs et les clés d’administration approfondira ce compromis.

The DAO, juin 2016 : le bug qui a scindé Ethereum

The DAO (pour organisation autonome décentralisée) était un fonds d’investissement géré entièrement par un contrat. Le 17 juin 2016, Vitalik Buterin a averti sur le blog de la Fondation Ethereum qu’un attaquant exploitait une « recursive calling vulnerability » (faille d’appels récursifs) : le contrat envoyait de l’ether avant de mettre à jour ses propres registres, si bien que l’attaquant pouvait redemander encore et encore. Selon ethereum.org, plus de 3,6 millions d’ETH ont été siphonnés. La communauté a choisi de changer les règles : un hard fork, une modification du logiciel que tous les nœuds devaient adopter, au bloc 1 920 000 le 20 juillet 2016, a déplacé l’ether du contrat défaillant vers un nouveau contrat dont l’unique fonction permettait aux investisseurs de le retirer. Plus de 85 % des votes exprimés soutenaient le fork, selon ethereum.org ; les mineurs qui l’ont refusé ont poursuivi l’ancienne chaîne sous le nom d’Ethereum Classic. L’histoire complète figure dans notre guide sur les piratages et exploits de la DeFi.

Parity, novembre 2017 : un demi-million d’ETH gelés, pas volés

Le cas de Parity montre l’immuabilité dans ce qu’elle a de plus dur. Le 6 novembre 2017, un utilisateur anonyme a découvert qu’un contrat « bibliothèque » partagé, utilisé par tous les portefeuilles multisignatures Parity déployés après le 20 juillet 2017, n’avait jamais été initialisé. L’utilisateur s’en est déclaré propriétaire, puis a déclenché sa fonction d’autodestruction, qui efface le code d’un contrat de la chaîne. Selon le compte rendu de Parity lui-même, 513 774,16 ETH ont ainsi été bloqués dans 587 portefeuilles, avec d’autres jetons.

Personne n’a pris l’argent. Il est simplement devenu inaccessible, parce que les portefeuilles dépendaient d’un code qui n’existait plus. Parity a écrit que la fonction d’arrêt était un reliquat du contrat audité d’origine. Contrairement à The DAO, aucun fork n’est venu à la rescousse.

Truebit, janvier 2026 : un vieux code, sans contrôle de dépassement

Le 8 janvier 2026, un attaquant a siphonné environ 8 535 ETH, valant alors environ 26 millions de dollars, d’un contrat du protocole Truebit. Le contrat calculait le prix du jeton TRU avec une arithmétique qui pouvait déborder : un nombre devenait si grand qu’il retombait presque à zéro, si bien que l’on pouvait acheter des jetons pour presque rien et les revendre contre de l’ether. L’analyse de CertiK (en anglais) fait remonter la faille aux versions de Solidity antérieures à 0.8.0, qui n’ont pas de contrôle de dépassement intégré, et BlockSec (en anglais) note que le contrat était compilé avec la version 0.6.10. BlockSec a aussi dû travailler à partir de code machine décompilé, parce que le code source du contrat de logique n’était pas public : personne en dehors de l’équipe ne pouvait facilement lire les règles. Le contrat se trouvait derrière un proxy évolutif, ce qui n’a pas aidé, puisque CertiK indique que les jetons ont été créés et vendus dans une seule transaction, avant que quiconque puisse réagir.

DateContratCe qui a mal tournéMontantIssue
17 juin 2016The DAOEnvoi d’ether avant mise à jour des registres (appels récursifs)Plus de 3,6 millions d’ETH siphonnésHard fork le 20 juillet 2016 ; scission d’Ethereum Classic
6 novembre 2017Bibliothèque multisignature de ParityPropriétaire non initialisé, puis autodestruction513 774,16 ETH gelés dans 587 portefeuillesGelés, pas volés ; aucun fork pour les récupérer
8 janvier 2026TruebitDébordement de l’arithmétique des prix (Solidity 0.6.10)Environ 8 535 ETH, environ 26 millions de dollarsContrat vidé

Les audits réduisent le risque sans le supprimer

Un audit est une revue payante du code par des spécialistes de la sécurité, et il détecte beaucoup de problèmes. Il porte sur une version donnée du code, pour un périmètre donné, à une date donnée. La fonction d’arrêt de Parity venait d’un code audité, réutilisé ensuite autrement ; bien des protocoles audités ont été piratés depuis. Notre guide pour lire un rapport d’audit explique ce qu’un rapport promet et ce qu’il ne promet pas.

Un insecte, un flocon de neige, une chaîne brisée et un panneau d'alerte côte à côte
The DAO, Parity et Truebit : trois bugs que le code a exécutés exactement comme écrits.

Le problème de l’oracle : un contrat ne peut pas regarder par la fenêtre

Comme chaque nœud doit aboutir au même résultat, un contrat ne peut pas aller chercher le prix de l’ether sur un site web : deux nœuds qui interrogent à une seconde d’écart pourraient obtenir deux réponses différentes, et le réseau ne pourrait plus se mettre d’accord. Comme le dit la page d’ethereum.org sur les oracles, les contrats ne travaillent qu’avec des données déjà présentes sur la chaîne.

La solution est un oracle : un service qui écrit des données extérieures sur la chaîne pour que les contrats les lisent. Chainlink est le plus connu, et son flux ETH/USD du tableau en est un exemple. Le souci est que le contrat doit désormais faire confiance à celui qui l’alimente. Le matin du 10 novembre 2026, le flux affichait 2 095,72 dollars (dernière mise à jour à 09:01:47 UTC) alors que le pool Uniswap laissait entendre environ 2 103 dollars à 09:43 UTC : un écart d’un tiers de pour cent environ, normal pour un flux qui ne se met à jour que sur des mouvements plus importants ou une fois par heure, mais un prix faux ou manipulé peut déclencher des liquidations que le code exécutera sans discuter. Notre leçon sur les oracles de la DeFi traite à fond les défaillances et les parades.

Ce que « trustless » veut vraiment dire : la confiance se déplace, elle ne disparaît pas

On lit souvent que les smart contracts sont « trustless », c’est-à-dire sans besoin de confiance. Il est plus exact de dire que la confiance se déplace. Vous faites confiance au code plutôt qu’à un employé, et, à travers le code, à celui qui l’a écrit, à celui qui l’a audité et à celui qui détient ses clés d’administration.

Ces clés d’administration existent bel et bien. Dans nos lectures, les pouvoirs de mise à jour de l’USDC reposaient sur des adresses contrôlées par des clés, et le Pool d’Aave répondait à un contrat exécuteur de gouvernance. Rien n’y est caché, et les deux ont leurs raisons d’être (Circle doit pouvoir geler des fonds volés, Aave doit pouvoir corriger des bugs), mais un détenteur doit savoir qu’elles sont là. Une multisignature répartit ce pouvoir entre plusieurs signataires ; elle ne le supprime pas. Le vol d’environ 1,5 milliard de dollars chez Bybit en février 2025 est passé par une multisignature Safe : les contrats Safe n’étaient pas en cause ; l’attaque est venue d’un poste de développeur compromis chez Safe{Wallet}, l’interface qu’utilisaient les signataires, comme le raconte notre guide sur les piratages.

L’interface est un autre point de confiance. Le site que vous utilisez peut vous montrer une transaction trompeuse ou être détourné, même si le contrat qui se trouve derrière est sain. Lire ce que votre portefeuille vous demande de signer fait partie d’un usage prudent des contrats.

L’immuabilité peut aussi jouer dans l’autre sens. Les développeurs d’Ethereum discutent d’une révision des tarifs pour la mise à jour Glamsterdam qui rendrait beaucoup plus coûteuse l’écriture de nouvelles données sur la chaîne, et d’anciens contrats qui supposent des coûts en gas fixes pourraient cesser de fonctionner, sans possibilité de les modifier. Deux brouillons concurrents destinés à protéger ces contrats ont été déposés le 8 novembre 2026, et rien de tout cela n’est en service sur le réseau principal, comme l’explique notre article sur Glamsterdam et les anciens contrats. Les développeurs principaux d’Ethereum ont des réunions prévues les 12 et 19 novembre 2026, d’après le même article, et les vieux contrats ne peuvent pas participer à ce débat : quoi qu’il soit décidé, leur code reste tel quel.

Réponse courte : parfois, et surtout quand le code exécute un accord que le droit commun des contrats reconnaît déjà. Un smart contract est un programme, pas une catégorie juridique. L’existence d’un contrat dépend de ce que les parties ont convenu, selon le droit de leur pays. Quelques législateurs ont précisé que le recours à un smart contract ne rend pas un accord invalide. Et rien de tout cela n’empêche un tribunal d’ordonner à une personne de faire ce que le code ne fera pas : la chaîne ne peut pas être modifiée, mais les gens peuvent être condamnés à payer.

LieuTexteCe qu’il dit
Arizona, États-UnisA.R.S. 44-7061, issu de la House Bill 2417, approuvée le 29 mars 2017Les smart contracts « peuvent exister dans le commerce » ; un contrat ne peut se voir refuser d’effet juridique au seul motif qu’il contient une clause de smart contract
Angleterre et pays de GallesAvis de la Law Commission au gouvernement, 25 novembre 2021Le droit existant peut déjà soutenir les contrats juridiques intelligents, sans réforme législative ; les actes solennels (deeds) et le droit international privé demandent un travail supplémentaire
FranceCode civil (droit général des contrats) ; ordonnance 2017-1674 du 8 décembre 2017Les règles ordinaires des contrats s’appliquent à l’accord ; l’ordonnance permet d’inscrire certains titres financiers sur une blockchain
ItalieArt. 8-ter du décret-loi 135/2018, ajouté par la loi 12/2019 (en vigueur le 13 février 2019)Définit le smart contract et lui donne la valeur de la forme écrite une fois les parties identifiées selon les lignes directrices de l’AgID
Union européenneData Act, règlement (UE) 2023/2854, art. 36 (applicable depuis le 12 septembre 2025)Les smart contracts qui exécutent des accords de partage de données doivent respecter des exigences essentielles, dont l’arrêt et l’interruption en sécurité

En France, la réponse vient des règles ordinaires du Code civil, fondées sur le consentement des parties : le code peut exécuter un accord, mais c’est l’accord qui fait le contrat. La France a bien adopté un texte en 2017, l’ordonnance 2017-1674, permettant d’inscrire certains titres financiers dans un registre électronique partagé, une blockchain. C’est une règle sur les titres financiers, pas une reconnaissance générale des smart contracts.

Aux États-Unis, le droit des contrats relève surtout des États. L’Arizona est allé le plus loin en termes clairs : son texte, ajouté par la House Bill 2417 (en anglais), approuvée par le gouverneur le 29 mars 2017, dit qu’un contrat relatif à une transaction « ne peut se voir refuser d’effet juridique, de validité ou de force exécutoire au seul motif que ce contrat contient une clause de smart contract » (traduit de l’anglais), et définit le smart contract comme un programme déclenché par des événements, qui tourne sur un registre distribué et peut détenir et transférer des actifs sur ce registre (A.R.S. 44-7061, en anglais).

En Angleterre et au pays de Galles (l’Écosse a son propre droit), la Law Commission (en anglais) a conclu dans son avis au gouvernement du 25 novembre 2021 que le cadre juridique actuel est « clairement en mesure de faciliter et de soutenir l’usage de contrats juridiques intelligents » (traduit de l’anglais), sans qu’une réforme législative soit nécessaire. En clair, un contrat dont les termes sont écrits ou exécutés par du code peut être valable dans l’état actuel du droit. La Commission a désigné deux domaines nécessitant plus de travail : les actes solennels (deeds) et le droit international privé, c’est-à-dire les règles qui déterminent quels tribunaux d’un pays jugent un litige transfrontalier.

L’Italie définit le terme dans une loi. L’article 8-ter du décret-loi 135 du 14 décembre 2018, ajouté lors de sa conversion par la loi 12 du 11 février 2019, décrit un smart contract comme un programme informatique fonctionnant sur des registres distribués dont l’exécution lie automatiquement deux parties ou plus selon des effets qu’elles ont fixés à l’avance. Il satisfait à l’exigence de forme écrite une fois les parties identifiées par une procédure que la loi renvoie à des lignes directrices de l’AgID, l’agence nationale pour le numérique (Normattiva, en italien).

L’Union européenne a choisi une voie plus étroite. L’article 36 du Data Act (règlement (UE) 2023/2854, applicable depuis le 12 septembre 2025) ne vise que les smart contracts qui exécutent des accords de partage de données. L’éditeur de l’application, ou celui qui déploie ces contrats pour d’autres, doit assurer leur robustesse et le contrôle d’accès, un moyen d’archiver les données et le code si le contrat est arrêté, la cohérence avec l’accord de partage de données, et un mécanisme pour y mettre fin ou l’interrompre, puis établir une déclaration UE de conformité, d’après le texte sur EUR-Lex. Cette dernière exigence, souvent appelée kill switch (interrupteur d’arrêt), s’accorde mal avec des contrats conçus pour être impossibles à arrêter, mais elle ne couvre pas la DeFi en général.

Limites de taille et autres contraintes à connaître

Un contrat ne peut pas être aussi gros que ses auteurs le souhaitent : une règle appelée EIP-170 plafonne son code à environ 24 Ko, et notre leçon sur le fonctionnement de l’EVM explique ce plafond et la proposition de le relever. Les gros projets s’en approchent déjà : le pool Uniswap de notre tableau pèse 22 142 octets et le singleton Safe 23 579 octets, d’après nos lectures du 10 novembre 2026. C’est l’une des raisons pour lesquelles les grosses applications sont découpées en plusieurs contrats qui s’appellent entre eux.

Chaque appel se dispute aussi la place dans les blocs. Au bloc 26 383 689, un bloc pouvait contenir au plus 60 millions d’unités de gas et celui-ci était rempli à 56 %. Un contrat qui exige beaucoup de calcul pour un seul appel coûte plus cher à ses utilisateurs et, passé un certain seuil, ne peut plus s’exécuter dans une seule transaction.

Six questions à se poser avant de faire confiance à un smart contract

Aucune de ces questions ne vous dit s’il faut utiliser un protocole ; elles vous disent en quoi vous placez votre confiance si vous le faites.

  • Le source est-il vérifié sur l’explorateur de blocs, et l’adresse est-elle celle indiquée dans la documentation officielle du projet ?
  • S’agit-il d’un proxy, et si oui, qui peut changer la logique : une seule clé, une multisignature, un vote de gouvernance avec délai ?
  • Qui en est propriétaire ou administrateur, et ce propriétaire peut-il suspendre le contrat, geler des adresses ou déplacer des fonds ?
  • A-t-il été audité, par qui, sur quelle version et avec quelles remarques restées ouvertes ?
  • Dépend-il d’un oracle pour les prix, et que se passe-t-il si ce prix est faux ou en retard ?
  • Combien d’argent détient-il, et depuis combien de temps en détient-il autant sans incident ?

Le parcours se poursuit avec les standards de jetons, qui expliquent comment les jetons ERC-20 comme l’USDC et les NFT (jetons uniques, comme un nom ENS) tiennent leur registre, puis avec une leçon sur les risques et les audits des smart contracts qui applique ces six questions à des protocoles réels.

Sources

  1. Nick Szabo, Smart Contracts (1994) (en anglais) fon.hum.uva.nl
  2. Nick Szabo, Smart Contracts: Building Blocks for Digital Markets (1996) (en anglais) fon.hum.uva.nl
  3. ethereum.org : introduction aux smart contracts ethereum.org
  4. ethereum.org : histoire d'Ethereum (Frontier, fork de The DAO) ethereum.org
  5. Blog de la Fondation Ethereum : Critical update re: DAO vulnerability, 17 juin 2016 (en anglais) blog.ethereum.org
  6. Parity Technologies : compte rendu sur l'autodestruction de la bibliothèque multisignature, 15 novembre 2017, archivé (en anglais) web.archive.org
  7. CertiK : analyse de l'incident Truebit (en anglais) certik.com
  8. BlockSec : analyse approfondie de l'incident Truebit (en anglais) blocksec.com
  9. Arizona Revised Statutes 44-7061, blockchain et smart contracts (en anglais) azleg.gov
  10. Arizona Laws 2017, chapitre 97 (House Bill 2417) (en anglais) azleg.gov
  11. Law Commission of England and Wales : smart legal contracts (en anglais) lawcom.gov.uk
  12. Normattiva : décret-loi n. 135 du 14 décembre 2018, art. 8-ter (en italien) normattiva.it
  13. Règlement (UE) 2023/2854 (Data Act), article 36, sur EUR-Lex eur-lex.europa.eu
  14. ethereum.org : les oracles ethereum.org
  15. Etherscan : contrats vérifiés (en anglais) etherscan.io
  16. DefiLlama : TVL par chaîne (en anglais) defillama.com
Rédaction de Coindaro

Qui a écrit cet article

Équipe de rédaction

Guides, avis et glossaire vérifiés auprès des sources primaires

  • Formation crypto
  • Avis de plateformes
  • Portefeuilles
  • Glossaire

La rédaction de Coindaro recherche et écrit chaque article, avis et guide publié sur Coindaro. Chaque fait est vérifié auprès de sources primaires (documents officiels, régulateurs, documentation des projets) et chaque page cite ses sources. Nous couvrons les marchés crypto, la technologie et la régulation pour les lecteurs d’Europe et d’Amérique du Nord, en toute indépendance et sans contenu payé.

Continuer à apprendre