Skip to main content

P2SH | Bitcoin Glossary | Mapping Bitcoin

P2SH

Protocolo

Also known as: Pay-to-Script-Hash

Pay-to-Script-Hash: script que envía fondos a un hash de script, ocultando condiciones complejas hasta el momento del gasto. Direcciones comienzan con '3'.

Visión general

Pay-to-Script-Hash (P2SH), introducido en BIP16, transfirió la carga de las condiciones de gasto complejas del remitente al destinatario. Antes de P2SH, si alguien quería recibir bitcoin en un arreglo multisig, el remitente tenía que incluir el script multisig completo en su salida de transacción. P2SH simplificó esto permitiendo al destinatario proporcionar solo un hash del script, con el script completo revelado solo al momento del gasto.

Cómo funciona P2SH

El remitente bloquea fondos al hash de un script de canje. Al gastar, el destinatario revela el script de canje completo junto con los datos necesarios para satisfacerlo.

Script de Bloqueo:
  OP_HASH160 <scriptHash> OP_EQUAL

Script de Desbloqueo (gastando un multisig 2-de-3):
  OP_0 <firma1> <firma2> <redeemScript>

Donde redeemScript =
  OP_2 <pubKey1> <pubKey2> <pubKey3> OP_3 OP_CHECKMULTISIG

Validación:
┌────────────────────┐
│ 1. Hashear el      │
│    redeemScript     │──> Debe coincidir con <scriptHash>
├────────────────────┤
│ 2. Ejecutar el     │
│    redeemScript     │──> Debe devolver VERDADERO
│    con las firmas   │
│    proporcionadas   │
└────────────────────┘

Formato de dirección

Las direcciones P2SH usan codificación Base58Check y comienzan con el carácter 3 en mainnet. Esto facilita a las billeteras distinguir las direcciones P2SH de las P2PKH (que comienzan con 1).

Casos de uso comunes

  • Billeteras multisig — El caso de uso P2SH más común, habilitando requisitos de firma m-de-n
  • SegWit envuelto — P2SH puede envolver un script SegWit (P2SH-P2WPKH), permitiendo a billeteras antiguas enviar a direcciones SegWit
  • Scripts con bloqueo temporal — Arreglos de custodia o vesting usando OP_CHECKLOCKTIMEVERIFY

Limitaciones

P2SH requiere revelar el script de canje completo al gastar, lo que expone las condiciones de gasto en la cadena. El formato más nuevo P2TR (Taproot) aborda esta preocupación de privacidad revelando solo la ruta de gasto específica que fue usada, manteniendo ocultas las condiciones no utilizadas.