Glossário / Protocolo e atualizações
MAST
Outros nomes: Merkelized Alternative Script Tree.
- O que é o MAST?
- O MAST esconde atrás de uma árvore de Merkle cada condição de gasto que você não usa, de modo que revelar um ramo ao gastar mantém o restante privado e fora da blockchain.
Especificação no BIP-341.
A ideia é anterior à sua implantação. Duas propostas, o BIP-114 e o BIP-116, a descreveram em 2016 e 2017 e nenhuma foi ativada; o Taproot a incorporou em 2021 como a taptree, cujos gastos por caminho de script revelam uma folha mais uma prova de 32 bytes por nível. Em uma carteira com vários caminhos de recuperação, a blockchain só fica sabendo daquele que você de fato usou.
Como funciona
Uma árvore de scripts se reduz a um único hash, e esse hash é aquilo com que o endereço se compromete.
Comece pelas condições que você quer. Digamos quatro: sua chave do dia a dia, um quórum familiar de dois de três, a chave de um advogado após um ano de inatividade e uma chave de emergência guardada fora do local. Cada condição é escrita como seu próprio script pequeno, e cada uma é transformada em hash em uma folha. As folhas são emparelhadas e transformadas em hash, esses resultados são emparelhados e transformados em hash de novo, e o processo termina em uma única raiz de 32 bytes.
O gasto revela a folha que você usou, seu script e os hashes irmãos ao longo do caminho dessa folha até a raiz. Dois níveis de árvore significam dois hashes irmãos, 64 bytes, e qualquer pessoa pode recalcular a raiz e confirmar que o script faz parte do compromisso. As outras três condições nunca aparecem. Ninguém fica sabendo que a chave de um advogado existe, que o quórum familiar era de dois de três ou que uma chave guardada fora do local alguma vez fez parte do arranjo.
O custo cresce com o logaritmo do número de condições, e é isso que torna a estrutura vantajosa. Uma árvore de 8 scripts acrescenta 3 hashes ao witness, uma árvore de 128 scripts acrescenta 7, e o BIP-341 permite uma profundidade de 128 níveis, então o bloco de controle que acompanha um gasto por caminho de script chega no máximo a 4.129 bytes.
A nomenclatura é uma bagunça e sempre foi. MAST é expandido como merkelized alternative script tree e como merkelized abstract syntax tree, dependendo de quem escreve; a segunda vem do BIP-114, em que a árvore continha partes de um único script em vez de um conjunto de alternativas. As duas se referem à mesma construção na prática.
Onde você vê isso
Todo endereço Taproot que tem mais de uma forma de ser gasto está usando MAST, use a carteira essa palavra ou não.
As carteiras de herança com bloqueio temporal são o caso mais claro. A Liana, por exemplo, deposita fundos em um endereço cuja taptree contém uma chave de gasto normal e um ramo de recuperação que passa a ser utilizável após uma espera fixa, e um gasto normal nunca publica o ramo de recuperação. A Lightning usa o mesmo formato em suas saídas de canal mais recentes, mantendo o caminho de punição oculto durante um fechamento cooperativo.
Há uma questão de taxas que vale conhecer antes de construir uma. O equilíbrio importa: uma folha que você espera usar com frequência deve ficar perto do topo da árvore, porque cada nível extra acrescenta 32 bytes ao witness de cada gasto que passa por ela. As carteiras que permitem definir o layout da árvore normalmente fazem isso por você, mas um software coordenador que despeja todas as condições em uma árvore plana e equilibrada fará o caminho comum pagar pelos raros.
MAST vs Taproot
MAST é a árvore; Taproot é a árvore mais uma saída de emergência. Um projeto puramente MAST obrigaria todo gasto a revelar algum script, então a blockchain sempre ficaria sabendo que um contrato existia, mesmo que não soubesse nada sobre os ramos não usados.
Taproot acrescenta uma chave na raiz. O endereço se compromete com uma chave pública interna ajustada pela raiz de Merkle, e se todos os envolvidos concordarem, eles assinam com a chave ajustada e não publicam nada além de uma única assinatura. Esse gasto é indistinguível de um pagamento de uma só pessoa. A árvore continua lá, ainda pode ser executada e simplesmente nunca é mostrada. O MAST fornece a privacidade entre ramos, e o Taproot fornece a privacidade entre um contrato e um pagamento comum.