Taproot e Schnorr (BIP340–342)

Caminho de chave, caminho de script, MAST e Tapscript.

O Taproot ativou-se no bloco 709.632 em 14 de novembro de 2021. São três BIPs trabalhando juntos.

BIP340: assinaturas Schnorr

Um novo esquema de assinatura Schnorr sobre a mesma curva secp256k1. As assinaturas têm 64 bytes e as chaves públicas são chaves x-only de 32 bytes. Como Schnorr é linear, vários assinantes podem combinar as suas chaves numa só com protocolos como MuSig2 (BIP327) e produzir uma única assinatura.

BIP341: saídas Taproot

Uma saída Taproot (SegWit v1, bc1p…) compromete-se a uma chave Q de 32 bytes. Q é construída a partir de uma chave interna P e uma árvore opcional de scripts:

Q = P + t·G, onde t = hashTapTweak(P || merkle_root)

Há duas formas de gastar:

  • Caminho de chave: assinar com a chave tweaked. On-chain é só uma assinatura. Ninguém pode saber se existia uma árvore de scripts.
  • Caminho de script: revelar um script (uma folha), as suas entradas e um control block que guarda P e o ramo Merkle que prova que essa folha está na árvore. As outras folhas permanecem ocultas.

Essa árvore de alternativas costuma chamar-se MAST. Um desenho típico: o caminho de chave é «todos concordam», e as folhas são backups como «2-de-3 após 6 meses».

BIP342: Tapscript

A linguagem de script dentro das folhas foi atualizada. OP_CHECKMULTISIG foi substituído por OP_CHECKSIGADD, que é verificável em lote. Removeram-se o limite de script de 10.000 bytes e o de 201 opcodes e substituíram-se por um orçamento de assinaturas ligado ao tamanho do witness. Opcodes não usados tornaram-se OP_SUCCESSx, o que simplifica futuros soft forks.

Melhor hashing de assinaturas

O sighash do BIP341 compromete-se com os valores e scripts de todas as entradas que se gastam, então carteiras de hardware podem verificar taxas sem ver transações anteriores.

Ativação

O Taproot usou «Speedy Trial», uma janela curta de sinalização estilo BIP9 com limiar de 90%. O limiar de 90% foi alcançado no bloco 687.284 em 12 de junho de 2021, bloqueou-se a partir do período seguinte (bloco 687.456) e aplicou-se a partir do bloco 709.632.

Benefícios

Multisig e contratos mais baratos e privados, porque o caso habitual parece um pagamento ordinário de uma só chave.