Visão Geral
O Tapscript (BIP342) define as regras de scripting usadas dentro dos gastos por caminho de script do Taproot. Embora construído sobre a base do Script Bitcoin, o Tapscript introduz modificações importantes que melhoram a flexibilidade, eficiência e capacidade de atualização futura. Aplica-se exclusivamente a scripts executados via caminho de script de uma saída P2TR.
Principais Mudanças em Relação ao Script Legado
O Tapscript faz várias modificações notáveis ao sistema de scripting:
- Validação de assinatura baseada em Schnorr: Substitui a semântica de
OP_CHECKSIGeOP_CHECKMULTISIGcom equivalentes baseados em Schnorr. O novo opcodeOP_CHECKSIGADDsubstituiOP_CHECKMULTISIGcom um design mais eficiente e verificável em lote. - Tamanho de assinatura: Todas as assinaturas Schnorr no Tapscript têm exatamente 64 bytes (ou 65 com um sinalizador sighash), simplificando a estimativa de taxas.
- Opcodes
OP_SUCCESSx: Opcodes anteriormente indefinidos são designados comoOP_SUCCESS, fazendo com que qualquer script que os contenha seja bem-sucedido automaticamente. Isso fornece um mecanismo limpo para futuras atualizações de bifurcação suave atribuírem nova funcionalidade a esses opcodes. - Opcodes removidos:
OP_CHECKMULTISIGeOP_CHECKMULTISIGVERIFYsão desabilitados no Tapscript em favor deOP_CHECKSIGADD.
Execução por Caminho de Script
Saída Taproot
|
Gasto por caminho de script:
|
┌───────────────────────────┐
│ 1. Revelar o script │
│ 2. Fornecer prova │
│ de Merkle │
│ 3. Executar Tapscript │
│ 4. Validar contra regras │
└───────────────────────────┘
Quando um gasto por caminho de script é usado, o gastador revela a folha de script específica e fornece uma prova de Merkle mostrando que ela faz parte da árvore de script comprometida. O script é então executado sob as regras do Tapscript em vez das regras do Script Bitcoin legado.
Capacidade de Atualização Futura
Uma das características de design mais importantes do Tapscript é o mecanismo OP_SUCCESS. Como qualquer script contendo um opcode OP_SUCCESS é bem-sucedido incondicionalmente, uma futura bifurcação suave pode redefinir esses opcodes para adicionar novas condições. Isso fornece um caminho de atualização muito mais limpo do que o mecanismo de extensão OP_NOP legado, que só poderia adicionar novas restrições.
Equívocos Comuns
O Tapscript não é uma linguagem de scripting completamente nova — é uma versão modificada do Script Bitcoin com mudanças de regras específicas para o contexto do Taproot. A maioria dos opcodes existentes se comporta de forma idêntica em ambos os sistemas.