Visão geral
As assinaturas Schnorr, ativadas no Bitcoin através do soft fork Taproot em novembro de 2021 (especificadas no BIP340), são um esquema de assinatura digital que oferece vantagens significativas sobre as assinaturas ECDSA originais do Bitcoin. Originalmente inventado por Claus-Peter Schnorr em 1989, o esquema estava sob patente até 2008 — ironicamente, pouco antes do Bitcoin ser criado. A propriedade matemática chave que torna as assinaturas Schnorr valiosas para o Bitcoin é a linearidade, que permite combinar múltiplas assinaturas em uma única assinatura agregada.
Schnorr vs. ECDSA
Assinatura ECDSA: Assinatura Schnorr:
┌────────────────────────┐ ┌────────────────────────┐
│ Componentes: (r, s) │ │ Componentes: (R, s) │
│ Tamanho: 71-73 bytes │ │ Tamanho: 64 bytes (fix)│
│ Verificação: Complexa │ │ Verificação: Simples │
│ Agregação: Não │ │ Agregação: Sim │
│ Verif. em lote: Lim. │ │ Verif. em lote: Sim │
└────────────────────────┘ └────────────────────────┘
Equação de Assinatura:
ECDSA: s = k⁻¹(z + r·d) mod n (não linear)
Schnorr: s = k + e·d mod n (linear!)
▲
└── Essa linearidade permite a agregação
Agregação de chaves (MuSig)
A linearidade das assinaturas Schnorr significa que múltiplas partes podem combinar suas chaves públicas individuais em uma única chave pública agregada e produzir colaborativamente uma única assinatura agregada. On-chain, isso parece idêntico a um gasto de chave única:
Comparação de Multisig 3-de-3:
Com ECDSA (multisig P2SH):
On-chain: 3 chaves públicas + 3 assinaturas
Tamanho: ~297 bytes de dados de testemunha
Com Schnorr + MuSig:
On-chain: 1 chave agregada + 1 assinatura agregada
Tamanho: ~64 bytes de dados de testemunha
Indistinguível de uma transação de assinante único!
Isso tem implicações profundas para a privacidade — um gasto cooperativo MuSig em uma saída P2TR parece exatamente como um simples pagamento de chave única para qualquer observador externo.
Verificação em lote
As assinaturas Schnorr suportam verificação em lote eficiente, onde múltiplas assinaturas podem ser verificadas juntas mais rapidamente do que verificar cada uma individualmente. Isso é particularmente valioso para nós que processam blocos inteiros de transações, pois pode reduzir significativamente o custo computacional da validação de blocos.
Por que o Bitcoin usou inicialmente ECDSA
Quando Satoshi Nakamoto criou o Bitcoin em 2008, a patente da assinatura Schnorr havia expirado recentemente, e o ECDSA era o padrão estabelecido e bem testado com amplo suporte de bibliotecas. A comunidade Bitcoin passou anos projetando e testando a atualização Taproot para introduzir as assinaturas Schnorr de forma segura e com total compatibilidade retroativa.
Equívoco comum
As assinaturas Schnorr não substituem o ECDSA no Bitcoin. Ambos os esquemas de assinatura coexistem. O ECDSA ainda é usado para saídas legacy, P2PKH e SegWit v0 (P2WPKH). O Schnorr é usado exclusivamente em saídas Taproot (P2TR). Os endereços e transações existentes continuam funcionando exatamente como antes.