Testando contratos inteligentes

Dec 22 2022
Como testar contratos inteligentes e por que fazê-lo? A etapa básica do desenvolvimento de contratos inteligentes para suas soluções web3 é testá-lo antes mesmo de implantá-lo na testnet. A execução de testes que verificam o recurso implementado é crucial! Agenda: “O teste de contrato inteligente significa realizar análise e avaliação detalhadas de um contrato inteligente para avaliar a qualidade de seu código-fonte durante o ciclo de desenvolvimento.

Como testar contratos inteligentes e por que fazê-lo?

A etapa básica do desenvolvimento de contratos inteligentes para suas soluções web3 é testá-lo antes mesmo de implantá-lo na testnet. A execução de testes que verificam o recurso implementado é crucial!

Agenda:

  • introdução,
  • O que é isso?
  • o que faz?
  • Ferramentas,
  • conclusão.

“O teste de contrato inteligente significa realizar análise e avaliação detalhadas de um contrato inteligente para avaliar a qualidade de seu código-fonte durante o ciclo de desenvolvimento.”

Em palavras simples e práticas: testar é escrever variantes simples de usar os recursos e esperar que os resultados sejam iguais às declarações predefinidas.

Exemplo simples, o contrato inteligente está transferindo tokens de endereço para endereço e é tudo.

É necessário escrever testes como este:

  • gerar duas carteiras (por exemplo Alice & Bob),
  • execute a função de transferência de Alice para bob com ativos iguais a 1 ETH,
  • espere que a carteira Bob aumente o valor em 1 ETH,
  • espere que a carteira Alice diminua em 1 ETH,
  • verifique se os casos extremos são tratados adequadamente, como uma tentativa de transferir mais fundos do que possui, etc.

O que faz?

“Testar um contrato inteligente facilita a identificação de bugs e vulnerabilidades e reduz a possibilidade de erros de software que podem levar a explorações dispendiosas.”

De acordo com o exemplo acima com Alice e Bob, o teste verifica os recursos implementados antes da implantação. Eles devem lançar erros para bugs e permitir identificá-los facilmente, se os testes forem descritos corretamente.

fontes de definições:

Ferramentas

Os contratos inteligentes são escritos principalmente em Solidity, mas o teste é feito com JavaScript. Diferentes plataformas, soluções oferecem alguma arquitetura fácil para teste, uma delas é a trufa.

Mais sobre trufa:

Truffle cria uma estrutura de pastas adequada que é a mesma para todos os projetos, resumidamente:

  • existe uma pasta de contratos na qual os contratos são armazenados,
  • e há uma pasta de testes que armazena os testes.

mocha.js:

documentos chai.js:

No arquivo de teste, os contratos são iniciados e, em seguida, diferentes condições são verificadas.

Os testes são executados com o comando cli no nível do terminal e é tudo.

Para ter o contrato implantado localmente e implementar carteiras geradas com alguns fundos, extremamente útil é o ganache do kit de ferramentas de trufas. Ele apenas executa um blockchain loca e cria carteiras com saldo de 100ETH.

Mais sobre ganache:

Waffle

É outra ferramenta de teste de contrato inteligente criada pela ETHWorks.

“Ele permite criar novos contratos inteligentes e testá-los usando Mocha e Chai. Muitas pessoas preferem o Waffle ao invés da Trufa, pois é mais simples e fácil de aprender.”

Mais em:

Conclusão

Testar contratos inteligentes é uma habilidade poderosa e realmente necessária, que pode evitar a perda de uma grande quantidade de ativos. Blockchain é imutável, se o contrato for implantado com erros, no cenário de sorte ele perde apenas alguns recursos. O pior caso é quando algum usuário perde fundos.

Você gostou? Segue repo com todos os tópicos do desafio: