SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
30.11.2024

Aula 186: Depuração com o Trace do Solidity

A depuração é uma parte crucial do processo de desenvolvimento de software, especialmente no complexo mundo dos contratos inteligentes e blockchain. No Solidity, a depuração pode ser desafiadora devido à natureza das aplicações descentralizadas. Nesta aula, vamos explorar como usar a rastreabilidade para depurar contratos inteligentes em Solidity de forma eficaz.

O que é Rastreabilidade?

A rastreabilidade permite que você acompanhe a execução do código do seu contrato inteligente passo a passo. Ela fornece insights sobre o estado do contrato, os valores das variáveis locais e o fluxo de execução. Esse recurso pode ajudar a identificar problemas ou comportamentos inesperados em seus contratos inteligentes.

Configurando Seu Ambiente

Para acompanhar esta aula, você precisará ter as seguintes ferramentas instaladas:

  • Node.js e npm: Para ambiente de execução JavaScript e gerenciador de pacotes.
  • Truffle: Um popular framework de desenvolvimento para Ethereum.
  • Ganache: Uma blockchain Ethereum pessoal para testar contratos inteligentes.

Você pode instalar o Truffle e o Ganache usando o npm:

npm install -g truffle

Baixe o Ganache no site da Truffle Suite.

Escrevendo um Contrato Inteligente Simples

Vamos criar um contrato inteligente simples que usaremos para depuração com rastreabilidade.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SimpleStorage {
    uint256 private storedData;

    event DataStored(uint256 data);

    function set(uint256 x) public {
        storedData = x;
        emit DataStored(x);
    }

    function get() public view returns (uint256) {
        return storedData;
    }
}

Este contrato permite que os usuários armazenem um único valor uint256 e o recuperem.

Implantando o Contrato

Crie um novo projeto Truffle e implante o contrato. Execute os seguintes comandos:

mkdir SimpleStorage
cd SimpleStorage
truffle init

Substitua o conteúdo de contracts/Migrations.sol pelo seu contrato e execute a migração:

truffle migrate

Certifique-se de que o Ganache esteja em execução para testar o contrato em uma blockchain local.

Usando o Depurador do Truffle

Para depurar seu contrato inteligente, você pode usar o Depurador do Truffle, que fornece rastros de transações executadas no seu contrato inteligente.

Enviando uma Transação

Primeiro, vamos enviar uma transação para definir alguns dados:

truffle console

Dentro do console, execute:

let instance = await SimpleStorage.deployed();
await instance.set(42);

Depurando a Transação

Depois de enviar a transação, você receberá um hash de transação. Use esse hash para iniciar a depuração com o Truffle. Saia do console e execute o seguinte comando no seu terminal:

truffle debug <transaction_hash>

Rastreabilidade Passo a Passo

Dentro do prompt de depuração, você pode fazer várias coisas. Use os seguintes comandos:

  • t ou trace: Para ver o rastreio da transação.
  • s ou step: Para avançar por cada instrução executada.
  • v ou vstate: Para visualizar o estado do contrato em qualquer ponto durante sua execução.

Exemplo de fluxo de depuração:

  1. Comece o rastreio: t
  2. Entre na função set: s
  3. Inspecione os estados das variáveis: v

Isso permite que você veja como o controle flui pelo seu contrato e como as variáveis mudam ao longo do tempo.

Conclusão

Nesta aula, demonstramos como usar a rastreabilidade para depurar contratos inteligentes em Solidity. Ao aproveitar o Depurador do Truffle, você pode obter insights sobre a execução do seu contrato, ajudando a identificar e corrigir problemas antes de implantar na mainnet.

Lembre-se, a depuração é um processo iterativo, e usar a rastreabilidade de forma eficaz pode economizar seu tempo e frustrações no seu fluxo de trabalho de desenvolvimento. Boa programação!

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!