Passer au contenu principal

Prérequis

  • Un contrat déployé sur le testnet Plasma. Voir déployer un contrat si vous n’en avez pas encore déployé un.
  • Le code source de votre contrat et les paramètres de compilation.
  • Les arguments du constructeur utilisés lors du déploiement (le cas échéant).
L’explorateur de blocs Plasma (plasmascan.to) propose une API de vérification compatible Etherscan. Les exemples ci-dessous utilisent cette API directement — aucun compte tiers n’est requis pour soumettre une vérification.

Contrats d’exemple

Nous utiliserons deux contrats d’exemple pour démontrer à la fois des arguments de constructeur simples et complexes :

Contrat simple

Un contrat basique de stockage de données qui illustre les concepts fondamentaux des smart contracts.

Contrat complexe

Un système de coffre plus sophistiqué pour gérer les dépôts de tokens avec des paramètres configurables.

Vérifier avec Foundry

Foundry fournit la commande forge verify-contract pour la vérification de contrats.
  1. Assurez-vous que votre foundry.toml inclut les paramètres de vérification :
  2. Vérifiez le contrat. Pour le contrat SimpleStorage avec un argument de constructeur de type string :
    Pour le contrat TokenVault avec plusieurs arguments de constructeur :
  3. Vérifiez le statut de la vérification. Foundry affichera l’état de vérification en temps réel avec le drapeau --watch. Recherchez :

Vérifier avec Hardhat

Hardhat propose la vérification de contrats via le plugin @nomicfoundation/hardhat-verify.
  1. Mettez à jour votre hardhat.config.js pour inclure les paramètres de vérification :
  2. Vérifiez le contrat. Pour le contrat simple :
    Pour les contrats avec plusieurs arguments de constructeur, créez un script de vérification scripts/verify.js :
  3. Exécutez le script de vérification :

Vérification automatisée pendant le déploiement

Vous pouvez aussi vérifier des contrats automatiquement pendant le déploiement en ajoutant la vérification à votre script de déploiement :

Vérifier avec Ethers.js

Ethers.js nécessite des appels API manuels à l’explorateur de blocs pour la vérification. Cette approche vous donne un contrôle total sur le processus de vérification.
  1. Installez les dépendances requises :
  2. Créez le script de vérification verify-ethers.js :
  3. Encodez les arguments du constructeur. Pour des arguments de constructeur complexes, vous devez les encoder en ABI. Vous pouvez utiliser l’outil cast de Foundry :
  4. Enfin, lancez la vérification :

Vérifier le statut de vérification

Après la vérification, vous pouvez vérifier si elle a réussi :

Sur l’explorateur de blocs

  1. Visitez l’explorateur du testnet Plasma.
  2. Recherchez l’adresse de votre contrat.
  3. Recherchez une coche verte à côté de l’onglet « Contract ».
  4. Cliquez sur l’onglet « Contract » pour voir le code source vérifié.

Par programmation

  1. Créez un script de vérification de statut check-verification.js :

Méthodes alternatives

Bien que les explorateurs de blocs soient la méthode de vérification la plus courante, vous pouvez également utiliser :

Sourcify

Sourcify propose une vérification décentralisée des contrats :

Tenderly

Tenderly propose la vérification dans le cadre de sa plateforme de débogage. Consultez leur documentation pour plus de détails.

Aplatissement de contrat

Pour les contrats avec des imports ou des bibliothèques, vous devrez peut-être aplatir votre contrat en un seul fichier avant la vérification. Les outils populaires incluent : Pour les projets complexes avec des bibliothèques externes, consultez la documentation de vérification Hardhat pour les options de configuration avancées.

Dépannage

Décalage d’arguments de constructeur

Vérifiez à deux reprises que vos arguments de constructeur correspondent exactement à ceux utilisés lors du déploiement. Utilisez cast abi-encode pour vérifier l’encodage.

Décalage de version de compilateur

Assurez-vous que la version du compilateur dans votre requête de vérification correspond à la version utilisée lors de la compilation.

Décalage de paramètres d’optimisation

Vérifiez que les paramètres d’optimisation (activé/désactivé et nombre d’exécutions) correspondent à vos paramètres de compilation.

Déjà vérifié

Cela signifie que la vérification a déjà réussi. Vérifiez sur l’explorateur de blocs pour confirmer.

Limitation de débit

Attendez quelques minutes avant de réessayer. Envisagez de mettre à niveau votre plan API si vous avez besoin de limites plus élevées.