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.
Ten en cuenta las caracterĂsticas de blockchain: Ethereum tiene sus particularidades y no hay que olvidarlas.
Ten sumo cuidado con las llamadas a contratos externos, ya que podrĂan ejecutar cĂłdigo malicioso y alterar el flujo de control.
Recuerda que tus funciones públicas son accesibles para todos y pueden ser llamadas de forma maliciosa y en cualquier orden. Además, los datos privados en los contratos inteligentes son visibles para cualquiera.
Ten en cuenta los costos de gas y el lĂmite de gas por bloque.
La aleatoriedad no es algo resuelto en blockchain; la mayorĂa de los enfoques para la generaciĂłn de nĂşmeros aleatorios son manipulables.
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