Glossário / Endereços e chaves
P2TR
Outros nomes: endereço Taproot, Pay-to-Taproot, endereço bc1p.
- O que é o P2TR?
- O P2TR paga a uma única chave pública ajustada de 32 bytes, então um gasto pelo caminho de chave parece idêntico on-chain, seja uma pessoa que assinou, seja um contrato complexo liquidado de forma cooperativa.
Especificação no BIP-341.
Pay to taproot é a versão de testemunha 1, ativa desde o bloco 709.632 em 14 de novembro de 2021, e escrita como um endereço de 62 caracteres que começa com bc1p. Um gasto cooperativo publica uma única assinatura Schnorr de 64 bytes e custa cerca de 57,5 vbytes por entrada, a entrada mais barata do bitcoin. Quaisquer regras alternativas embutidas na saída permanecem invisíveis, a menos que alguém realmente as use.
Como funciona
Uma saída P2TR é OP_1 seguido de uma inserção de 32 bytes, 34 bytes no total, e esses bytes são uma chave pública x-only. X-only significa que a coordenada y é descartada e inferida, o que economiza um byte em relação às chaves comprimidas de 33 bytes usadas em todos os outros casos.
A chave que você vê não é a chave que alguém possui. É uma chave interna ajustada por um hash dela mesma e da raiz de merkle de uma árvore de scripts alternativos, então o valor publicado se compromete, ao mesmo tempo, com o caminho cooperativo e com cada alternativa. O gasto então segue um de dois caminhos. O caminho de chave produz uma única assinatura sobre a chave ajustada e não revela mais nada. O caminho de script revela uma folha da árvore, mais os hashes do ramo que provam que essa folha pertence a ela, e deixa o resto da árvore em segredo para sempre.
As assinaturas Schnorr sob o BIP-340 tornam o caminho de chave barato e privada. Elas têm 64 bytes contra 71 ou 72 de uma assinatura ECDSA codificada em DER, e se somam linearmente, então vários signatários podem combinar suas chaves e produzir uma única assinatura sob o MuSig2. Um arranjo de 2 de 2 que coopera acaba indistinguível de uma pessoa pagando uma conta.
Como a versão de testemunha 1 exige bech32m, um endereço bc1p usa a constante de soma de verificação do BIP-350 em vez da do bech32 original.
Onde você o vê
Carteiras que usam Taproot por padrão derivam do ramo BIP-86 em m/86'/0'/0'. O Bitcoin Core adicionou a codificação na versão 22.0 e começou a gerar descritores tr() para novas carteiras de descritores na versão 23.0.
As inscrições colocam dados arbitrários na testemunha de um caminho de script do Taproot, e é por isso que uma grande parte da atividade bc1p não tem nada a ver com pagamentos. Isso é um artefato do desconto sobre os dados de testemunha, não uma propriedade do tipo de endereço.
A fricção está nas bordas. Algumas corretoras ainda rejeitam destinos de saque bc1p, e alguns terminais de pagamento mais antigos também. Não há solução alternativa dentro da sua carteira: use um endereço bc1q da mesma frase de recuperação e consolide depois, se quiser tudo sob Taproot.
P2TR vs Taproot
Taproot é a atualização e P2TR é o tipo de saída que ela criou. O soft fork reuniu três especificações: o BIP-340 definiu as assinaturas Schnorr, o BIP-341 definiu o formato da saída e suas regras de gasto, e o BIP-342 definiu o tapscript, a linguagem de script ajustada usada dentro da árvore. O P2TR é a parte com que você interage, o endereço que começa com bc1p. Dizer “uso Taproot” quase sempre significa “minha carteira me dá endereços P2TR”, mas a atualização também mudou como as assinaturas são verificadas dentro de scripts que você talvez nunca toque.