137 / 736UTXØ

Utreexo

Validação com uma base de dados menor

Um nó Bitcoin precisa de saber quais as saídas que ainda não foram gastas. Utreexo procura verificá-las sem uma grande base local de todos esses registos: mantém um pequeno estado criptográfico e recebe os dados necessários com provas. Poupa espaço e trabalho de disco, mas transfere parte das exigências para a transmissão e disponibilidade dos dados.

Utreexo permite a um nó Bitcoin verificar que um montante a gastar ainda não foi utilizado, sem guardar a lista completa de saídas não gastas. Um nó é um programa que verifica transações e blocos e comunica com outros participantes da rede. Guarda pequenos resumos criptográficos dos dados e recebe os registos concretos com provas verificáveis. As regras de gasto e a quantidade de bitcoin não mudam; este não é o modelo predefinido do Bitcoin Core.

Anna quer enviar a Peter bitcoin que recebeu anteriormente. A sua transação faz, por isso, referência àquele pagamento. Um registo individual de um montante e das condições para o gastar chama-se saída; enquanto não for gasto, é um UTXO. Uma entrada da nova transação contém uma referência a essa saída anterior e os dados necessários para a gastar. O nó tem de verificar que o registo existe e que Anna ainda não o gastou. Normalmente mantém o UTXO set, uma base de todas as saídas atualmente não gastas, não de contas pessoais e saldos. O seu crescimento aumenta o trabalho do disco. Thaddeus Dryja apresentou Utreexo em 2019 como forma de reduzir esta carga local. [1] [6] [8]

Primeiro calcula-se o hash de cada registo, uma impressão curta dos seus dados. Numa árvore de Merkle, as impressões são agrupadas aos pares e novamente submetidas a hash até se chegar à impressão de topo, a raiz. Utreexo usa várias destas árvores; o nó verificador pode guardar as raízes em vez da lista completa. Para a saída de Anna recebe os dados e uma prova com as impressões vizinhas necessárias. Com elas recalcula o caminho até à raiz e compara o resultado com o estado que já acompanha. A afirmação do remetente não basta. Esta estrutura chama-se acumulador criptográfico: permite provar que um registo pertence a um conjunto. As raízes não são, porém, uma cópia de segurança comprimida. Não podem ser descomprimidas para recuperar todos os registos originais. [1] [2]

Calcula-se o hash dos dados recebidos, e a prova permite verificar a sua ligação ao estado acompanhado pelo nó. Uma prova inválida não pode ser aceite só por vir de um servidor conhecido. Uma assinatura digital comprova a autorização de um pagamento por meio de uma chave privada, um valor numérico secreto, sem revelar essa chave. Um script define as condições a cumprir para gastar uma saída. Mesmo uma prova de pertença válida não substitui a verificação de assinaturas, scripts, montantes e restantes regras da transação e do bloco. Utreexo altera o armazenamento do estado, não dá autorização para saltar essas verificações. [2] [5] [8]

Alguém continua a precisar de guardar dados suficientes para construir provas. A documentação da biblioteca distingue o prover, que mantém toda a floresta de árvores, do verifier, ao qual bastam as raízes. O verificador pode guardar algumas provas em cache, mas as raízes, por si só, não permitem gerar qualquer prova. Os dados não desaparecem: muda a sua distribuição entre participantes. [2]

Um bloco reúne transações num conjunto acrescentado ao histórico comum. Quando uma saída é gasta, é removida do conjunto acompanhado, enquanto novas saídas não gastas são adicionadas. As provas também mudam. Uma prova guardada para um estado anterior pode precisar de atualização depois de novos blocos. Numa reorganização, a rede adota outro ramo válido da cadeia, substituindo parte do histórico anterior de blocos. A implementação tem de gerir atualizações de provas, transações simultâneas e recuos durante uma reorganização da cadeia. Não é um certificado descarregado uma vez e válido para sempre. [2] [3]

Um Pruned Node elimina dados de blocos antigos depois de os validar, mas tradicionalmente mantém a base UTXO atual. Utreexo atua precisamente sobre essa base. São poupanças diferentes que podem ser combinadas. Nem a poda nem um pequeno acumulador significam, por si só, que o nó verificou o passado sem o processar. O histórico de blocos, o estado atual e o método de verificação inicial são três coisas distintas. [6] [5]

Imagine um nó novo que começa com o estado fornecido por outra pessoa, em vez de verificar os blocos desde o início. Assume que esse estado inicial está correto. Um acumulador pequeno não elimina essa confiança: as provas posteriores são verificadas precisamente contra o estado aceite. Em AssumeUTXO, é por isso necessário separar a aceitação de um snapshot, uma imagem do estado num dado momento, da posterior validação do histórico em segundo plano. A documentação de utreexod descreve um arranque predefinido a partir de um estado fixado no programa. Isso, por si só, não é verificar de forma independente todos os blocos anteriores. O modo de arranque é uma escolha separada, não uma propriedade inerente a Utreexo. [7] [3]

A implementação utreexod utiliza Utreexo para validar a rede Bitcoin. Na consulta de 17 de outubro de 2026, a documentação classifica-a como beta e desaconselha a utilização com quantias relevantes na mainnet. Também indica --noassumeutreexo para desativar o arranque a partir de um estado presumido. Isto não é uma recomendação de instalação: antes de utilizar, verifique a versão atual, o modo, a origem do programa e as opções de recuperação. [3]

A conceção básica não exige reescrever as regras monetárias do Bitcoin nem alterar os blocos existentes. Mas alguém tem de criar, transmitir e atualizar as provas, pelo que os nós participantes precisam de software e comunicação adequados. Um estado local menor pode ajudar equipamentos mais baratos. Não significa automaticamente mais transações por bloco, taxas mais baixas para todos ou a passagem de todos os nós para um novo formato. [1] [4]

Menos dados no disco podem significar mais tráfego de rede e dependência da disponibilidade atempada dos dados. Um nó que valida corretamente rejeita uma prova falsificada. Ainda assim, um fornecedor pode reter os dados necessários e atrasar a validação. O operador compara, por isso, o conjunto: armazenamento, transferências, cache, verificação do estado inicial e comportamento perante falhas. Utreexo pode reduzir o custo da validação própria; não torna irrelevante a falta de dados. [3] [4]

Para ter uma visão mais completa, leia este verbete junto com UTXO, Full Node, Pruned Node, AssumeUTXO, Merkle Tree, Bitcoin Core.

DOC · 001Utreexo paperFonte primária DOC · 002Utreexo accumulator libraryDocumentação DOC · 003utreexod implementationFonte primária DOC · 004Bitcoin Optech — UtreexoDocumentação DOC · 005Bitcoin Core — validation.cppDocumentação DOC · 006Bitcoin Developer Reference — Blockchain validationDocumentação DOC · 007Bitcoin Core — AssumeUTXO designDocumentação DOC · 008Bitcoin Developer Reference — TransactionsDocumentação
Revisto em: Fontes em primeiro lugar · Não é recomendação de investimento