Uma mentalidade diferente de design

O desenvolvimento de aplicações em um ambiente blockchain possui suas particularidades — por exemplo, o fato de que o custo de falhas é extremamente alto. Nesse sentido, ele se assemelha mais ao desenvolvimento de hardware do que ao de software tradicional.

Por isso, é necessário adotar uma mentalidade de design específica, com base nos seguintes princípios:

Esteja preparado para falhas: Seu código deve estar pronto para lidar com cenários de erro e vulnerabilidades, tratando-os de forma adequada.

  • Implemente um “disjuntor” (circuit breaker) que permita pausar o contrato quando algo der errado.

  • Gerencie o valor em risco, por exemplo, limitando o nĂşmero de transações por endereço IP em determinado perĂ­odo (rate limiting).

  • Planeje uma rota de atualização (upgrade) para corrigir bugs e implementar melhorias.

Mantenha-se atualizado: Acompanhe os avanços mais recentes em segurança.

  • Revise seus contratos assim que novas vulnerabilidades forem identificadas.

  • Atualize para a Ăşltima versĂŁo de qualquer ferramenta ou biblioteca o quanto antes.

  • Adote práticas de segurança que se provem eficazes.

Mantenha a simplicidade: Complexidade aumenta a probabilidade de erros.

  • Garanta que a lĂłgica dos seus contratos seja simples e direta.

  • Modularize o cĂłdigo, mantendo contratos e funções pequenos.

  • Utilize bibliotecas testadas pelo tempo.

  • Prefira clareza Ă  performance sempre que possĂ­vel.

  • Use blockchain apenas quando a descentralização fizer sentido.

Teste seu cĂłdigo: Detectar falhas cedo Ă© sempre melhor.

  • Teste seus contratos exaustivamente e adicione novos testes conforme surgirem vetores de ataque.

  • Se possĂ­vel, promova bug bounties.

  • Faça um desdobramento em fases (deployment incremental), com testes e atividade crescente a cada etapa.

Tenha em mente as caracterĂ­sticas da blockchain: a Ethereum possui suas particularidades e elas nĂŁo devem ser esquecidas.

  • Tenha em mente as caracterĂ­sticas da blockchain: a Ethereum possui suas particularidades e elas nĂŁo devem ser esquecidas.

  • Tenha extremo cuidado com chamadas a contratos externos, pois estes podem executar cĂłdigo malicioso e alterar o fluxo de controle.

  • Lembre-se de que suas funções pĂşblicas sĂŁo acessĂ­veis por qualquer pessoa e podem ser chamadas de forma maliciosa e em qualquer ordem. AlĂ©m disso, os dados privados em contratos inteligentes sĂŁo visĂ­veis para qualquer um.

  • Considere os custos de gás e o limite de gás por bloco.

  • A aleatoriedade nĂŁo Ă© algo resolvido na blockchain; a maioria das abordagens para geração de nĂşmeros aleatĂłrios Ă© manipulável.

Considere as caracterĂ­sticas da blockchain: A Ethereum possui suas particularidades, e Ă© fundamental nĂŁo esquecĂŞ-las.

  • Tenha extremo cuidado com chamadas a contratos externos, pois eles podem executar cĂłdigo malicioso e alterar o fluxo de controle do contrato chamador.

  • Lembre-se de que suas funções pĂşblicas sĂŁo acessĂ­veis a qualquer pessoa e podem ser chamadas de maneira maliciosa e em qualquer ordem. AlĂ©m disso, os dados "privados" nos contratos inteligentes sĂŁo visĂ­veis publicamente — qualquer pessoa pode acessá-los diretamente no estado da blockchain.

  • Considere sempre os custos de gás e o limite de gás por bloco, pois eles afetam diretamente a viabilidade e performance da execução do contrato.

  • A aleatoriedade ainda Ă© um desafio nĂŁo resolvido em blockchain. A maioria das abordagens para gerar nĂşmeros aleatĂłrios pode ser manipulada por atores maliciosos.

Last updated