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.

  1. 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";
  2. Adicione um log temporário na função ou no auxiliar interno para investigar.
    console.log("value", value);
    O código a seguir mostra exemplos de log comuns.
    console.log("entered transfer");
    console.log("caller", msg.sender);
    console.log("amount", amount);
    console.log("is allowed", isAllowed);
    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.
  3. No formulário Implantar/Executar, selecione Limpar se precisar descartar artefatos antigos e, em seguida, selecione Compilar.
  4. Selecione Nó Local Hardhat como o ambiente.
  5. 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.
  6. 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.

  7. Abra o terminal Nó Local Hardhat no Visual Studio Code e inspecione as linhas de log emitidas.
  8. Remova a instrução de importação hardhat/console.sol e cada instrução console.log temporária.
  9. 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.