O Bitcoin Core integrou a PR #35531 em 15 de agosto, reformulando a base de dados opcional -txindex, que permite aos nós procurar transações pelo respetivo ID completo. No teste do colaborador na mainnet, o índice reconstruído passou de cerca de 66 GB para 26 GB, uma redução de 61%. As consultas mantiveram-se em cerca de 0,2 milissegundos, e a própria reconstrução terminou em 1 hora e 19 minutos, contra 1 hora e 50 minutos no formato anterior.
Porque é importante
O formato antigo armazenava cada ID de transação de 32 bytes como chave da base de dados, juntamente com a posição da transação no disco. A reformulação comprime essa chave para um prefixo SipHash de 5 bytes e um sufixo de 6 bytes que codifica a sequência do bloco e o deslocamento da transação dentro do bloco. O Bitcoin Core continua a verificar o ID completo da transação antes de devolver uma correspondência, percorrendo as entradas que partilham o prefixo e verificando cada candidata com base no índice do bloco. A Bitcoin Optech classificou as colisões como trabalho adicional de leitura e verificação, com a validação do ID completo a impedir correspondências falsas. O desempenho manteve-se praticamente inalterado.
Impacto no mercado
A poupança aplica-se apenas ao -txindex, um componente opcional, e não à própria blockchain nem ao resto do diretório de dados do nó. Os índices existentes continuam legíveis após a atualização, mas não reduzem o espaço ocupado, pelo que obter a poupança de 40 GB exige recriar a base de dados. Reverter para uma versão anterior implica um segundo custo de migração: a nota de lançamento associada à alteração indica que as versões mais antigas não conseguem ler entradas gravadas no formato compacto, pelo que o regresso obriga a outra reconstrução. Os binários estáveis que incorporam a alteração seguem o processo de lançamento separado do Bitcoin Core, e a primeira versão a incluí-la ainda não foi especificada. Os operadores devem aguardar as notas de migração específicas da versão antes de agendar a reconstrução.
Perguntas frequentes
-
O que faz exatamente o -txindex do Bitcoin Core?
Mantém uma base de dados opcional que permite a um nó procurar transações pelo respetivo ID completo de 32 bytes, separada da própria blockchain e usada apenas pelos operadores que ativam a opção.
-
Qual era o tamanho do txindex antigo e qual é o do novo?
Num teste na mainnet realizado por um colaborador, o índice reconstruído passou de cerca de 66 GB para 26 GB, uma redução de 61% após a integração, em 15 de agosto, da PR #35531, que introduziu a reformulação das chaves compactas.
-
Como é que o novo formato de chave compacta evita correspondências falsas?
O Bitcoin Core usa um prefixo SipHash de 5 bytes e um sufixo de 6 bytes, e depois verifica o ID completo da transação nas entradas candidatas antes de devolver uma correspondência, pelo que as colisões apenas acrescentam trabalho de leitura, não resultados incorretos.
-
É preciso reconstruir o índice para obter a poupança de 40 GB?
As bases de dados -txindex existentes continuam legíveis durante a atualização, mas continuam a ocupar mais espaço. Obter a poupança de 40 GB exige recriar o índice de raiz.
-
O que acontece se fizer downgrade após a reconstrução?
As versões mais antigas do Bitcoin Core não conseguem ler as entradas gravadas no formato compacto, pelo que regressar a uma versão anterior obriga a uma segunda reconstrução no formato antigo antes de o índice voltar a funcionar.