Skip to main content

Tapscript | Bitcoin Glossary | Mapping Bitcoin

Tapscript

Protocolo

Also known as: BIP342

Regras de script do BIP342, parte do Taproot, que atualizam opcodes e introduzem OP_CHECKSIGADD para contratos inteligentes mais eficientes no Bitcoin.

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_CHECKSIG e OP_CHECKMULTISIG com equivalentes baseados em Schnorr. O novo opcode OP_CHECKSIGADD substitui OP_CHECKMULTISIG com 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 como OP_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_CHECKMULTISIG e OP_CHECKMULTISIGVERIFY são desabilitados no Tapscript em favor de OP_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.