Glossário / Protocolo e atualizações
Taproot
Outros nomes: BIP341.
- O que é Taproot?
- Taproot é o soft fork de 2021 que deu ao bitcoin as assinaturas Schnorr e um novo tipo de saída em que o caminho de gasto cooperativo parece idêntico a um pagamento comum de chave única.
Especificação no BIP-341.
Três especificações foram lançadas juntas: o BIP-340 para as assinaturas Schnorr, o BIP-341 para o tipo de saída e o BIP-342 para a linguagem de script ajustada. A ativação ocorreu no bloco 709.632 em 14 de novembro de 2021, quatro anos depois da atualização anterior. O efeito prático é que arranjos complicados, cofres de multiassinatura, depósitos em garantia e fechamentos de canal podem ser liquidados com a aparência do pagamento de qualquer outra pessoa.
Como funciona
O projeto parte de uma observação sobre como os contratos realmente terminam: quase todos terminam em acordo.
Uma saída Taproot compromete duas coisas ao mesmo tempo dentro de um único valor de 32 bytes. Uma é uma chave pública, detida por quem forem as partes que cooperam. A outra é uma árvore de merkle cujas folhas são scripts alternativos, as alternativas que se aplicam quando a cooperação falha. A chave publicada é a chave cooperativa ajustada por um hash dela mesma e da raiz dessa árvore, o que significa que a saída compromete cada alternativa sem revelar que alguma existe.
O gasto então segue um de dois caminhos. O caminho de chave produz uma única assinatura e não publica nada sobre a árvore, então a transação é indistinguível do pagamento de uma só pessoa. O caminho de script revela exatamente uma folha mais os hashes irmãos necessários para provar que ela pertence à raiz comprometida, e todas as outras ramificações permanecem em segredo para sempre. Um cofre com quórum de dois de três, uma chave de recuperação com atraso e uma cláusula de emergência expõe apenas a cláusula que foi usada.
O BIP-342 ajustou a linguagem de script para essas folhas. O OP_CHECKMULTISIG não está disponível dentro de uma folha Taproot e o OP_CHECKSIGADD o substitui, contando assinaturas bem-sucedidas na pilha em vez de consumir um lote de uma vez, o que permite escrever verificações de limite sem a antiga complicação. O limite de 10.000 bytes para o tamanho do script e o limite de 201 opcodes acabaram, substituídos por um orçamento de operações de assinatura que cresce com o tamanho da testemunha. Tipos de chave pública desconhecidos e versões de folha desconhecidas são definidos como válidos, deixando espaço para a próxima atualização sem outro formato de endereço.
Como o Taproot ocupa a versão de testemunha 1, seus endereços usam o checksum bech32m do BIP-350 em vez do bech32 original. É por isso que um software pode aceitar bc1q e ainda assim rejeitar bc1p.
Por que isso importa quando você compra bitcoin
O argumento da privacidade é o que se aplica a quase todo mundo, incluindo pessoas que nunca vão escrever um script.
Todas as formas anteriores de proteger bitcoin anunciavam a si mesmas. Um depósito de multiassinatura 2 de 3 era legível on-chain como um depósito de multiassinatura 2 de 3, o que dizia às empresas de análise de cadeia, e a qualquer um que comprasse dados delas, que o endereço pertencia a alguém que guardava o suficiente para valer a pena. Um gasto Taproot cooperativo a partir da mesma configuração publica uma assinatura contra uma chave. A segurança não muda e o sinal desaparece.
O custo vai na mesma direção. Uma entrada Taproot por caminho de chave é o tipo de entrada mais barato do bitcoin, e a diferença aumenta à medida que a configuração fica mais complicada, porque as ramificações alternativas que você nunca usa não custam nada. Para quem monta o tipo de configuração de herança ou de multiassinatura que nossas análises de carteiras de hardware descrevem, isso muda a conta de quantas chaves vale a pena ter.
A fricção é real e vale a pena planejar em torno dela. Algumas corretoras ainda recusam bc1p como destino de saque, e firmware mais antigo de carteira de hardware pode não derivar endereços Taproot de forma alguma. A solução alternativa é sem graça: receba em um endereço bc1q da mesma frase de recuperação e mude para Taproot quando todo o seu conjunto de ferramentas aceitar isso. Nada se perde por esperar, já que os dois tipos de endereço vêm de um único backup.
Uma nota honesta sobre os efeitos colaterais. Os dados de testemunha baratos do Taproot são o que tornou as inscrições econômicas, e a demanda resultante empurrou as taxas para níveis que os pagamentos comuns não viam havia anos. Isso foi uma consequência do desconto, e não um objetivo do projeto, e é justo apontar isso como crítica a ele.
Speedy Trial, o meio-termo que ativou o Taproot
No início de 2021 o código não gerava mais controvérsia, e ainda assim o método de ativação quase o afundou.
A discussão era sobre o BIP-8 e seu sinalizador lockinontimeout. Um grupo queria o LOT definido como true, forçando a ativação no timeout, sinalizassem os mineradores ou não, com base no princípio de que 2017 havia mostrado que os mineradores podiam travar tudo indefinidamente. O outro queria false, com base no princípio de que uma ativação forçada com apoio fraco arrisca a divisão que ela tenta evitar. Nenhum dos lados cedeu por meses.
O Speedy Trial encerrou o impasse tornando a questão menor. Manteve a contagem por bits de versão do BIP-9, baixou o limite para 1.815 de 2.016 blocos, abriu uma janela de aproximadamente três meses e definiu uma altura mínima fixa de ativação de 709.632, de modo que o travamento e a aplicação ficassem separados por um intervalo longo e previsível. Se os mineradores sinalizassem, o fork acontecia em uma data conhecida. Se não, a tentativa expirava rapidamente e a discussão mais difícil podia recomeçar sem nada perdido.
O código foi lançado no Bitcoin Core 0.21.1 em 1º de maio de 2021. Os mineradores superaram o limite no período de dificuldade que terminou em 12 de junho de 2021, dando à rede cinco meses de aviso prévio antes de as regras mudarem. Ele continua sendo o único método de ativação que o bitcoin já usou que foi projetado principalmente para falhar a baixo custo.
Taproot vs assinaturas Schnorr
O Taproot é o pacote; as assinaturas Schnorr são uma parte dele. O BIP-340 define um esquema de assinatura que existe na criptografia desde a década de 1980 e que em princípio poderia ser usado em qualquer lugar, enquanto o BIP-341 define como é uma saída de bitcoin e o BIP-342 define o que roda dentro dela. No bitcoin, os três são inseparáveis na prática, porque uma assinatura BIP-340 só é válida em um gasto de versão de testemunha 1, mas são documentos separados que resolvem problemas separados, e a agregação de chaves que as pessoas acham mais interessante é uma propriedade do esquema de assinatura, e não do próprio Taproot.