Glossário / Endereços e chaves
Multiassinatura P2SH
- O que é a multiassinatura P2SH?
- A multiassinatura P2SH esconde um script de resgate m-de-n atrás de um endereço 3, e o limite de 520 bytes do script o restringe a quinze chaves públicas.
Especificação no BIP-16.
Um script de resgate 2-de-3 tem 105 bytes: um opcode para 2, três chaves comprimidas de 33 bytes com seus prefixos de inserção, um opcode para 3 e OP_CHECKMULTISIG. Gastar uma entrada custa aproximadamente 297 vbytes, cerca do triplo de uma entrada SegWit nativa de chave única. Esse foi o arranjo padrão de custódia compartilhada de 2012 até os dados de testemunha receberem seu desconto.
Como funciona
Um script de resgate de multiassinatura P2SH lista o quórum diretamente: o número de assinaturas exigidas, depois cada chave pública participante, depois o número total de chaves e depois OP_CHECKMULTISIG. Ninguém o vê enquanto os bitcoins permanecem sem gasto, porque a saída compromete apenas seu hash de 20 bytes.
O teto de quinze chaves é aritmética, não invenção de política. Quinze chaves comprimidas de 34 bytes cada uma, contando o prefixo de inserção, somam 510 bytes; somando os dois opcodes de contagem e OP_CHECKMULTISIG chega-se a 513, que cabe dentro do limite de 520 bytes de um único elemento da pilha. Uma décima sexta chave não cabe. As regras de consenso do Bitcoin permitem OP_CHECKMULTISIG com até 20 chaves, mas um script de resgate P2SH fisicamente não pode carregar tantas.
Há uma velha peculiaridade no caminho de gasto. OP_CHECKMULTISIG retira da pilha um item a mais do que usa, um erro da implementação original que nunca pôde ser removido sem um hard fork. Os signatários contornam isso empilhando primeiro um elemento fictício, e o BIP-147 exigiu que esse elemento fosse vazio, o que foi ativado junto com o SegWit no bloco 481.824. Uma entrada concluída, portanto, se lê assim: inserção vazia, assinatura, assinatura, script de resgate.
Onde você vê isso
Tesourarias corporativas, arranjos de herança e armazenamento a frio de corretoras construídos entre 2013 e 2018 são em grande parte de multiassinatura P2SH. O depósito em garantia em mercados ponto a ponto mais antigos usava 2-de-3 com a plataforma detendo a terceira chave, e era assim que uma disputa podia ser resolvida sem que nenhum dos negociadores controlasse os bitcoins de forma absoluta.
A exigência de backup pega as pessoas de surpresa. Cada cossignatário precisa das chaves públicas estendidas de todos os outros cossignatários, ou de um descritor que as registre, porque o script de resgate não pode ser reconstruído a partir de uma única frase de recuperação. Ter duas de três chaves privadas e nenhuma das chaves públicas deixa você sem poder gastar. Anote o descritor junto com os backups das frases de recuperação e teste uma recuperação antes que o arranjo guarde algo que você valoriza.
Hoje os novos quóruns são construídos com P2WSH ou Taproot, porque a mesma política custa muito menos para gastar e não tem teto de quinze chaves. Os cofres P2SH existentes continuam funcionando exatamente como antes, e não há migração forçada.
Multiassinatura P2SH vs multiassinatura
A multiassinatura é a política e a multiassinatura P2SH é uma forma de escrevê-la. O mesmo requisito 2-de-3 pode viver em uma saída de multiassinatura simples das regras mais antigas do bitcoin, em um script de resgate P2SH, em um script de testemunha P2WSH ou, no Taproot, dentro de uma única chave agregada que gasta como um pagamento comum e não revela quórum algum. Escolher P2SH é uma decisão sobre taxas, sobre o teto de quinze chaves e sobre o fato de que todo o seu arranjo de assinatura se torna conhecimento público na primeira vez que você move bitcoins.