Déboguer un contrat
Vous pouvez utiliser les journaux de la console Solidity pour déboguer les contrats en cours d'exécution sur le noeud local Hardhat simulé.
Pour déboguer un contrat, déployez-le dans l'environnement intégré de noeud local Hardhat et apportez toutes les modifications de journalisation uniquement dans une branche de débogage locale ou une copie de travail temporaire.
L'environnement local intégré est nommé hardhatnode et utilise http://127.0.0.1:8545 avec l'ID de chaîne 31337. Il ne s'agit pas d'un environnement Oracle Blockchain Platform ou d'un autre environnement EVM enregistré. Lorsque vous le sélectionnez pour déployer ou exécuter un contrat et qu'aucun noeud local n'écoute, Blockchain App Builder for Besu démarre un noeud Hardhat pour le projet sélectionné et ouvre le terminal de noeud local Hardhat.
- En haut du fichier Solidity qui contient le chemin de code que vous souhaitez inspecter, ajoutez l'import de la console Hardhat.
import "hardhat/console.sol"; - Ajoutez un journal temporaire dans la fonction ou l'assistant interne à examiner.
Le code suivant présente des exemples de journaux courants.console.log("value", value);
Utilisez le type de valeur correspondant à la variable que vous inspectez. Ces exemples couvrent les chaînes, les adresses, les valeurs entières et les valeurs booléennes. Conservez des instructions de journal étroites et temporaires ; ne consignez pas de clés privées, de jetons d'authentification ou d'autres informations d'identification.console.log("entered transfer"); console.log("caller", msg.sender); console.log("amount", amount); console.log("is allowed", isAllowed); - Dans le formulaire Déployer/exécuter, sélectionnez Nettoyer si vous devez ignorer les anciens artefacts, puis sélectionnez Compiler.
- Sélectionnez l'environnement Noeud local Hardhat.
- Déployez l'instance de contrat local ou utilisez un proxy local qui est déjà déployé. Satisfaire les prérequis de déploiement spécifiques au projet, tels que les contrats de gouvernance, dans le réseau local.
- Ouvrez le panneau Exécuter, sélectionnez le jeton local ou le proxy de compte, entrez les paramètres de la fonction, puis sélectionnez Requête ou Appeler.
La requête termine un appel local et l'option Appeler envoie une transaction locale. L'un ou l'autre peut atteindre un chemin de code consigné, mais seul un appel modifie l'état de la chaîne simulée.
- Ouvrez le terminal Noeud local Hardhat dans Visual Studio Code et examinez les lignes de journal émises.
- Enlevez l'instruction import
hardhat/console.solet toutes les instructionsconsole.logtemporaires. - Nettoyez et compilez à nouveau avant de valider le code ou d'utiliser Oracle Blockchain Platform Besu, un autre environnement EVM ou un environnement de production.
N'essayez pas d'utiliser l'instrumentation Hardhat uniquement pour Oracle Blockchain Platform ou d'autres environnements EVM. Utilisez plutôt des événements d'application ordinaires, le traçage des transactions hors chaîne ou l'observabilité approuvée par l'environnement. La journalisation de la console ne remplace pas les diagnostics de production.
Résoudre les problèmes liés au processus de débogage
| Condition | Résolution |
|---|---|
hardhat/console.sol introuvable
|
Exécutez Installer les dépendances dans le projet sélectionné, puis compilez à nouveau. L'import est fourni par la dépendance Hardhat du projet. |
| Le noeud local ne démarre pas | Vérifiez que le projet sélectionné contient hardhat.config.ts ou hardhat.config.js, vérifiez que Node.js et npm sont disponibles pour Visual Studio Code et recherchez les erreurs de démarrage dans le terminal Hardhat Local Node.
|
| Aucun journal n'est affiché | Vérifiez que Hardhat Local Node est l'environnement sélectionné, que le chemin de code appelé atteint l'instruction de journal et que vous visualisez le terminal Hardhat Local Node plutôt qu'un terminal de projet ou Oracle Blockchain Platform. |
| L'application utilise l'ancien code | Sélectionnez Nettoyer, puis Compiler, avant de déployer ou d'appeler à nouveau. |
| Une construction ou un déploiement non local échoue après le débogage | Enlevez tous les appels hardhat/console.sol import et console.log, puis nettoyez et compilez à nouveau le projet.
|