Blockchain/Nível VI · Depois do bitcoin/6.3 Ethereum e contratos inteligentes/Lição 3
O hack do DAO e o Ethereum Classic
O erro de reentrada que dividiu uma cadeia e definiu o debate sobre imutabilidade
MateriaisInterface de explorador de blocos (por exemplo, Etherscan)Código-fonte do contrato inteligente da DAO (versão pré-fork)Um caderno para rastrear mudanças nas variáveis de estado
Curiosidade
- Por que uma linha de código que é executada antes das atualizações de estado permite que um invasor esvazie fundos repetidamente?
- O que acontece quando uma comunidade vota para reescrever a história em vez de preservá-la?
- Quem detém a autoridade final: o mecanismo de consenso ou os desenvolvedores que o mantêm?
Explorar
- A DAO foi lançada em abril de 2016 como um fundo de investimentos autônomo, arrecadando aproximadamente 12,7 milhões de ETH de mais de 11.000 investidores. Esse valor representava cerca de 14% de todo o ether em circulação na época. O projeto operava inteiramente por meio de contratos inteligentes, permitindo que os detentores de tokens votassem quais projetos financiar, sem gestão centralizada ou estruturas tradicionais de governança corporativa.
- Em 17 de junho de 2016, um atacante explorou uma vulnerabilidade de reentrância na função de divisão da DAO. Esse erro permitiu que o contrato fosse chamado novamente antes que seu saldo interno fosse atualizado. O atacante transferiu aproximadamente 3,6 milhões de ETH para uma “DAO filha”, onde um período de retenção de 28 dias congelou os fundos. Essa exploração demonstrou que máquinas Turing-completas introduzem riscos complexos de gerenciamento de estado, ausentes em sistemas mais simples como o Bitcoin.
- A comunidade Ethereum enfrentou um dilema imediato: respeitar a imutabilidade do livro-razão ou proteger os investidores de uma falha crítica no código. Os desenvolvedores argumentaram que o erro era um problema de implementação, e não um comportamento intencional, e que manter os fundos bloqueados minaria a confiança na utilidade da plataforma. Os críticos, por sua vez, afirmaram que alterar o histórico da cadeia violava o princípio fundamental do consenso descentralizado, criando um precedente perigoso para intervenções futuras na governança.
- Em 20 de julho de 2016, o Ethereum realizou um hard fork no bloco 1.920.000 para reverter o ataque e transferir os fundos para um contrato de reembolso. Os detentores de tokens DAO puderam então recuperar seu ether a partir desse contrato de reembolso. Uma minoria rejeitou essa intervenção, continuando a minerar a cadeia original e não modificada. Esse grupo formou o Ethereum Classic (ETC), aderindo estritamente ao princípio de que “código é lei” e de que nenhuma entidade deve ter o poder de reescrever a história.
- O fork criou duas realidades paralelas a partir de um único livro-razão. Enquanto o Ethereum continuou se desenvolvendo como uma importante plataforma de contratos inteligentes, o Ethereum Classic permaneceu como uma rede menor, servindo em grande parte como uma declaração filosófica sobre a descentralização. Esse incidente influenciou o desenvolvimento posterior de protocolos em todas as criptomoedas.
- Consulte o bloco 1.920.000 em um explorador de Ethereum e em um explorador de Ethereum Classic: as duas cadeias são idênticas até o bloco 1.919.999 e diferem a partir do bloco 1.920.000. O fork não movimentou o ether da DAO por meio de uma transação; o novo software cliente aplicou uma alteração irregular no estado naquele bloco, e é por isso que a reversão aparece no código e não em nenhuma lista de transações.
Fatos-chave
- A DAO arrecadou aproximadamente 12,7 milhões de ETH, cerca de 14% de todo o éter em circulação no momento do lançamento.
- Um erro de reentrada permitiu que um atacante desviasse cerca de 3,6 milhões de ETH para uma DAO filha em 17 de junho de 2016.
- O Ethereum sofreu um hard fork em 20 de julho de 2016, no bloco 1.920.000, para reverter o ataque e devolver os fundos.
- Uma minoria continuou a minerar a cadeia original, que se tornou Ethereum Classic (ETC), citando o princípio de que “o código é lei”.
- O fork resultou em holders possuírem tanto ETH na nova cadeia quanto ETC na antiga.
- O incidente provocou debates duradouros sobre imutabilidade, autoridade dos desenvolvedores e a definição de consenso.
Exercício nove, seis, três, um
9ReunirListe 9 casos em que uma atualização de software ou mudança de protocolo alterou dados de usuários existentes ou histórico de transações. Indique quem iniciou a mudança e qual justificativa foi apresentada.
6AgruparAgrupe os 9 em 6 categorias com base em se a alteração foi uma correção de erro, uma adição de recurso, um rollback de segurança, uma atualização de consenso, um hard fork ou um soft fork.
3DestilarReduza os 6 para 3 tipos de autoridade que acabaram decidindo essas mudanças.
1CristalizarEscreva 1 frase sobre o que 'código é lei' promete e o que ele sacrifica quando o código falha.
Verificação de fatos
Datas, números e afirmações verificados com as fontes publicadas listadas abaixo.
- Ethereum Foundation, 'The DAO hack' blog posts (June-July 2016)
- SEC, Report of Investigation: The DAO (July 2017)
- Post-mortem analyses of the reentrancy exploit (2016)