Script

Un mini lenguaje de programación que bloquea y desbloquea bitcoins

Script es un mini lenguaje de programación usado como mecanismo de bloqueo de las salidas en las transacciones de bitcoin.

Si un script completo (desbloqueo + bloqueo) es válido, la salida queda "desbloqueada" y puede gastarse.

El lenguaje Script

¿Qué es Script?

Script es un lenguaje de programación muy básico. Consiste en dos cosas:

1. Opcodes

Los opcodes son comandos que realizan operaciones — por ejemplo, OP_DUP (duplica el elemento superior de la pila), OP_HASH160 (hashea el elemento superior), OP_EQUALVERIFY (verifica si dos elementos son iguales) y OP_CHECKSIG (verifica una firma contra una clave pública). Cada opcode se representa con un solo byte.

2. Datos

Los elementos de datos dentro de un Script (por ejemplo, claves públicas, firmas) necesitan ser empujados manualmente a la pila usando un opcode de push. El opcode usado depende de cuántos bytes quieres empujar:

Ejecución

¿Cómo se ejecuta un script?

Script es un lenguaje basado en pila (stack). Los comandos se ejecutan de izquierda a derecha. Para gastar una salida, el ScriptSig (desbloqueo) se concatena con el ScriptPubKey (bloqueo), y el resultado se ejecuta:

Si, al final de la ejecución, el elemento superior de la pila es "verdadero" (cualquier valor distinto de cero/vacío), el script es válido y la salida queda desbloqueada.

Validez

Un script es inválido si: la ejecución termina con "falso" en la cima de la pila; un opcode OP_VERIFY falla; o se encuentra un opcode inválido/deshabilitado (como OP_RETURN).

Intérprete de Script

Ejecute un script paso a paso y vea la pila cambiar con cada opcode. El ScriptSig corre primero, luego el ScriptPubKey.

    Scripts estándar

    ¿Qué scripts retransmiten los nodos?

    Aunque puedes crear cualquier script personalizado, los nodos solo retransmiten un conjunto de patrones "estándar" (standard). Los tipos estándar son:

    Legados:

    SegWit / Taproot:

    Los nodos no retransmiten scripts no estándar para proteger a los usuarios de crear trabas con errores (y por eso los scripts complejos se envuelven normalmente en P2SH o P2WSH).

    Límites

    ¿Cuáles son los límites de Script?

    Bitcoin Script es intencionalmente no Turing-completo (no tiene bucles), lo que mantiene la ejecución predecible y segura.