Descripción General
Tapscript (BIP342) define las reglas de scripting utilizadas dentro de los gastos por ruta de script de Taproot. Si bien se basa en la base del Script de Bitcoin, Tapscript introduce modificaciones importantes que mejoran la flexibilidad, eficiencia y capacidad de actualización futura. Se aplica exclusivamente a los scripts ejecutados a través de la ruta de script de una salida P2TR.
Cambios Clave Respecto al Script Heredado
Tapscript realiza varias modificaciones notables al sistema de scripting:
- Validación de firma basada en Schnorr: Reemplaza la semántica de
OP_CHECKSIGyOP_CHECKMULTISIGcon equivalentes basados en Schnorr. El nuevo opcodeOP_CHECKSIGADDreemplazaOP_CHECKMULTISIGcon un diseño más eficiente y verificable en lote. - Tamaño de firma: Todas las firmas Schnorr en Tapscript tienen exactamente 64 bytes (o 65 con un indicador sighash), simplificando la estimación de tarifas.
- Opcodes
OP_SUCCESSx: Los opcodes anteriormente indefinidos se designan comoOP_SUCCESS, haciendo que cualquier script que los contenga tenga éxito automáticamente. Esto proporciona un mecanismo limpio para que futuras actualizaciones de bifurcación suave asignen nueva funcionalidad a estos opcodes. - Opcodes eliminados:
OP_CHECKMULTISIGyOP_CHECKMULTISIGVERIFYestán deshabilitados en Tapscript en favor deOP_CHECKSIGADD.
Ejecución por Ruta de Script
Salida Taproot
|
Gasto por ruta de script:
|
┌───────────────────────────┐
│ 1. Revelar el script │
│ 2. Proporcionar prueba │
│ de Merkle │
│ 3. Ejecutar Tapscript │
│ 4. Validar contra reglas │
└───────────────────────────┘
Cuando se usa un gasto por ruta de script, el gastador revela la hoja de script específica y proporciona una prueba de Merkle que muestra que es parte del árbol de script comprometido. El script se ejecuta luego bajo las reglas de Tapscript en lugar de las reglas del Script de Bitcoin heredado.
Capacidad de Actualización Futura
Una de las características de diseño más importantes de Tapscript es el mecanismo OP_SUCCESS. Debido a que cualquier script que contenga un opcode OP_SUCCESS tiene éxito incondicionalmente, una futura bifurcación suave puede redefinir estos opcodes para agregar nuevas condiciones. Esto proporciona una ruta de actualización mucho más limpia que el mecanismo de extensión OP_NOP heredado, que solo podía agregar nuevas restricciones.
Conceptos Erróneos Comunes
Tapscript no es un lenguaje de scripting completamente nuevo — es una versión modificada del Script de Bitcoin con cambios de reglas específicos para el contexto de Taproot. La mayoría de los opcodes existentes se comportan de manera idéntica en ambos sistemas.