O pool Orchard da Zcash apresentou uma vulnerabilidade crítica de segurança na última semana, e o ecossistema respondeu com um upgrade coordenado de rede concluído na madrugada desta quarta-feira, 3 de junho.
Nenhuma evidência de exploração foi encontrada. Fundos de usuários permaneceram seguros durante todo o processo.
A seguir:
- O que era a falha e por que ela exigiu um fork de emergência, não um simples patch
- Como mineradores e exchanges agiram em coordenação sem precisar confiar uns nos outros
- O que usuários do Zodl precisam fazer agora para voltar a operar normalmente
A vulnerabilidade foi descoberta na sexta-feira, 29 de maio, por Taylor Hornby, pesquisador independente contratado pela Shielded Labs para auditorias contínuas do protocolo.
Hornby reportou o problema ao time de engenharia da ZODL (Zcash Open Development Lab) ainda naquela noite, iniciando um processo de resposta que durou menos de cinco dias.
O que estava em jogo era sério: sem correção, a falha poderia permitir gastos duplos dentro do pool Orchard, comprometendo a integridade contábil do protocolo.
O que era a vulnerabilidade
Uma falha no circuito zero-knowledge
O bug estava na implementação do circuito de prova zero-knowledge do Orchard, especificamente no crate halo2_gadgets. O loop de multiplicação de pontos na curva elíptica (ecc::chip::mul) mantinha uma base constante entre as iterações, mas essa base nunca estava vinculada à base real do protocolo.
Na prática, um atacante poderia substituir a base real por um valor arbitrário, fazendo o gadget calcular [a] base + [b] B' em vez de [scalar] base. Isso abria a possibilidade de aceitar provas inválidas como válidas.
Por que não bastava um patch de software
Corrigir um bug em um circuito de prova de conhecimento zero exige atualizar a chave de verificação fixada do circuito. Isso não é possível via atualização de software de nó. Exige mudança de consenso, ou seja, um hard fork.
Mas publicar o hard fork diretamente exporia os detalhes da falha no código antes que todos os participantes da rede tivessem atualizado. Qualquer pessoa com acesso ao código veria exatamente onde estava o problema.
Como a coordenação funcionou sem exigir confiança
O papel do soft fork: comprar tempo sem revelar a falha
A solução foi um soft fork prévio, que desabilitou temporariamente todas as transações Orchard sem expor o motivo técnico. O soft fork foi ativado com sucesso no bloco 3.363.426, na madrugada de terça-feira, 2 de junho.
Mineradores aceitaram parar de minerar transações Orchard por algumas horas. Não porque confiavam cegamente no ZODL, mas porque inspecionaram o código, entenderam o contexto e concluíram que interromper temporariamente o Orchard protegia seus próprios negócios a longo prazo.
Esse é o mecanismo central da descentralização: alinhamento de incentivos, sem exigir confiança.
O hard fork com a correção completa
Com o soft fork ativo e a rede estabilizada, a correção real foi preparada e publicada. O hard fork NU6.2 ativou na madrugada de quarta-feira, 3 de junho, às 00:10 EDT, no bloco 3.364.600.
O upgrade atualizou a chave de verificação do circuito Orchard, fechando permanentemente a vulnerabilidade. As versões corrigidas são zcashd v6.20.0 e zebrad v5.0.0.
Impacto e o que usuários devem fazer agora
Nenhum fundo foi comprometido
O mecanismo de torniquete da Zcash, que rastreia o saldo total de ZEC em cada pool (Sprout, Sapling, Orchard, transparente e lockbox), permitiu confirmar que o suprimento total permaneceu intacto durante todo o incidente. Transações em Sapling e na camada transparente continuaram operando normalmente.
Exchanges que custodiavam ZEC mantiveram operações durante o rollout. Não houve criação não autorizada de valor detectada.
Zodl v3.5.1: atualize agora
O wallet Zodl lançou a versão 3.5.1 com suporte às novas regras de consenso. A atualização já está disponível na App Store (iOS) e no GitHub (Android). A versão para Google Play está em revisão e deve ser liberada em breve.
Após o upgrade de rede, o software atualizado é obrigatório para gastar fundos Orchard sob as novas regras. Transações tentadas durante a janela de suspensão não foram mineradas. Usuários com dúvidas sobre o status de uma transação devem verificar o TXID no explorador de blocos ou contatar @zodl_support.
Se houver lentidão ao conectar, o recomendado é acessar Configurações Avançadas → Escolher um Servidor e rodar um teste de servidores para selecionar o de melhor desempenho.


