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:

  1. El código de desbloqueo necesario para desbloquear el Redeem Script.
  2. 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

Base58

Convierta entre hexadecimal y la codificación Base58.

0 bytes

o una clave privada WIF, por ejemplo>Una

0 dígitos
 

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:

  1. Paso 1: Ejecución estándar. El Redeem Script se hashea y se compara para ver si es igual al Script Hash.
  2. 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"):

HASH160

HASH160

SHA-256 + RIPEMD-160. Se usa para acortar una clave pública o script antes de convertirlo en una dirección.

Una clave pública o un script, por ejemplo

0 bytes
SHA-256
RIPEMD-160

RIPEMD-160(SHA-256(dados))

0 bytes
Dirección (Base58)

Endereço (Base58)

Codifique el hash160 de una clave pública o script en una dirección heredada.

1 byte
0 bytes
0 bytes
Tipo de dirección

Codificación Base58 de los datos anteriores

0 caracteres

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.