Pular para o conteúdo
buybitcoinsmart

Glossário / Protocolo e atualizações

Verificação por lotes

O que é a verificação por lotes?
A verificação por lotes checa muitas assinaturas Schnorr em uma única equação de curva elíptica, em vez de uma a uma, e devolve um único resultado de aprovação ou falha para todo o conjunto.

Especificação no BIP-340.

Um verificador agrupa u assinaturas, pondera todas menos a primeira por um escalar aleatório e resolve o conjunto em uma única equação em vez de u. O BIP-340 foi feito para isso, fixando as assinaturas em 64 bytes, enquanto o ECDSA padronizado não pode ser processado em lote de forma alguma, a menos que dados de testemunha extras sejam adicionados. O processamento em lote é uma escolha de cada verificador, então ele muda a rapidez com que um nó verifica o histórico e nada em relação aos seus bitcoins.

Como funciona

A verificação por lotes é especificada no BIP-340 como BatchVerify, que recebe u chaves públicas de 32 bytes, u mensagens e u assinaturas de 64 bytes e dá uma única resposta para todas elas.

Os pesos vêm primeiro. O verificador gera u-1 inteiros no intervalo de 1 a n-1, em que n é a ordem da curva, de forma determinística a partir de um gerador semeado por um hash de todas as entradas do lote: chaves, mensagens e assinaturas igualmente. O BIP-340 chama o SHA256 de hash de semente seguro e o ChaCha20 de uma forma segura de esticá-lo em inteiros de 256 bits, descartando os que ficam fora do intervalo.

O lote então se reduz a um único teste: a soma ponderada dos valores s, multiplicada pelo ponto gerador, tem que ser igual à mesma ponderação aplicada aos pontos R e ao desafio de cada assinatura vezes a sua própria chave pública. Essas u verificações separadas viram uma única comparação, à qual o BIP-340 atribui ganhos de velocidade significativos.

Um custo por assinatura paga essa economia. O BatchVerify traz cada valor r de volta para a curva, algo que a verificação individual nunca faz: o Verify recalcula R a partir de s e do desafio, e então confere apenas que a sua coordenada x é igual a r.

A garantia é deliberadamente assimétrica. Se todas as assinaturas do lote são válidas, o BatchVerify sempre dá certo; se mesmo uma for inválida, ele dá certo com probabilidade no máximo desprezível. O que ele não faz é apontar a culpada, então um verificador que precise saber qual assinatura falhou as verifica uma a uma.

Onde você vê isso

A verificação por lotes fica inteiramente do lado do verificador na rede, e é por isso que ela nunca aparece na interface de uma carteira nem em uma estimativa de taxa.

Onde ela compensa é em um nó processando de uma vez anos de gastos Taproot, não em uma carteira enviando um pagamento. O BIP-340 não obriga o processamento em lote em nenhum ponto: a verificação de assinatura única é a definição, e um lote é algo que um verificador pode escolher. O BIP exige um algoritmo especificado no nível do byte, a exatidão que faltava à análise sintática do DER até o BIP-66, para que ninguém consiga construir uma assinatura válida para alguns verificadores e não para outros. Como o verificador escolhe os seus próprios lotes, essa propriedade é o que faz a verificação por lotes e a individual diferirem apenas com probabilidade desprezível, mesmo diante de um atacante que tente fazê-las discordar.

O processamento em lote também explica decisões dentro do BIP-340 que, sozinhas, parecem arbitrárias. As assinaturas poderiam ter assumido uma forma mais curta, em que um hash de 16 bytes basta para a meta de segurança de 128 bits, e o BIP a rejeitou: hashes curtos são frágeis quando signatários que desconfiam entre si trabalham juntos, e a forma mais longa, que carrega R, é a que aceita o processamento em lote. As chaves públicas têm 32 bytes em vez dos 33 bytes da codificação comprimida usual do bitcoin, escolha feita pela compacidade, e a coordenada y que fica de fora é fixada no valor par, em vez de deixada ambígua, porque tanto a verificação eficiente quanto o processamento em lote precisam que ela não seja ambígua.

O ECDSA não ganha nada disso. O BIP-340 dá isso como um dos motivos para mudar o esquema de assinatura: a formulação padronizada não pode ser verificada em lote de forma mais eficiente do que individualmente, a menos que dados de testemunha adicionais sejam adicionados.

Verificação por lotes vs MuSig2

A verificação por lotes e o MuSig2 tornam um monte de assinaturas mais barato, mas só o MuSig2 muda o que é transmitido.

O MuSig2 agrega vários signatários em uma única chave e uma assinatura comum de 64 bytes antes de a transação chegar à rede, então a sua economia está em privacidade e espaço de bloco, e é n-de-n: todo signatário tem que participar. A verificação por lotes deixa cada assinatura onde estava e reorganiza apenas a aritmética que um validador executa, sem a cooperação de ninguém e sem que ninguém sequer saiba: um nó pode agrupar em lote assinaturas feitas por desconhecidos com anos de diferença, em transações sem relação entre si.

Não confundir com

Perguntas frequentes

A verificação por lotes torna minha transação mais barata ou mais rápida de confirmar?

Não, ela não muda nada na sua taxa, no tamanho da sua transação nem na rapidez com que ela é confirmada. A verificação por lotes só muda a aritmética que um nó validador executa quando verifica assinaturas que já existem.

Qual assinatura falhou quando um lote falha?

Nenhuma delas é identificada. O BatchVerify devolve uma única resposta para todo o conjunto, então um verificador que precise saber qual assinatura falhou tem que verificar os membros do lote um a um.

As assinaturas ECDSA podem ser verificadas por lotes?

Não na formulação padronizada que o bitcoin usa. O BIP-340 dá isso como um dos motivos para mudar o esquema de assinatura: essa formulação não pode ser verificada em lote de forma mais eficiente do que individualmente, a menos que dados de testemunha adicionais sejam adicionados.

Fontes

Última revisão: 6 de setembro de 2026.

Termos relacionados

Mais em Protocolo e atualizações

Ler esta página em inglês