Blockchain/Nível VII · Evolução/7.1 Ethereum: o computador mundial/Lição 2
Contas e estado global
De moedas discretas a um único estado global mutável
MateriaisO White Paper do Ethereum (G. Wood)O documento técnico do Ethereum de Vitalik Buterin (2013/2014)Acesso ao Etherscan ou a outro explorador de blocos do Ethereum
Curiosidade
- Por que rastrear a riqueza como um conjunto de saídas não gastas torna difícil escrever programas de uso geral?
- Qual consequência mecânica decorre de permitir que qualquer transação leia e escreva todo o armazenamento da rede?
- Como um modelo baseado em contas altera o custo de verificar o histórico em comparação com um conjunto de UTXO?
Explorar
- O Bitcoin acompanha o valor por meio dos outputs de transações não gastas, ou UTXOs. Cada transação consome inputs específicos e cria novos outputs; a validação verifica apenas as moedas que estão sendo gastos (lição 2.2.1). Esse modelo é local e discreto. O Ethereum, lançado em julho de 2015 por Vitalik Buterin e cofundadores como Gavin Wood, adota uma máquina de estados baseada em contas. Cada endereço possui um saldo que é atualizado diretamente nele. Toda a história da rede é compactada em um único objeto de estado global: os saldos atuais de todas as contas e os espaços de armazenamento de todos os contratos implementados.
- Neste modelo, existem dois tipos de contas: contas de propriedade externa (EOAs), controladas por chaves privadas, e contas de contrato, controladas por código. Uma EOA inicia transações; um contrato executa lógica somente quando invocado. A função de transição de estado leva em consideração o estado global atual e uma transação, produzindo então um novo estado global. Como cada nó calcula essa transição de forma determinística a partir do mesmo ponto de partida, o consenso surge sem necessidade de confiança. Essa estrutura torna possível o cálculo de uso geral, já que qualquer conta pode armazenar dados arbitrários em seu espaço de armazenamento.
- A expressividade do modelo de conta permite aplicações complexas como exchanges descentralizadas e protocolos de empréstimo. Um contrato pode ter um valor de bilhões e executar lógicas intricadas com base em condições globais. No entanto, esse poder introduz fragilidades. Como o estado é mutável e compartilhado, um único erro no código de um contrato pode esvaziar todo o seu saldo ou corromper contratos relacionados. A vulnerabilidade de reentrância explorada no hack do The DAO (junho de 2016) demonstrou como uma falha local poderia afetar o estado global, levando a um fork conduzido pela comunidade.
- O crescimento do estado é uma consequência inerente desse design. O conjunto de UTXO do Bitcoin também cresce, mas cada entrada é pequena e é excluída quando gasta; o armazenamento dos contratos do Ethereum acumula dados. Cada operação `SSTORE` adiciona informações que permanecem por tempo indeterminado, a menos que sejam zeradas explicitamente (o que ainda custa “gas”). Esse crescimento ilimitado faz com que a execução de um nó completo se torne cada vez mais pesada em termos de espaço em disco e memória. Os nós precisam manter todo o estado global para validar transações, criando um trade-off entre a capacidade computacional e o custo de verificação.
- O Ethereum Yellow Paper formaliza isso como uma função de transição de estado determinística. A EVM processa instruções em uma máquina de pilha, onde operações como `ADD` ou `SLOAD` modificam o contexto de execução local, atualizando potencialmente o armazenamento global das contas. Essa arquitetura permite a completude de Turing, mas requer “gas” para garantir seu término. Cada operação consome “gas”, evitando laços infinitos e delimitando o custo computacional de qualquer transação em relação ao limite de “gas” do bloco.
- Abra um explorador de blocos como o Etherscan e analise uma interação recente com um contrato. Observe a aba “Storage” na página do contrato; ela lista pares chave-valor que constituem o estado persistente da conta. Note como esses valores mudam após cada transação envolvendo esse endereço. Essa visualização revela a realidade concreta do estado global: o código não é apenas executado, mas também armazenado, com seus dados persistindo ao longo das transações e crescendo com o tempo.
Fatos-chave
- O Ethereum utiliza um modelo baseado em contas, no qual os saldos são atualizados diretamente, ao contrário do sistema UTXO do Bitcoin.
- O estado global inclui todos os saldos de conta e o armazenamento de contratos, que todas as transações podem ler ou escrever.
- Contas de contrato são controladas por código; contas de propriedade externa são controladas por chaves privadas.
- O crescimento do estado é ilimitado porque o armazenamento por contrato persiste indefinidamente, aumentando as exigências de hardware dos nós.
- Um único erro em um contrato inteligente pode esvaziar todo o seu saldo devido à natureza mutável do estado global.
- O EVM executa de forma determinística em cada nó, garantindo consenso por meio de transições de estado idênticas.
Exercício nove, seis, três, um
9ReunirListe 9 diferenças específicas entre o modelo UTXO do Bitcoin e a máquina de estado baseada em contas do Ethereum em relação à estrutura de dados, ao escopo de validação e ao crescimento do armazenamento.
6AgruparAgrupe esses 9 itens em 6 categorias: persistência de dados, complexidade computacional, implicações de segurança, consumo de recursos do nó, mecânicas de consenso e experiência do desenvolvedor.
3DestilarReduza os 6 clusters para 3 razões principais pelas quais o modelo de conta permite computação de uso geral às custas do aumento do tamanho do estado.
1CristalizarO estado global mutável permite interações complexas entre contratos, o que é difícil em um sistema UTXO.
Verificação de fatos
Datas, números e afirmações verificados com as fontes publicadas listadas abaixo.