O mesmo bug, dois desfechos: Telestai, Ravencoin e o que um fork herda

·7 min de leitura·Por SSP Editorial Team
Capa da SSP Academy: Telestai, Ravencoin e o que um fork herda

O mesmo bug, dois desfechos: Telestai, Ravencoin e o que um fork herda

Ontem escrevemos sobre o bug de consenso da Ravencoin: um campo nHeight sem validação no cabeçalho do bloco que permitia forjar a prova de trabalho, e a reorganização de três dias que foi preciso para desfazer aquilo.

Essa história tem uma segunda metade, e é a mais útil. Outra rede tinha exatamente o mesmo bug exatamente no mesmo lugar. Ele nunca foi explorado.

A diferença entre esses dois desfechos merece ser entendida, porque não é uma diferença de código.

A Telestai herdou a falha, porque é isso que forks fazem

A Telestai é um fork da Ravencoin. Sua base de código descende da Ravencoin, passando pela Meowcoin — as notas da versão Telestai Core 3.0.1 ainda listam uma «purga de fontes da Meowcoin» entre as limpezas, o que mostra quão recentemente essa linhagem ainda estava visível na árvore de código.

A validação de cabeçalho da Ravencoin não conferia o nHeight declarado contra a posição real do bloco na cadeia. A da Meowcoin também não. A da Telestai também não. Ninguém introduziu o bug na Telestai; ele chegou junto com todo o resto, do jeito que um fork herda tanto as partes da base de código que ninguém olha quanto as que alguém olha.

Essa é a mecânica sem glamour pela qual uma única falha vira problema de várias redes. Forks não são cópias que vão derivando rumo à independência. São cópias que carregam todo o histórico de suposições do pai — inclusive, neste caso, a suposição de que alguém já validava aquele campo.

O que a Telestai fez com dois dias de aviso

O exploit da Ravencoin foi divulgado publicamente em 11 de agosto de 2026. A Telestai Core 2.1.8 saiu em 13 de agosto, intitulada, sem rodeios, «Security: KAWPOW nHeight bind».

As notas de versão não fazem meias-palavras:

Esta versão corrige um problema de consenso/DoS no KAWPOW em que o campo de cabeçalho nHeight (que seleciona a época do ethash) não estava vinculado à cadeia. A mesma classe de bug foi explorada na mainnet da Ravencoin. Nós da Telestai rodando versões anteriores permanecem expostos até atualizarem.

A correção em si é em camadas, e a estratificação é a parte interessante:

  • Um limite absoluto de época passa a ser imposto de imediato, antes que qualquer cálculo de hash da prova de trabalho aconteça.
  • A vinculação estrita height == prev + 1 é ativada no bloco 1.100.000 — em estilo soft fork, sem reescrever história.
  • A prova de trabalho só é calculada depois que o bloco pai é encontrado e a altura verificada, o que fecha um caminho de exaustão de memória em que um nó podia ser levado a fazer trabalho caro sobre um cabeçalho que deveria ter rejeitado de cara.
  • As mesmas verificações valem em ConnectBlock e VerifyDB, para que um nó reindexando seu banco não volte a aceitar em silêncio o que as novas regras proíbem.

A mainnet estava por volta da altura 1.057.000 quando a 2.1.8 chegou. A imposição foi marcada em 1.100.000. Esse vão — cerca de 43.000 blocos — foi deliberado: pista suficiente para corretoras, pools, exploradores e operadores de nós atualizarem antes de a regra entrar em vigor, e não tanta a ponto de deixar a janela aberta indefinidamente.

A Telestai também creditou a fonte. As notas apontam para 2miners/Ravencoin, ramo rvn-nheight-fix — a mesma correção saída do incidente da Ravencoin — e agradecem aos pesquisadores que documentaram a correção mais completa de aceitação de cabeçalhos. O remédio viajou pelo mesmo caminho que o bug tinha percorrido.

Os dois desfechos, lado a lado

Duas redes. Uma herança de código. Uma falha latente idêntica.

A da Ravencoin foi encontrada primeiro por um atacante. O resultado foram quatro dias de blocos falsificados antes da divulgação pública, corretoras suspendendo depósitos e saques, uma queda de preço de cerca de 20% e uma reorganização de três dias para remover o ramo envenenado.

A da Telestai foi encontrada lendo o relatório de incidente alheio. O resultado foi uma correção dois dias depois, uma altura de ativação marcada com folga e — como não havia história inválida a remover — nenhuma reorganização. Nada foi revertido porque nada precisava ser.

