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.
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");
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 }
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.
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.
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.