Pular para o conteúdo
buybitcoinsmart

Glossário / Protocolo e atualizações

Gasto por caminho de script

O que é um gasto por caminho de script?
Um gasto por caminho de script desbloqueia uma saída Taproot ao revelar um script de folha, os dados de entrada que o satisfazem e um bloco de controle que prova que essa folha foi comprometida pelo endereço.

Especificação no BIP-341.

Os gastos por caminho de script são a rota alternativa para sair de uma saída Taproot, usada quando a assinatura cooperativa que todos esperavam nunca chegou. A prova viaja em um bloco de controle de 33 bytes mais 32 por cada nível da árvore, e o BIP-341 limita essa árvore a 128 níveis. Tomar essa rota publica o ramo que você usou, então a única condição em que você de fato se apoiou deixa de ser privada.

Como funciona

Um nó que valida um gasto por caminho de script lê a pilha de testemunha de trás para frente, porque o último elemento faz a maior parte do trabalho.

Esse último elemento é o bloco de controle, e seu comprimento é verificado antes de qualquer outra coisa. Ele tem que medir exatamente 33 + 32m bytes para um número inteiro m entre 0 e 128, e qualquer outro comprimento falha de imediato. O BIP-341 define o teto em 128 porque uma árvore empacotada de forma ótima só chega a uma profundidade maior para uma folha com menos de 1 em 2^128 de chance de ser usada.

O primeiro byte carrega duas coisas sem relação entre si. Aplique a máscara 0xfe e você tem a versão de folha, 0xc0 para as regras do tapscript; o bit que você retirou com a máscara é a paridade da coordenada Y da chave da saída, presente para que o gasto possa ser verificado em lote. Os próximos 32 bytes são a chave pública interna, a que teria assinado um gasto cooperativo; tudo o que vem depois é o caminho de merkle, 32 bytes por nível.

O nó então reconstrói o compromisso. Ele calcula o hash da versão de folha com o script revelado para formar um hash de folha e incorpora cada elemento do caminho por vez. A direção nunca é transmitida: os dois valores de 32 bytes em cada etapa são ordenados lexicograficamente antes do hash, então a comparação decide a ordem e nenhum bit de direção é enviado. A raiz e a chave interna produzem um ajuste, e a chave ajustada tem que ser igual aos 32 bytes que estão no endereço, bit de paridade incluído, antes que o script possa ser executado.

Um byte pode mudar tudo o que vem antes dele. Se a testemunha tiver pelo menos dois elementos e o último começar com 0x50, esse elemento é removido como anexo antes de a validação começar. O BIP-341 não define nenhum significado para ele e adverte que incluí-lo pode levar a "PERMANENT FUND LOSS".

Onde você o vê

Um gasto por caminho de script é reconhecível em um explorador de blocos como uma entrada Taproot cuja testemunha, fora o anexo, tem mais de um elemento.

O próprio exemplo prático do BIP-341 é uma árvore de cinco scripts, de A a E. Gastar com o script D publica D, mais um bloco de controle que contém a chave interna e três hashes: C, E e o hash combinado de A e B. Esse bloco de controle tem 129 bytes para um contrato de cinco condições, e os outros quatro scripts nunca são publicados.

A prova também entrega algo. A seção de segurança do BIP-341 observa que a profundidade da folha revelada vaza a profundidade mínima da árvore, o que "suggests specific wallet software that created the output and helps clustering". A defesa que o BIP-341 sugere é se afastar da árvore que as probabilidades das folhas, de outro modo, tornariam ótima.

A mesma seção é direta sobre a reutilização de chaves. As chaves têm que ser novas em cada folha, não apenas na que você gastou, porque um ramo repetido reaparece como um hash repetido em uma prova posterior, e folhas que compartilham chaves tornam um script não revelado barato de quebrar por força bruta.

Gasto por caminho de script vs tapscript

Um gasto por caminho de script é a rota; o tapscript é a linguagem falada no fim dela. O BIP-341 define tudo até o momento em que a execução começa: o bloco de controle, a dobra ordenada de merkle, a verificação do ajuste, o bit de paridade. O que roda depois é decidido pela versão de folha.

Só 0xc0 significa tapscript atualmente. Uma folha que carregue qualquer outra versão não é um erro, porque o BIP-341 exige que a execução tenha sucesso para versões de folha desconhecidas. Esse é o gancho que permite a um soft fork posterior definir uma linguagem de script diferente dentro do mesmo formato de endereço bc1p, o que faz do gasto por caminho de script a metade duradoura do par.

Não confundir com

Perguntas frequentes

Alguém pode ver as condições de gasto que eu não usei?

Não. Um gasto por caminho de script publica um script de folha mais os hashes irmãos no caminho dele, e todos os outros ramos permanecem para sempre um hash ilegível. O que se torna público é que um caminho de script existia, e a que profundidade na árvore estava a folha revelada.

Por que o bloco de controle carrega um bit de paridade?

Para tornar possível a verificação em lote. O bit mais baixo do primeiro byte registra se a coordenada Y da chave da saída é par ou ímpar, o que permite a um verificador elevar os 32 bytes no endereço de volta a um único ponto da curva, em vez de tentar os dois.

Leia a seguir

Fontes

Última revisão: 6 de setembro de 2026.

Termos relacionados

Mais em Protocolo e atualizações

Ler esta página em inglês