P2SH
Pay To Script Hash — bloquea bitcoins al hash de un script
P2SH (Pay To Script Hash) es un script de bloqueo que permite bloquear bitcoins al hash de un script.
Esto permite usar scripts de bloqueo personalizados, al mismo tiempo que le da al remitente una dirección para enviar los bitcoins (en vez de obligarlo a usar el script personalizado completo).
El script personalizado completo se llama Redeem Script (script de rescate) y se revela cuando luego vas a gastar los bitcoins.
En resumen, P2SH es una solución práctica para colocar scripts personalizados sobre los bitcoins. Se usa más comúnmente para bloquear bitcoins a scripts complejos, como P2MS.
Script legado. Todavía se usa ocasionalmente, pero P2WSH es ahora la opción preferida (funciona de la misma manera).
Uso
¿Cómo funciona P2SH?
ScriptPubKey (bloqueo)
El script de bloqueo P2SH contiene el hash de otro script (Script Hash), rodeado por los opcodes HASH160 y EQUAL:
OP_HASH160 <hash del script> OP_EQUAL ScriptSig (desbloqueo)
El script de desbloqueo de un P2SH consiste en dos partes:
- El código de desbloqueo necesario para desbloquear el Redeem Script.
- Un push de datos del propio Redeem Script.
En otras palabras, el ScriptSig contiene tanto el script de desbloqueo como el script de bloqueo completo. Puedes inspeccionar el Redeem Script decodificándolo del hex:
Base58
Ejecución
P2SH es una forma especial de script y se ejecuta de forma un poco diferente a los scripts "normales".
Un script P2SH se ejecuta en dos pasos:
- Paso 1: Ejecución estándar. El Redeem Script se hashea y se compara para ver si es igual al Script Hash.
- Paso 2: Ejecución del Redeem Script (parte especial). El Redeem Script se deserializa y se ejecuta como si fuera el script de bloqueo.
Herramientas
El hash del script es el HASH160 del Redeem Script. La dirección P2SH es una codificación Base58Check de ese hash con el prefijo de versión 0x05 (direcciones que empiezan con "3"):