🇧🇷
Ethereum Developer Pack - PT
  • Ethereum Developer Pack - PT
  • MĂłdulo 1
    • Introdução a Smart Contracts
      • Fundamentos de Blockchain
        • HistĂłrico
        • Bitcoin
        • O que Ă© Blockchain
        • Conceitos-chave em Blockchain
        • Como funciona a Blockchain
        • Tipos de Blockchain
        • Modelos de Consenso
      • A nova Internet
        • Web 3
        • Elementos Fundamentais
        • Impacto do Ethereum em Diversos Setores
      • Wallets
        • Componentes de uma wallet
        • Tipos de Wallet
        • CĂłdigos MnemĂ´nicos
      • Ethereum 101
        • Smart Contracts
        • Contas
          • Tipos de contas
          • ConteĂşdo das contas
        • Transações
          • Componentes
          • Ciclo de vida
        • Gás
        • Solidity
        • EVM
          • A máquina de estados
          • Opcodes
          • Como funciona a EVM
          • Clientes de execução
          • DApps
      • Blockchain Explorer
        • Funções de um blockchain explorer
        • Beneficios de utilizar um blockchain explorer
      • Remix
        • CaracterĂ­sticas do Remix
        • Workspaces ou espaços de trabalho
        • Carregar e compilar um contrato
        • Implantar na máquina virtual do Remix (Remix VM)
        • Interagindo com funções
        • Deployar em uma rede pĂşblica
      • Crie seu primeiro Smart Contract
  • MĂłdulo 2
    • Fundamentos de Solidity
      • Hello World
      • Tipos de Dados
      • Funções
      • Variáveis
        • ExercĂ­cio 1
      • Operadores
        • Ejercicio 2
      • Constructor
        • ExercĂ­cio 3
      • Convenções de nomenclatura
      • Tipos de armazenamento para variáveis
      • Estruturas de Controle
        • ExercĂ­cio 4
      • Modificadores
      • Eventos
        • ExercĂ­cio 5
      • Tipos de Referencia
        • Arrays
          • ExercĂ­cio 6
        • Mappings
          • ExercĂ­cio 7
        • Structs
          • ExercĂ­cio 8
      • Address Payable
      • Como os contratos e funções recebem Ether.
      • TransferĂŞncias de Ether
      • Conceitos Avançados
        • Codificação de ABI
        • Hashing
        • This
        • Herança
        • Abstract
        • Interface
        • Chamada entre contratos
        • EVM
        • ABI
        • Bytecode
        • Opcodes
  • MĂłdulo 3
    • ERCs, Bibliotecas e Padrões de Desenvolvimento
      • Boas Práticas de Desenvolvimento
      • Padrões de Desenvolvimento
      • EIP & ERC
      • ERC-20
      • ERC-721
      • Open Zeppelin
      • Crie um Token ERC-20
      • Almacenamiento Descentralizado: IPFS
      • Crea un Token ERC-721
      • DeFi
  • MĂłdulo 4
    • Kit de ferramentas para desenvolvimento na Ethereum
      • Requisitos para o mĂłdulo 4
        • Terminal
        • Git e Github
        • Node.js e npm
        • Visual Studio Code para Solidity
      • Toolkit
        • JSON-RPC
        • Ethers.js
          • ExercĂ­cio
        • Hardhat
          • Implantação de um contrato no Hardhat
          • Implantação de um contrato em uma rede pĂşblica
        • Scaffold-ETH
          • CaracterĂ­sticas do Scaffold-ETHCaracterĂ­sticas
          • Como instalar o Scaffold-ETH
  • MĂłdulo 5
    • Segurança, Testes e Auditorias
      • Testes
        • Importância de realizar testes
        • MĂ©todos para testar contratos inteligentes
          • Testes automatizados
          • Testes manuais
        • Conceitos importantes em testes
        • Ferramentas para testes
        • Testes com Hardhat
        • Recursos adicionais
      • Segurança
        • Uma mentalidade diferente de design
        • Principais vulnerabilidades em contratos inteligentes
          • Reentrancy attack (ataque de reentrada)
          • Replay attack (ataque de repeticiĂłn)
          • Price Oracle Manipulation (ManipulaciĂłn de Oráculos de Precios)
          • Missing Access Control (PĂ©rdida de Control de Acceso)
          • Reward Manipulation (ManipulaciĂłn de Recompensas)
          • Failure to Initialize (Falla al Inicializar)
          • Front-running
          • Invariant Breaks (Quebra de Invariantes)
          • Mishandling of ETH (Má gestĂŁo de ETH)
          • Denial of Service (DoS - Negação de Serviço)
          • Integer overflow and underflow (Overflow e Underflow de inteiros)
          • Phishing y Typosquatting
        • Recursos adicionais
      • Auditoria de smart contracts
        • Processo de Auditoria
        • Ferramentas
        • Como se preparar para uma auditoria
        • O teste Rekt
        • Desafios
        • Recursos adicionais
  • Contribuye
    • Kipu Explorer
Powered by GitBook
On this page
  1. MĂłdulo 5
  2. Segurança, Testes e Auditorias
  3. Segurança

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.

PreviousSegurançaNextPrincipais vulnerabilidades em contratos inteligentes

Last updated 22 days ago