Si vous êtes un développeur Solidity, vous serez ravi d'apprendre que Truffle prend désormais en charge la journalisation de la console dans les contrats intelligents Solidity . Bien que Truffle soit depuis longtemps un leader des outils de développement de contrats intelligents, fournissant un environnement facile à utiliser pour créer, tester et déboguer des contrats intelligents, une console.log directement intégrée était une fonctionnalité dont il avait encore besoin.
Mais pas plus! Les développeurs peuvent désormais facilement consigner les messages et déboguer leurs contrats intelligents, le tout dans l'environnement familier Truffle (Ganache). Voyons comment.
Console.log est une fonctionnalité très populaire de JavaScript et est largement utilisée par les développeurs pour générer facilement des messages de journalisation et extraire des détails directement à partir du code. Dans le contexte du développement de contrats intelligents et du web3, console.log joue un rôle similaire, permettant aux développeurs d'imprimer des variables Solidity et d'autres informations à partir de leurs contrats intelligents.
Par exemple, vous pouvez utiliser console.log pour afficher la valeur d'une variable ou la sortie d'un appel de fonction dans votre contrat intelligent. Cela peut être extrêmement utile lors du débogage ou du test de votre contrat intelligent.
console.log("Console Logging: The Smart Contract Developer's Best Friend");
L'utilisation de console.log est assez simple. Tout d'abord, vous devrez vous assurer que vous disposez d'une version à jour de Truffle en cours d'exécution sur votre ordinateur. Si vous rencontrez des problèmes, vous pouvez désinstaller complètement le package, puis le réinstaller. Pour les commandes utilisées dans cet article, nous utiliserons NPM comme gestionnaire de packages.
$ npm install -g truffle
Après une installation réussie, je vous suggère de modifier le fichier de configuration de truffle (c'est-à-dire truffle-config.js ) comme suit :
module.exports = { . . . solidityLog: { displayPrefix: ' :', // defaults to "" preventConsoleLogMigration: true, // defaults to false }
Vous êtes maintenant prêt à l'essayer ! Importez le contrat contract.sol dans votre code Solidity comme d'habitude. Vous êtes maintenant prêt à utiliser la commande console.log() comme vous le feriez en JavaScript.
Cela inclut l'utilisation de substitutions de chaînes telles que %s et %f .
pragma solidity ^0.8.9; import "truffle/console.sol"; contract BookStore { //... function transfer(address to, uint256 amount) external { console.log("Transferring %s tokens to %s", amount, to); require(balances[msg.sender] >= amount, "Not enough tokens"); balances[msg.sender] -= amount; balances[to] += amount; emit Transfer(amount, to, msg.sender); } }
La fonction de transfert ci-dessus montre console.log en action. Imaginez qu'un appel à la fonction de transfert échoue avec l'erreur « Pas assez de jetons ». La ligne console.log, dans ce cas, affichera le nombre de jetons que l'appel tente de transférer. Cela permet au développeur de voir l' adresse et le nombre de jetons transférés. Le message ressemblera à ceci.
... Transferring 10 tokens to 0x377bbcae5327695b32a1784e0e13bedc8e078c9c
Une meilleure façon de déboguer cela pourrait être d'ajouter les balances[msg.sender]
dans l'instruction console.log ou de l'imprimer sur une ligne séparée. De cette façon, le solde de l'expéditeur est également visible dans la console. Tu obtiens le point!
Vous pouvez également laisser des journaux dans les réseaux de test et principaux ; de cette façon, vous aurez une belle façon d'observer votre contrat intelligent. Et il convient de mentionner que des outils comme Tenderly intégreront la suppression des journaux, ce qui peut être utile lors du débogage et du test de contrats intelligents dans un environnement de production.
Enfin, lorsque vous utilisez la journalisation de la console, il est important de suivre toutes les bonnes règles d'utilisation que vous connaissez déjà, telles que l'utilisation de messages de journal clairs et descriptifs. Cela facilitera la compréhension de la sortie et l'identification des problèmes qui pourraient survenir.
Bien que la journalisation de la console soit un outil puissant pour déboguer les contrats intelligents, gardez à l'esprit que Truffle propose également d'autres outils de débogage. Truffle dispose d'un puissant outil CLI de débogage intégré qui peut être utilisé pour parcourir l'exécution d'un contrat intelligent et inspecter l'état des variables à différents moments de l'exécution. De plus, les événements sont un bon moyen de consigner les messages et de suivre le comportement d'un contrat intelligent.
Cela dit, il convient de noter que l'utilisation du débogueur pour quelque chose d'aussi simple que la sortie variable peut être exagérée. De même, la journalisation des événements ne fonctionne que lorsque la transaction réussit, ce qui peut être une limitation dans certaines situations.
L'essentiel est que la fonctionnalité console.log, en combinaison avec les autres outils de débogage de Truffle, peut offrir une meilleure expérience de développement, grâce à sa simplicité et sa facilité d'utilisation . Il donne aux développeurs la possibilité de consigner rapidement et facilement les messages et de surveiller le comportement de leurs contrats intelligents, tandis que les autres outils de débogage peuvent être utilisés pour un débogage et un dépannage plus avancés.
La nouvelle fonctionnalité de journalisation de la console de Truffle est un ajout précieux au développement de contrats intelligents. Il est facile à utiliser et peut rationaliser le processus de débogage et de test. La possibilité de consigner les messages et de suivre le comportement des contrats intelligents en temps réel peut réduire les inefficacités et les maux de tête. C'est un excellent outil à avoir dans votre boîte à outils.