É toda a diferença. Não um código melhor. Não um bug diferente. Apenas quem percebeu primeiro, e com que rapidez quem mantém a rede agiu a partir da semana ruim de outra pessoa.

Depois a Telestai trocou o algoritmo inteiro

Seis dias após a correção de segurança, a Telestai lançou a Core 3.0.0, com fork no bloco 1.150.000 — por volta de 16 de outubro de 2026 — rumo ao Meraki, seu próprio algoritmo de prova de trabalho. O Meraki continua parente do KAWPOW (um derivado de Ethash com sabor de ProgPoW, e o minerador nasceu como fork do kawpowminer), apresentado como de menor consumo e alcançável em GPUs modestas.

Vale cuidado com a causalidade aqui, porque é tentador traçar uma linha reta e a linha não é reta. O Meraki já estava em andamento antes de agosto: as compilações de amaciamento em testnet para a 3.0.0 foram publicadas em 13 e 14 de agosto, os mesmos dias da versão de segurança, e esse não é um cronograma que alguém monte em quarenta e oito horas. A troca de algoritmo era trabalho planejado que por acaso aterrissou ao lado de um incidente, não uma reação a ele.

Há também uma pequena lição na lista de versões sobre as partes ingratas de manter uma rede. Entre a correção de segurança e o fork, a Telestai lançou a 2.1.9 por um motivo que nada tem a ver com consenso: a 2.1.8 fora compilada contra um Berkeley DB mais novo, e abrir um wallet.dat antigo com ela podia reescrever os registros da carteira a ponto de clientes mais velhos não conseguirem mais ler o arquivo. Então recompilaram contra o Berkeley DB 4.8 e publicaram de novo. Uma versão de segurança não serve de muito se atualizar para ela põe em risco os arquivos de carteira dos seus usuários.

Por que isso importa além de duas redes pequenas

A maioria de quem lê isto não tem nem RVN nem TLS. O que se generaliza é o padrão.

Redes forkadas compartilham superfície de bugs, e quase ninguém acompanha isso. Litecoin, Dogecoin, Bitcoin Cash, Ravencoin, Zcash e dezenas de outras descendem do Bitcoin Core, e cada uma carrega um ponto de divergência a partir do qual as correções rio acima param de chegar sozinhas. Uma vulnerabilidade divulgada em uma rede é uma pergunta em aberto para toda rede a jusante do mesmo código — e quanto mais um fork se afastou, mais trabalho custa apenas saber se a correção se aplica. A Telestai respondeu a essa pergunta em dois dias. Nem todo fork tem alguém cujo trabalho seja esse.

«Ninguém explorou» não é o mesmo que «não estava lá». O software de nó da Telestai foi vulnerável durante toda a sua existência. O bug foi real o tempo todo; novo era só o olhar sobre ele. Redes que nunca recebem o relatório de incidente de uma irmã não descobrem por esse caminho.

Uma correção que chega antes do exploit não custa quase nada. A mesma correção depois custa uma reorganização. O trabalho técnico na Telestai 2.1.8 e no hard fork da Ravencoin é, em linhas gerais, a mesma correção. O que diferiu foi tudo em volta: se havia história inválida a descartar, se corretoras precisavam parar, se as confirmações dos usuários significavam alguma coisa por três dias.

É o mesmo raciocínio por trás das compilações reproduzíveis e do escrutínio de dependências: quase tudo que protege você está rio acima de qualquer coisa que dê para ver de dentro de uma carteira, e é mantido por pessoas prestando atenção em seu nome.

O que isso significa na SSP

Na prática: nada muda para você.

A SSP suporta Ravencoin, e nosso nó roda a 4.8.0 na cadeia recuperada — verificamos no texto de ontem os hashes de bloco dos dois lados da reorganização contra a cadeia de referência. A SSP não suporta Telestai, então não existe saldo de Telestai na sua carteira com que se preocupar.

Escrevemos sobre uma rede que não suportamos porque a história ilustra com clareza algo que levamos a sério. Operar infraestrutura de nós significa acompanhar o trabalho de segurança rio acima de cada rede que carregamos, inclusive aquelas cujas bases de código compartilham ancestrais. O valor disso é totalmente invisível quando funciona: um nó corrigido parece exatamente igual a um não corrigido, até o dia em que não parece mais.

O agosto da Telestai é como isso se parece por dentro: quem mantém o projeto lê sobre o exploit de outra pessoa, reconhece o formato dele na própria árvore de código, e publica. Sem incidente, sem reorganização, sem anúncio nenhum que alguém de fora fosse lembrar. Só um número de versão subindo.

Compartilhar este artigo

Artigos relacionados