Terme du Glossaire20 avril 2024

Contrat Intelligent

Code auto-exécutable déployé sur une blockchain qui applique automatiquement les accords — le fondement de la DeFi et la plus grande source de risque de protocole en crypto.

smart-contractethereumsoliditydefiaudit

Définition

Code auto-exécutable déployé sur une blockchain qui applique automatiquement les accords — le fondement de la DeFi et la plus grande source de risque de protocole en crypto.

Contrat Intelligent

En termes simples : Un contrat intelligent est un code informatique qui vit sur la blockchain et s'exécute automatiquement — aucun humain ne peut l'arrêter, le censurer ou en modifier les termes après le déploiement. C'est un distributeur automatique : vous insérez des tokens, il vous donne ce pour quoi vous avez payé, sans caissier. C'est la magie de la DeFi. C'en est aussi le danger : si le code a un bug, le distributeur peut avaler votre argent, et il n'y a aucun gestionnaire à qui vous plaindre.

Un contrat intelligent est un programme auto-exécutable déployé sur une blockchain qui applique automatiquement les termes d'un accord lorsque des conditions prédéterminées sont remplies. Ces programmes s'exécutent exactement comme programmés, sans possibilité de panne, de censure, de fraude ou d'interférence de tiers. Les contrats intelligents alimentent tout dans la DeFi : bourses décentralisées, protocoles de prêt, stablecoins, dérivés, agrégateurs de rendement — chaque « brique monétaire » qui compose le système financier on-chain.

Pour les traders, les contrats intelligents sont à la fois le moteur des opportunités et le principal vecteur de risque. Chaque fois que vous interagissez avec un protocole DeFi — swap sur un DEX, dépôt dans un pool de prêt, staking dans un agrégateur de rendement — vous faites confiance au code du contrat intelligent pour qu'il soit correct, sécurisé et non malveillant. Les exploits de contrats intelligents ont entraîné des milliards de fonds perdus (le hack du pont Wormhole : 326 M$ ; le hack du pont Ronin : 625 M$ ; le hack d'Euler : 197 M$). Comprendre comment fonctionnent les contrats intelligents, comment ils sont audités et mis à niveau, et comment évaluer le risque de contrat intelligent est une compétence de survie essentielle pour tout trader ayant du capital dans la DeFi.

Comment ça fonctionne

Les contrats intelligents sont écrits dans des langages de programmation spécifiques à la blockchain (Solidity pour Ethereum/chaînes EVM, Rust pour Solana, Move pour Aptos/Sui), compilés en bytecode, et déployés sur la blockchain dans une transaction. Une fois déployé, le contrat reçoit une adresse unique, et n'importe qui peut interagir avec lui en envoyant des transactions à cette adresse avec les appels de fonction et paramètres appropriés.

Propriétés clés :

Immutabilité (en quelque sorte) : Le code d'un contrat intelligent déployé ne peut pas être modifié — à moins que le développeur n'ait inclus un mécanisme de mise à niveau. Plus de détails ci-dessous.

Déterminisme : Étant donné les mêmes entrées et le même état de la blockchain, un contrat intelligent produit toujours la même sortie. Tous les nœuds exécutant le contrat doivent arriver au même résultat pour que le consensus fonctionne.

Composabilité : Les contrats intelligents peuvent appeler d'autres contrats intelligents, permettant des chaînes complexes d'interactions automatisées. C'est la propriété des « briques monétaires » qui rend la DeFi possible mais crée également un risque systémique — un bug dans un contrat peut cascader à travers tous les protocoles qui en dépendent.

Transparence : Le code du contrat est visible sur la chaîne (si vérifié). N'importe qui peut l'auditer, vérifier l'absence de portes dérobées, ou confirmer que le bytecode déployé correspond au code source publié. Cette transparence est une fonctionnalité de sécurité mais signifie également que les hackers peuvent étudier le code à la recherche de vulnérabilités aussi facilement que les auditeurs.

Modèles de mise à niveau : La véritable immutabilité est rare dans la DeFi. La plupart des protocoles utilisent des modèles de proxy où le contrat côté utilisateur (le proxy) délègue toute la logique à un contrat d'implémentation qui peut être échangé par les administrateurs du protocole. Cela permet les corrections de bugs et les mises à niveau de fonctionnalités mais introduit une confiance : les clés d'administration peuvent potentiellement être utilisées pour remplacer l'implémentation par un code malveillant. Lors de l'évaluation d'un protocole DeFi, comprenez qui détient les clés d'administration, si elles sont derrière un multisig, un timelock ou un vote de gouvernance, et à quoi ressemblerait le pire scénario de compromission des clés d'administration.

Pourquoi c'est important pour les traders

