paint-brush
Depuração Fácil de Contrato Inteligente com o Console.log do Trufflepor@MichaelB
994 leituras
994 leituras

Depuração Fácil de Contrato Inteligente com o Console.log do Truffle

por Michael4m2023/01/30
Read on Terminal Reader

Muito longo; Para ler

Trufa agora [suporta ](https://trufflesuite.com/blog/truffle-now-supports-console-logging-in-solidity-smart-contract/)** em [Solidity. Console.log é um recurso muito popular em JavaScript e é amplamente usado por desenvolvedores para gerar facilmente mensagens de log e extrair detalhes do código.
featured image - Depuração Fácil de Contrato Inteligente com o Console.log do Truffle
Michael HackerNoon profile picture

Se você é um desenvolvedor do Solidity, ficará animado em saber que o Truffle agora oferece suporte ao registro de console em contratos inteligentes do Solidity . Embora a Truffle seja há muito tempo líder em ferramentas de desenvolvimento de contratos inteligentes - fornecendo um ambiente fácil de usar para criar, testar e depurar contratos inteligentes - um console.log diretamente integrado era um recurso que ainda precisava.


Mas não mais! Os desenvolvedores agora podem registrar mensagens facilmente e depurar seus contratos inteligentes, tudo dentro do ambiente familiar Truffle (Ganache). Vejamos como.

O que é Console.log?

Console.log é um recurso muito popular em JavaScript e é amplamente usado por desenvolvedores para enviar facilmente mensagens de registro e extrair detalhes diretamente do código. No contexto de web3 e desenvolvimento de contratos inteligentes, o console.log desempenha um papel semelhante, permitindo que os desenvolvedores imprimam variáveis do Solidity e outras informações de seus contratos inteligentes.


Por exemplo, você pode usar console.log para exibir o valor de uma variável ou a saída de uma chamada de função em seu contrato inteligente. Isso pode ser extremamente útil ao depurar ou testar seu contrato inteligente.

 console.log("Console Logging: The Smart Contract Developer's Best Friend");

Como usar o log do console no trufa

Fazer uso do console.log é bastante simples. Primeiro, você terá que garantir que tem uma versão atualizada do Truffle em execução no seu computador. Se você tiver algum problema, convém desinstalar o pacote completamente e reinstalá-lo. Para os comandos usados neste post, usaremos o NPM como nosso gerenciador de pacotes.


 $ npm install -g truffle


Após uma instalação bem-sucedida, sugiro que você modifique o arquivo de configuração da trufa (ou seja , trufa-config.js ) da seguinte forma:

 module.exports = { . . . solidityLog: { displayPrefix: ' :', // defaults to "" preventConsoleLogMigration: true, // defaults to false }
  • displayPrefix : decora as saídas do console.log para diferenciá-lo de outros conteúdos exibidos pela CLI.
  • preventConsoleLogMigration : telas de implementações de contrato quando em um teste ou rede principal. Você pode cancelar isso se desejar implantar seu contrato com o console.log incluído. No entanto, se você optar por fazer isso, lembre-se de que o console.log tem um comportamento imprevisível quando se trata de uso de gás.


Agora você está pronto para experimentá-lo! Importe o contrato contract.sol para o seu código Solidity como de costume. Agora você está pronto para usar o comando console.log() como faria em JavaScript.

Isso inclui o uso de substituições de strings como %s e %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); } }


A função de transferência acima mostra console.log em ação. Imagine uma chamada para a função de transferência falhando com o erro “ Tokens insuficientes ”. A linha console.log, neste caso, mostrará o número de tokens que a chamada está tentando transferir. Isso permite que o desenvolvedor veja o endereço e a quantidade de tokens sendo transferidos. A mensagem ficará assim.


 ... Transferring 10 tokens to 0x377bbcae5327695b32a1784e0e13bedc8e078c9c

Uma maneira ainda melhor de depurar isso seria adicionar balances[msg.sender] na instrução console.log ou imprimi-lo em uma linha separada. Dessa forma, o saldo do remetente também fica visível no console. Você entendeu!


Você também pode deixar logs em test e mainnets; dessa forma, você terá uma boa maneira de observar seu contrato inteligente. E vale ressaltar que ferramentas como Tenderly integrarão o scrapping de logs, o que pode ser útil na depuração e teste de contratos inteligentes em um ambiente de produção.


Por fim, ao usar o log do console, é importante seguir todas as boas regras de uso que você já conhece, como usar mensagens de log claras e descritivas. Isso tornará mais fácil entender a saída e identificar quaisquer problemas que possam surgir.

Outras ferramentas de depuração em trufas

Embora o log do console seja uma ferramenta poderosa para depurar contratos inteligentes, lembre-se de que o Truffle também oferece outras ferramentas de depuração. O Truffle possui uma poderosa ferramenta CLI de depuração integrada que pode ser usada para percorrer a execução de um contrato inteligente e inspecionar o estado das variáveis em diferentes pontos da execução. Além disso, os eventos são uma boa maneira de registrar mensagens e rastrear o comportamento de um contrato inteligente.


Dito isso, vale a pena notar que usar o depurador para algo tão simples quanto a saída variável pode ser um exagero. Da mesma forma, o log de eventos só funciona quando a transação é bem-sucedida, o que pode ser uma limitação em determinadas situações.


O ponto principal é que o recurso console.log — em combinação com as outras ferramentas de depuração do Truffle — pode fornecer uma melhor experiência ao desenvolvedor, graças à sua simplicidade e facilidade de uso . Ele oferece aos desenvolvedores a capacidade de registrar mensagens de maneira rápida e fácil e monitorar o comportamento de seus contratos inteligentes, enquanto as outras ferramentas de depuração podem ser usadas para depuração e solução de problemas mais avançadas.

Experimente

O novo recurso de registro de console do Truffle é uma adição valiosa ao desenvolvimento de contratos inteligentes. É fácil de usar e pode agilizar o processo de depuração e teste. A capacidade de registrar mensagens e rastrear o comportamento de contratos inteligentes em tempo real pode reduzir ineficiências e dores de cabeça. É uma ótima ferramenta para ter em sua caixa de ferramentas.