Depurar um Contrato
Você pode usar os logs da console do Solidity para depurar contratos que estão sendo executados no nó local do Hardhat simulado.
Para depurar um contrato, implante-o no ambiente Hardhat Local Node integrado e faça todas as alterações de log apenas em uma ramificação de depuração local ou cópia de trabalho temporária.
O ambiente local incorporado é chamado hardhatnode e usa http://127.0.0.1:8545 com o ID de cadeia 31337. Não é um ambiente Oracle Blockchain Platform ou outro ambiente EVM salvo. Quando você o seleciona para implantar ou executar um contrato e nenhum nó local está atendendo, o Blockchain App Builder para Besu inicia um nó Hardhat para o projeto selecionado e abre o terminal de nó local Hardhat.
- Na parte superior do arquivo Solidity que contém o caminho do código que você deseja inspecionar, adicione a importação do console Hardhat.
import "hardhat/console.sol"; - Adicione um log temporário na função ou no auxiliar interno para investigar.
O código a seguir mostra exemplos de log comuns.console.log("value", value);
Use o tipo de valor que corresponde à variável que você está inspecionando. Estes exemplos abrangem strings, endereços, valores inteiros e valores boolianos. Mantenha as instruções de log restritas e temporárias; não registre chaves privadas, tokens de autenticação ou outras credenciais.console.log("entered transfer"); console.log("caller", msg.sender); console.log("amount", amount); console.log("is allowed", isAllowed); - No formulário Implantar/Executar, selecione Limpar se precisar descartar artefatos antigos e, em seguida, selecione Compilar.
- Selecione Nó Local Hardhat como o ambiente.
- Implante a instância do contrato local ou use um proxy local que já esteja implantado. Atenda a quaisquer pré-requisitos de implantação específicos do projeto, como contratos de governança, na rede local.
- Abra o painel Executar, selecione o token local ou o proxy da conta, informe os parâmetros da função e selecione Consultar ou Chamar.
Consulta conclui uma chamada local e Chamar envia uma transação local. Pode atingir um caminho de código registrado, mas apenas uma chamada altera o estado da cadeia simulada.
- Abra o terminal Nó Local Hardhat no Visual Studio Code e inspecione as linhas de log emitidas.
- Remova a instrução de importação
hardhat/console.sole cada instruçãoconsole.logtemporária. - Limpe e compile novamente antes de confirmar o código ou usar um Oracle Blockchain Platform Besu, outro EVM ou ambiente de produção.
Não tente usar a instrumentação somente Hardhat para o Oracle Blockchain Platform ou outros ambientes EVM. Em vez disso, use eventos de aplicativos comuns, rastreamento de transações fora da cadeia ou observabilidade aprovada pelo ambiente. O log da console não substitui os diagnósticos de produção.
Solucionando Problemas do Processo de Depuração
| Condição | Resolução |
|---|---|
hardhat/console.sol não pode ser encontrado
|
Execute Instalar Dependências no projeto selecionado e, em seguida, compile novamente. A importação é fornecida pela dependência de Hardhat do projeto. |
| O nó local não é iniciado | Confirme se o projeto selecionado contém hardhat.config.ts ou hardhat.config.js, verifique se o Node.js e o npm estão disponíveis para o Visual Studio Code e verifique se há erros de inicialização no terminal Hardhat Local Node.
|
| Nenhum log é exibido | Confirme se o Nó Local do Hardhat é o ambiente selecionado, se o caminho do código chamado atinge a instrução de log e se você está exibindo o terminal do Nó Local do Hardhat em vez de um terminal do Oracle Blockchain Platform ou do projeto. |
| O aplicativo está usando o código antigo | Selecione Limpar e, em seguida, Compilar, antes de implantar ou chamar novamente. |
| Falha em um build ou implantação não local após a depuração | Remova cada importação e chamada console.log do hardhat/console.sol e, em seguida, limpe e compile o projeto novamente.
|