Blockchain et technologie Guide 6 sur 6

Comment vérifier un smart contract avant d’interagir avec lui

Des vérifications pratiques qu'un non-développeur peut effectuer avant d'approuver une transaction — statut de vérification, fonctions privilégiées, portée des autorisations et révocation.

Illustration for: How to check a smart contract before you interact

Vous n’avez pas besoin de lire du code pour éviter la majorité des catastrophes liées aux smart contracts. La plupart des pertes proviennent d’un petit nombre de conditions vérifiables.

1. Le contrat est-il vérifié ?

Un contrat vérifié a un code source publié, dont un explorateur de blockchain a confirmé qu’il se compile bien vers le bytecode déployé. Non vérifié signifie que personne, à part le déployeur, ne sait ce qu’il fait réellement.

Traitez un contrat non vérifié comme hostile. Il n’y a aucune raison légitime pour un projet qui demande votre argent de cacher son code source. Cette seule vérification en élimine une grande partie.

2. Que peut faire le propriétaire ?

Même dans du code vérifié, un non-développeur peut rechercher les fonctions qui comptent. Cherchez :

  • mint — le propriétaire peut-il créer un nombre illimité de nouveaux tokens ? Cela vous dilue jusqu’à rien, à volonté.
  • pause / blacklist — peuvent-ils vous empêcher de vendre, ou bloquer spécifiquement votre adresse ? Les tokens « pot de miel » fonctionnent exactement ainsi : vous pouvez acheter, puis vous ne pouvez plus vendre.
  • setFee / setTax — les frais de transfert peuvent-ils être modifiés après votre achat ? Des frais relevés à 99% sont un piège.
  • onlyOwner — combien de fonctions sont restreintes à une seule adresse, et cette adresse est-elle une clé unique ou une multisig ?

De nombreux explorateurs affichent désormais ces informations automatiquement. Si le propriétaire peut émettre, suspendre ou taxer à volonté, les règles du token sont ce qu’il décidera demain.

3. Comprenez ce que vous autorisez

C’est là que se produisent la plupart des vidages de portefeuille. Pour permettre à un contrat de déplacer vos tokens, vous lui accordez une allowance. Deux choses surprennent les gens :

  • Les allowances sont fréquemment illimitées. De nombreuses interfaces approuvent par défaut le montant maximum possible, si bien que le contrat peut déplacer tous les tokens de ce type que vous détenez — maintenant, et tous ceux que vous acquerrez plus tard.
  • Elles persistent indéfiniment. L’autorisation reste active après votre transaction, jusqu’à ce que vous la révoquiez. Un protocole compromis un an plus tard peut toujours agir sur une allowance que vous avez accordée aujourd’hui.

Lisez l’écran d’approbation. Votre portefeuille indique quel contrat et quel montant sont concernés. Si c’est indiqué comme illimité et que vous effectuez un échange ponctuel, définissez plutôt un montant précis.

4. Reconnaître une demande de signature malveillante

Toute signature n’est pas une transaction. Certaines demandes vous invitent à signer un message qui accorde des permissions hors chaîne — une technique très utilisée sur les faux sites de mint et d’airdrop.

Signes d’alerte : une demande de signature que vous n’avez pas initiée ; une demande apparaissant juste après avoir cliqué sur un lien reçu par message privé ou par publicité ; une demande dont votre portefeuille ne parvient pas à décoder le contenu en quelque chose de lisible ; ou n’importe quelle invite sur un site atteint depuis une source non sollicitée. En cas de doute, refusez. Une action légitime peut toujours être répétée.

5. Révoquez les anciennes autorisations

Faites-en une habitude. Utilisez un outil de révocation réputé — atteint en tapant l’adresse directement, car de faux sites de révocation existent et constituent exactement le genre de piège qui attrape les utilisateurs soucieux de leur sécurité — et supprimez les allowances dont vous n’avez plus besoin, en particulier les illimitées et celles accordées à des protocoles que vous n’utilisez plus.

6. Maniez « audité » avec précaution

Un audit est un examen ponctuel réalisé par des personnes faillibles, souvent sur une version qui a changé par la suite. De nombreux protocoles audités ont été exploités.

Questions utiles : qui l’a réalisé, le rapport est-il public, quelle était la gravité des problèmes trouvés, ont-ils été corrigés, et le contrat a-t-il été modifié depuis ? Un simple « audité par » sans rapport lié n’est que du marketing.

7. Privilégiez les contrats éprouvés par le temps

Le signal le plus fort disponible, c’est la survie. Un protocole qui détient une valeur importante depuis des années sans avoir été exploité a subi des attaques continues d’adversaires bien financés, et a tenu bon. C’est un test plus exigeant que n’importe quel audit.

Les nouveaux contrats n’ont, par définition, pas encore fait leurs preuves, quelle que soit la qualité apparente du code.

Une check-list de dernière vérification

  • Contrat vérifié sur un explorateur de blockchain
  • Aucune fonction de mint illimité, de pause, de blacklist ou de frais modifiables — ou propriété renoncée
  • Portée de l’autorisation comprise, et limitée quand c’est possible
  • Demande de signature initiée par moi, sur un site auquel j’ai accédé directement
  • Le protocole a un historique de fonctionnement significatif et une valeur en jeu réelle
  • J’utilise un portefeuille ne contenant que ce que je peux me permettre de perdre

À lire ensuite

Vous avez terminé le parcours Gains & DeFi — et les quatre parcours au total. Le glossaire couvre tout terme que vous voulez revoir, et le centre d’apprentissage affiche votre progression.

Participer à la discussion

Une question, ou une erreur repérée ?

Les commentaires sont ouverts aux membres et modérés avant publication. Les questions et corrections sont toujours les bienvenues ; la promotion et les pronostics de prix ne le sont pas.

  • Gratuit — une adresse e-mail et un mot de passe, rien de plus
  • Enregistrez des guides et suivez votre progression
  • La lecture ne nécessite jamais de compte

S'inscrire Se connecter