Descripción general
Un script de bloqueo (formalmente llamado scriptPubKey) es la parte de una salida de transacción de Bitcoin que establece las condiciones bajo las cuales el bitcoin puede gastarse. Cada salida en una transacción de Bitcoin contiene una cantidad y un script de bloqueo. Para gastar esa salida en una transacción futura, el gastador debe proporcionar un script de desbloqueo (scriptSig) o datos testigo que satisfagan estas condiciones.
Tipos comunes de scripts de bloqueo
P2PKH (Pay-to-Public-Key-Hash):
OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
P2SH (Pay-to-Script-Hash):
OP_HASH160 <scriptHash> OP_EQUAL
P2WPKH (Pay-to-Witness-Public-Key-Hash):
OP_0 <pubKeyHash de 20 bytes>
P2TR (Pay-to-Taproot):
OP_1 <clave pública tweaked de 32 bytes>
Cómo funciona el gasto
Cuando alguien quiere gastar una salida, construye una nueva transacción con una entrada que hace referencia a la salida. La entrada incluye un script de desbloqueo que proporciona los datos (firmas, claves públicas, preimágenes) necesarios para que el script de bloqueo evalúe como verdadero. Los nodos de Bitcoin ejecutan ambos scripts juntos para verificar el gasto.
Script de desbloqueo (entrada) + Script de bloqueo (salida)
<sig> <pubKey> + OP_DUP OP_HASH160 ...
│ │
└──── Evaluados ────────────┘
juntos
Debe retornar TRUE
Casos límite
Un script de bloqueo OP_RETURN crea una salida provablemente no gastable — ningún script de desbloqueo puede satisfacerlo. Esto se usa intencionalmente para incrustar datos. Por el contrario, scripts como OP_TRUE harían las salidas gastables por cualquiera, razón por la cual la construcción cuidadosa de scripts es crítica para la seguridad.