Pular para o conteúdo principal

Diretrizes de segurança do contrato inteligente

soliditycontratos inteligentessegurança
Intermediário
Trailofbits
Construindo contratos seguros(opens in a new tab)
6 de setembro de 2020
5 minutos de leitura minute read

Siga estas recomendações de alto nível para construir contratos inteligentes mais seguros.

Padrões de design

O design do contrato deve ser discutido antecipadamente, antes de escrever qualquer linha de código.

Documentação e especificações

A documentação pode ser escrita em diferentes níveis, e deve ser atualizada durante a implementação dos contratos:

Computação on-chain vs off-chain

  • Mantenha o máximo de código que puder off-chain (fora da cadeia). Mantenha a menor camada on-chain (dentro da cadeia). Pré-processe dados com código off-chain de tal forma que a verificação on-chain torne-se simples. Você precisa de uma lista ordenada? Ordene a lista off-chain, então apenas verifique a ordem on-chain.

Capacidade de Atualização

Nós discutimos as diferentes soluções de atualização em nosso blog(opens in a new tab). Faça ou não uma escolha deliberada para apoiar a capacidade de atualização antes de escrever qualquer código. A decisão irá influenciar como você estrutura nosso código. Em geral, recomendamos:

Orientações de implementação

Esforço pela simplicidade. Sempre use a solução mais simples que se encaixa em seu propósito. Qualquer membro da sua equipe deve ser capaz de entender a sua solução.

Composição de funções

A arquitetura da sua base de código deve facilitar a revisão do seu código. Evite escolhas arquitetônicas que diminuam a capacidade de raciocínio sobre sua exatidão.

  • Divida a lógica do seu sistema, seja por meio de vários contratos ou agrupando funções semelhantes juntas (por exemplo, autenticação, aritmética, ...).
  • Escreva funções pequenas, com um propósito claro. Isso facilitará uma revisão mais tranquila e permitirá o teste de componentes individuais.

Herança

Eventos

  • Registre todas as operações cruciais. Os eventos ajudarão a depurar o contrato durante o desenvolvimento e a monitorá-lo após a implantação.

Evite armadilhas conhecidas

Dependências

Teste e Validação

Solidity

Orientações de implantação

Uma vez que o contrato tenha sido desenvolvido e implantado:

Última edição: @pettinarip(opens in a new tab), 8 de dezembro de 2023

Este tutorial foi útil?