Terme du Glossaire20 avril 2024

Contrat intelligent

Code auto-exécutable déployé sur une blockchain qui applique automatiquement les accords

smart-contractethereumsoliditydefiaudit

Définition

Code auto-exécutable déployé sur une blockchain qui applique automatiquement les accords

Contrat intelligent

Un contrat intelligent est un code informatique qui réside sur la blockchain et s'exécute automatiquement. Aucun humain ne peut l'arrêter, le censurer ou en modifier les termes après son déploiement. C'est un distributeur automatique : vous insérez des jetons, il vous donne ce pour quoi vous avez payé, sans caissier. C'est la magie de la DeFi. C'est aussi le danger : si le code contient un bug, le distributeur automatique pourrait avaler votre argent, et il n'y a pas de gérant à qui se 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é d'interruption, de censure, de fraude ou d'interférence de tiers. Les contrats intelligents alimentent tout dans la DeFi : les échanges décentralisés, les protocoles de prêt, les stablecoins, les produits dérivés, les agrégateurs de rendement. Chaque "lego monétaire" qui compose le système financier on-chain.

Pour les traders, les contrats intelligents sont à la fois le moteur d'opportunités et le principal vecteur de risque. Chaque fois que vous interagissez avec un protocole DeFi, que vous échangez sur un DEX, que vous déposez dans un pool de prêt, que vous stakez dans un agrégateur de rendement, vous faites confiance à ce que le code du contrat intelligent 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 millions de dollars ; le hack du pont Ronin : 625 millions de dollars ; le hack d'Euler : 197 millions de dollars). Comprendre comment fonctionnent les contrats intelligents, comment ils sont audités et mis à niveau, et comment évaluer le risque des contrats intelligents est une compétence de survie essentielle pour tout trader ayant des capitaux en DeFi.

Comment ça marche

Les contrats intelligents sont écrits dans des langages de programmation spécifiques à la blockchain (Solidity pour les chaînes Ethereum/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 les paramètres appropriés.

Propriétés clés :

Immuabilité (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 "legos monétaires" qui rend la DeFi possible mais crée également un risque systémique : un bug dans un contrat peut se propager à tous les protocoles qui en dépendent.

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

Modèles d'évolutivité : La véritable immuabilité est rare en DeFi. La plupart des protocoles utilisent des modèles de proxy où le contrat visible par l'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 des corrections de bugs et des mises à niveau de fonctionnalités, mais introduit de la confiance : les clés d'administration peuvent potentiellement être utilisées pour remplacer l'implémentation par un code malveillant. Lors de l'évaluation de tout 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 ressemble le pire scénario de compromission des clés d'administration.

Pourquoi c'est important pour les traders

Le risque lié aux contrats intelligents est le plus grand risque non compensé en DeFi. Lorsque vous déposez des fonds dans un protocole DeFi, vous gagnez un rendement (compensé pour le risque de liquidité, le risque d'IL, le risque de dépréciation des jetons), mais le risque lié aux contrats intelligents (la probabilité d'un exploit de code entraînant une perte totale) n'est presque jamais explicitement compensé. Ce risque est binaire et grave, zéro perte ou perte totale. La diversification entre les protocoles réduit ce risque, tout comme la préférence pour les protocoles ayant des antécédents d'audit étendus, des primes de bug importantes et de longs historiques opérationnels sans incidents.

Les mises à niveau de contrats peuvent vous ruiner. Les développeurs d'un protocole peuvent proposer une "mise à niveau" qui modifie la logique du contrat pour siphonner tous les fonds des utilisateurs. Cela s'est produit : l'exploit d'Uranium Finance (50 millions de dollars perdus en 2021) impliquait un contrat modifié lors de la migration. Les mises à niveau légitimes utilisent une gouvernance transparente (multisig + timelock, ou vote DAO) qui donne aux utilisateurs le temps de se retirer 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 la clé d'administration.

Les audits sont nécessaires mais pas suffisants. Un audit de contrat intelligent par une entreprise réputée (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 non inclus dans le périmètre, (c) les attaques économiques (manipulation d'oracles, attaques de gouvernance) plutôt que les bugs de code, et (d) les erreurs humaines des auditeurs. Plusieurs audits de différentes entreprises, un programme de primes de bug généreux et un historique d'opérations sécurisées sont les meilleurs indicateurs disponibles de la sécurité des contrats intelligents.

Erreurs courantes

  1. Traiter "audité" comme "sûr". Audité ne signifie pas sans bug. Des protocoles audités ont été piratés de nombreuses fois (Euler, Nomad, Wormhole ont tous été audités). Un audit signifie que des examinateurs professionnels ont examiné le code et ont trouvé des classes spécifiques de problèmes à un moment donné. C'est un signal de qualité, pas une garantie.
  2. Ignorer le risque lié aux clés d'administration et aux mises à niveau. Avant de déposer un capital important, demandez-vous : 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 siphonner tous les fonds", 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 rapporte parfois et parfois détruit le capital.
  3. Vérifier les contrats sur le mauvais explorateur ou avec de 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 à la source publiée, ou fiez-vous à des protocoles établis avec des milliers de vérifications indépendantes. Pour les nouveaux protocoles, supposez 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 d'entreprises réputées et lisez les rapports d'audit (concentrez-vous sur les conclusions critiques/élevées et si elles ont été résolues). (3) Examinez l'historique opérationnel du protocole : depuis combien de temps est-il en ligne, 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) Examinez la taille et l'historique du programme de primes de bug. (6) Vérifiez les discussions de la communauté pour toute préoccupation de sécurité. Ce n'est pas une garantie mais cela 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 support client et pas de recours juridique (l'exploiteur est anonyme et le protocole est décentralisé). Certains protocoles ont des fonds d'assurance (module de sécurité d'Aave, couverture Nexus Mutual) qui peuvent indemniser les utilisateurs, mais la couverture est limitée et les réclamations sont lentes. Supposons que tous les fonds dans un contrat intelligent puissent tomber à zéro. La seule récupération se fait occasionnellement par des négociations avec des hackers éthiques (l'exploiteur restitue les fonds contre une prime) ou par les forces de l'ordre (si l'exploiteur est identifié et retrouvé).

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 besoin de déplacer des fonds. C'est essentiel pour les corrections de bugs mais cela introduit un risque : si la clé d'administration est compromise, une implémentation malveillante peut être déployée qui vole tous les fonds des utilisateurs. Les protocoles atténuent cela grâce à 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 se retirer) et des votes de gouvernance. Vérifiez toujours le mécanisme de mise à niveau avant de déposer un capital important.

étude détaillée

Vous voulez en savoir plus ? Consultez :

Termes associés

Prêt à Commencer le Trading ?

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