Le risque de contrat intelligent est le plus grand risque non compensé dans la DeFi. Lorsque vous déposez des fonds dans un protocole DeFi, vous gagnez un rendement (compensé pour le risque de liquidité, le risque de perte impermanente, le risque de dépréciation du token), mais le risque de contrat intelligent (la probabilité d'un exploit de code entraînant une perte totale) n'est presque jamais explicitement compensé. Ce risque est binaire et sévère — perte zéro ou perte totale. La diversification entre les protocoles réduit ce risque, tout comme la préférence pour les protocoles avec des historiques d'audit étendus, des programmes de bug bounty importants et de longs antécédents opérationnels sans incidents.

Les mises à niveau de contrat peuvent vous ruiner. Les développeurs d'un protocole peuvent proposer une « mise à niveau » qui modifie la logique du contrat pour drainer tous les fonds des utilisateurs. Cela s'est produit : l'exploit d'Uranium Finance (50 M$ perdus en 2021) impliquait un contrat modifié lors d'une migration. Les mises à niveau légitimes utilisent une gouvernance transparente (multisig + timelock, ou vote DAO) qui donne aux utilisateurs le temps de sortir avant que les changements ne prennent effet. Si un protocole peut mettre à niveau des contrats sans préavis ni timelock, vos fonds sont à la merci des détenteurs de clés d'administration.

Les audits sont nécessaires mais pas suffisants. Un audit de contrat intelligent par un cabinet réputé (Trail of Bits, OpenZeppelin, Quantstamp) réduit mais n'élimine pas le risque. Les audits sont des évaluations ponctuelles d'une version spécifique du code. Ils ne couvrent pas : (a) les mises à niveau après l'audit, (b) les interactions avec d'autres contrats hors du périmètre, (c) les attaques économiques (manipulation d'oracles, attaques de gouvernance) plutôt que les bugs de code, et (d) l'erreur humaine des auditeurs. Des audits multiples provenant de différents cabinets, un programme de bug bounty généreux et un historique de fonctionnement sécurisé sont les meilleurs indicateurs disponibles de la sécurité d'un contrat intelligent.

Erreurs courantes

  1. Considérer « audité » comme « sûr ». Audit ne signifie pas absence de bugs. Des protocoles audités ont été piratés à de nombreuses reprises (Euler, Nomad, Wormhole étaient tous audités). Un audit signifie que des examinateurs professionnels ont étudié le code et trouvé des classes spécifiques de problèmes à un moment précis. C'est un signal de qualité, pas une garantie.
  2. Ignorer les clés d'administration et le risque de mise à niveau. Avant de déposer un capital important, demandez : Qui peut mettre à niveau ce contrat ? Y a-t-il un timelock ? Combien de signataires sur le multisig ? Quelle est la pire chose que l'administrateur pourrait faire ? Si les réponses sont « développeur unique, pas de timelock, peut drainer tous les fonds instantanément », et que vous déposez quand même, vous accordez un crédit non garanti à un développeur anonyme. C'est un pari asymétrique qui paie parfois et d'autres fois détruit le capital.
  3. Vérifier les contrats sur le mauvais explorateur ou avec les mauvais paramètres. Un contrat peut être « vérifié » sur Etherscan mais afficher un code source qui ne correspond pas au bytecode réellement déployé (si la vérification a été effectuée incorrectement). Vérifiez toujours que le bytecode déployé correspond au code source publié, ou fiez-vous à des protocoles établis avec des milliers de vérifications indépendantes. Pour les nouveaux protocoles, partez du principe que le code est malveillant jusqu'à preuve du contraire.

FAQ

Q : Comment puis-je vérifier si un contrat intelligent est sûr ? R : (1) Confirmez qu'il est vérifié sur l'explorateur de blocs avec un code source correspondant. (2) Vérifiez les audits de cabinets réputés et lisez les rapports d'audit (concentrez-vous sur les résultats critiques/élevés et leur résolution). (3) Examinez l'historique opérationnel du protocole — depuis combien de temps est-il en activité, quelle est la valeur maximale qu'il a sécurisée, y a-t-il eu des incidents passés ? (4) Vérifiez la structure des clés d'administration — multisig avec timelock, ou clé unique ? (5) Évaluez la taille et l'historique du programme de bug bounty. (6) Consultez les discussions communautaires pour tout problème de sécurité. Ce n'est pas une garantie mais filtre les risques les plus évidents.

Q : Que se passe-t-il si un contrat intelligent a un bug et que mes fonds sont volés ? R : Dans la plupart des cas, rien. Il n'y a pas d'assurance, pas de service client et aucun recours juridique (l'exploiteur est anonyme et le protocole est décentralisé). Certains protocoles ont des fonds d'assurance (Safety Module d'Aave, couverture Nexus Mutual) qui peuvent indemniser les utilisateurs, mais la couverture est limitée et les réclamations sont lentes. Supposez que tous les fonds dans un contrat intelligent pourraient tomber à zéro. La seule récupération passe parfois par des négociations white-hat (l'exploiteur restitue les fonds contre une prime) ou par les forces de l'ordre (si l'exploiteur est identifié et tracé).

Q : Que sont les contrats proxy et pourquoi sont-ils importants ? R : Un contrat proxy est un modèle de conception où les fonds des utilisateurs sont détenus dans un contrat proxy qui délègue tous les appels de fonction à un contrat d'implémentation (logique). L'implémentation peut être échangée, permettant au protocole de se mettre à niveau sans que les utilisateurs aient à déplacer leurs fonds. C'est essentiel pour les corrections de bugs mais introduit un risque : si la clé d'administration est compromise, une implémentation malveillante peut être déployée pour voler tous les fonds des utilisateurs. Les protocoles atténuent ce risque par des clés d'administration multisig, des timelocks (délai entre la proposition de mise à niveau et l'exécution, donnant aux utilisateurs le temps de sortir) et des votes de gouvernance. Vérifiez toujours le mécanisme de mise à niveau avant de déposer un capital important.

Termes connexes

Prêt à Commencer le Trading ?

Rejoignez la communauté The Kingfisher et accédez à des outils de trading professionnels et des analyses exclusives.