Skip to main content

Assinatura Schnorr | Bitcoin Glossary | Mapping Bitcoin

Assinatura Schnorr

Criptografia

Also known as: BIP340, Schnorr

Esquema de assinatura do Taproot (BIP340), mais eficiente que ECDSA. Sua linearidade permite agregar chaves com MuSig para melhorar privacidade no Bitcoin.

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.