Tempo de leitura: 4 minutos
Este guia pode ajudá-lo a encontrar aquele bug desagradável que o incomoda e as ferramentas para corrigi-lo.
A depuração é crucial para qualquer ciclo de desenvolvimento de software; humanos sempre cometem erros. É por isso que somos imbatíveis; cometemos erros e aprendemos com eles. A depuração é um processo de descobrir onde nosso código está atrasado, corrigi-lo e aprender sobre esse erro para que ele não seja repetido.
O desenvolvimento de contratos inteligentes é crucial para a construção de aplicativos blockchain. Mas, como em qualquer outro ciclo de desenvolvimento de software, a depuração de contratos inteligentes às vezes pode ser desafiadora e, como aqui geralmente lidamos com uma grande quantia de dinheiro, não podemos deixar nada ao acaso. Temos que ser perfeitos em escrever contratos inteligentes e perfeitos em depurar. É por isso que criamos este blog para que você possa aprender sobre depuração com os melhores.
Antes de consertar qualquer coisa, precisamos conhecer o problema, então vamos começar identificando diferentes tipos de bugs no desenvolvimento de contratos inteligentes.
Erros comuns
Nesta seção, exploraremos diferentes tipos de bugs que os desenvolvedores de contratos inteligentes encontram regularmente.
- Erro de sintaxe:– Este erro é fácil de corrigir. Isso acontece quando um desenvolvedor comete um erro de código que impede o computador de entendê-lo, como perder um ponto e vírgula.
- Erro lógico:- Às vezes, esse tipo de erro pode ser difícil de encontrar. Não impede a execução, mas altera a funcionalidade do programa. Este programa se comporta inesperadamente como um contrato inteligente que transfere dinheiro para o endereço incorreto ao enviar dinheiro de uma conta para outra.
- Erro de tempo de execução:- Esses erros são difíceis de prever. Eles vêm em um momento inesperado e em lugares inesperados. Isso ocorre durante a execução de contratos inteligentes e ocorre devido ao tratamento ineficiente de exceções. Por exemplo, isso pode ocorrer quando um contrato falha ao lidar com entradas inesperadas ou tenta realizar uma operação proibida pelo blockchain subjacente. Por exemplo, um contrato está tentando transferir mais dinheiro do que o parâmetro permitido.
- Erros Revertidos de Execução:- Isso acontece quando o usuário faz qualquer solicitação ilegítima que vai contra a lógica do contrato inteligente, então a solicitação é cancelada e revertida. Isso acontece porque, às vezes, os contratos inteligentes exigem que certos requisitos sejam atendidos para processar a transação. Ainda assim, o usuário prossegue com a transação sem cumprir os requisitos, e então a transação não é transportada e revertida. Por exemplo, um usuário está tentando transferir $ 100, mas tem um saldo de $ 50.
- Stack Overflow:- Os recursos para a execução das operações custam uma taxa de gás. Quanto mais pesada a função, maior o custo. Alguns dos mecanismos pesados na codificação são loops e
chamadas recursivas<!– wp:paragraph –>Chamada recursiva é uma condição que pode se referir a si mesma e chamá-la novamente várias vezes em um loop. A função recursiva usa caso base (if) e caso de indução (else). Os ataques de reentrada são executados explorando chamadas recursivas no código. <br/><!– /wp:parágrafo –>
” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>chamadas recursivas. Estouro de pilha tem a ver com
chamadas recursivas<!– wp:paragraph –>Chamada recursiva é uma condição que pode se referir a si mesma e chamá-la novamente várias vezes em um loop. A função recursiva usa caso base (if) e caso de indução (else). Os ataques de reentrada são executados explorando chamadas recursivas no código. <br/><!– /wp:parágrafo –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>chamadas recursivas.
chamadas recursivas<!– wp:paragraph –>Chamada recursiva é uma condição que pode se referir a si mesma e chamá-la novamente várias vezes em um loop. A função recursiva usa caso base (if) e caso de indução (else). Os ataques de reentrada são executados explorando chamadas recursivas no código. <br/><!– /wp:parágrafo –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>Chamadas recursivas são um método de invocar uma função dentro da mesma função com entradas diferentes Você pode pensar em uma função recorrente como a máquina de caldo de cana. A máquina se comporta como função e a cana como insumo. Cada tiragem de cana da máquina significa uma chamada de função. Depois de um tempo, a cana entra na máquina novamente, e esse processo continua se repetindo. Isso é que é recorrência. Mas como queremos cortar custos de gás e recursos EVM, o ethereum limita a chamada de recorrência em até 1024 vezes. Quando você chama uma função pela 1025ª vez, isso resulta em um estouro de pilha.
- erro de salto:- Quando você tenta chamar uma função que não existe ou usa a linguagem assembly e aponta para uma memória falsa, isso resulta em um erro. Isso pode até acontecer quando você chama uma função de algum outro contrato, mas essa função não existe. Esses tipos de erros são chamados de erros JUMP.
Esses foram alguns erros comuns de contrato inteligente que os desenvolvedores encontram; Às vezes, os erros podem ser difíceis de detectar e entender. Para encontrar os erros e tentar corrigi-los, contamos com a ajuda de várias ferramentas. Vamos analisá-los um por um na próxima seção.
Quatro ferramentas úteis de depuração
Nesta seção, aprenderemos sobre ferramentas amplamente utilizadas para identificar e resolver bugs pelos desenvolvedores mais experientes em todo o mundo. Vamos.
Capacete de segurança
Esta ferramenta é amplamente utilizada e aceita para testar contratos inteligentes em vários parâmetros. Ele fornece um ambiente de desenvolvimento de código aberto para Ethereum. Inclui ferramentas para desenvolver, testar e implantar contratos inteligentes. Seu depurador integrado é útil para muitos desenvolvedores em todo o mundo. Isso também desempenha um papel importante na fase de teste.
Truffle
Esta é uma estrutura de desenvolvimento popular para Ethereum. Como hardhat, inclui ferramentas para desenvolver, testar e implantar contratos inteligentes e também construiu Depurador de trufas, que ajuda os desenvolvedores com uma experiência de desenvolvimento tranquila no estágio de teste.
Remix
Este é o que quase todos os desenvolvedores encontraram quando começaram sua jornada no web3. Este é um editor de código online para solidez, portanto, nenhuma instalação offline é necessária para começar o desenvolvimento. Seu recurso de depuração integrado permite que os desenvolvedores verifiquem o código e inspecionem problemas de variáveis. E tudo isso online sem necessidade de ferramentas offline.
Etherscan
Este é um explorador de blocos amplamente confiável e popular para Ethereum. Ele permite que os desenvolvedores inspecionem e depurem contratos inteligentes implantados na blockchain Ethereum. Usando isso, você pode rastrear transações e atividades de qualquer endereço ou contrato. Isso ajuda a identificar onde estaria o problema se o seu contrato inteligente estiver enfrentando algum problema na cadeia.
Conclusão
A depuração de contratos inteligentes é difícil e às vezes frustrante, mas é uma etapa crucial relacionada à segurança e aos testes. É aqui que as vulnerabilidades têm maior probabilidade de se apresentar aos hackers e podem levar o protocolo à falha completa. Para se salvar de tais circunstâncias, é altamente recomendável fazer auditorias.
A QuillAudits está nessa vertical há muito tempo e possui uma equipe especializada que pode lidar com todas as vulnerabilidades possíveis e ajudá-lo a proteger seu protocolo. Sobre o teste, sua importância e sua relação com a depuração, leia o blog detalhado, que o ajudará a entender todos os aspectos https://blog.quillhash.com/2023/02/16/testing-and-formal-verification/. Visite nosso site e tenha seu projeto auditado!
12 Visualizações
- Conteúdo com tecnologia de SEO e distribuição de relações públicas. Seja amplificado hoje.
- Platoblockchain. Inteligência Metaverso Web3. Conhecimento Ampliado. Acesse aqui.
- Fonte: https://blog.quillhash.com/2023/03/03/4-most-useful-smart-contract-debugging-tools/
- a
- Sobre
- Conta
- em
- atividade
- endereço
- Depois de
- contra
- Todos os Produtos
- permite
- sempre
- quantidade
- e
- Outro
- aplicações
- por aí
- aspecto
- Montagem
- Ataques
- Tentativas
- auditorias
- Equilíbrio
- base
- Porque
- MELHOR
- Bloquear
- blockchain
- aplicações blockchain
- Blog
- Bug
- erros
- Prédio
- construído
- construídas em
- chamada
- chamado
- chamadas
- não podes
- transportar
- casas
- certo
- desafiante
- chance
- circunstâncias
- código
- Codificação
- como
- comum
- completar
- computador
- condição
- contract
- contratos
- Custo
- custos
- crucial
- Cortar
- ciclo
- acordo
- implantado
- Implantação
- detalhado
- Developer
- desenvolvedores
- em desenvolvimento
- Desenvolvimento
- diferente
- difícil
- durante
- cada
- editor
- Meio Ambiente
- erro
- erros
- ethereum
- Blockchain Ethereum
- Mesmo
- Cada
- EVM
- exemplo
- exceção
- executando
- execução
- vasta experiência
- experiente
- especialista
- explorar
- explorador
- enfrentando
- falha
- Falha
- Característica
- taxa
- Encontre
- Primeiro nome
- Fixar
- para a frente
- Quadro
- da
- frustrante
- função
- funcionalidade
- GAS
- ter
- Go
- vai
- guia
- hackers
- manipular
- Manipulação
- acontecer
- acontece
- Queijos duros
- fortemente
- pesado
- ajudar
- útil
- ajuda
- SUA PARTICIPAÇÃO FAZ A DIFERENÇA
- altamente
- HTTPS
- enorme
- Humanos
- identificar
- identificar
- importância
- in
- inclui
- ineficiente
- entrada
- emitem
- questões
- IT
- se
- viagem
- saltar
- Saber
- atraso
- língua
- conduzir
- APRENDER
- aprendizagem
- Deixar
- Permite
- Provável
- limites
- longo
- muito tempo
- máquina
- fazer
- FAZ
- muitos
- significa
- Memória
- método
- desaparecido
- erro
- dinheiro
- mais
- a maioria
- você merece...
- Próximo
- modo offline
- Na cadeia
- ONE
- online
- open source
- operação
- Operações
- Outros
- parâmetro
- parâmetros
- perfeita
- fase
- Locais
- platão
- Inteligência de Dados Platão
- PlatãoData
- ponto
- Popular
- possível
- predizer
- presente
- evitar
- prossegue
- processo
- programa
- projeto
- protocolo
- fornece
- Quilhash
- Leia
- reincidência
- recorrente
- Recursivo
- em relação a
- regularmente
- relacionado
- relação
- repetido
- solicitar
- requerer
- Requisitos
- Recursos
- Resultados
- Tipo
- Execute
- mesmo
- Salvar
- digitalização
- Seção
- seguro
- segurança
- envio
- smart
- smart contract
- Smart Contracts
- So
- Software
- desenvolvimento de software
- solidez
- alguns
- pilha
- Etapa
- começado
- Ainda
- tal
- Tire
- Profissionais
- ensaio
- A
- o mundo
- deles
- si mesmos
- Através da
- tempo
- vezes
- para
- também
- ferramenta
- ferramentas
- pista
- transação
- Transações
- transferência
- fáceis
- perturbador
- confiável
- tipos
- para
- subjacente
- compreender
- compreensão
- Inesperado
- us
- usar
- Utilizador
- vário
- vulnerabilidades
- vulnerabilidade
- Web3
- Site
- O Quê
- qual
- largamente
- precisarão
- dentro
- sem
- mundo
- no mundo todo
- seria
- escrita
- Vocês
- investimentos
- você mesmo
- zefirnet