P2SH-P2WPKH
Nested P2WPKH — un P2WPKH moderno envuelto en un P2SH legado
BIP 141: Segregated Witness
P2SH-P2WPKH (también conocido como P2WPKH anidado) es un tipo de script de bloqueo que envuelve un P2WPKH moderno dentro de un P2SH legado.
Te permite enviar bitcoins a una dirección 3 legada (P2SH), pero también aprovechar el menor costo de tarifa que viene de gastar una salida P2WPKH moderna.
Por lo tanto, P2SH-P2WPKH sirve como puente hasta que carteras y exchanges soporten el envío directo a direcciones bc1q.
No hay razón para usar P2SH-P2WPKH si tienes la opción de usar P2WPKH directamente. P2SH-P2WPKH solo es útil si no puedes enviar a una dirección bc1q desde tu cartera o exchange, pero sí puedes enviar a una dirección 3.
Propósito
¿Por qué existe P2SH-P2WPKH?
P2WPKH se desbloquea mediante el campo de testigo, que ofrece un descuento de espacio en el bloque — así que cuesta menos en tarifas gastar un P2WPKH que un P2PKH legado.
Sin embargo, cuando SegWit se activó en 2016, las carteras y exchanges podían no haber implementado el envío a P2WPKH (direcciones bc1q). Así que P2SH-P2WPKH ofrece la opción de enviar a un P2SH (dirección 3), permitiendo aprovechar el descuento de P2WPKH incluso sin soporte para Bech32.
Uso
¿Cómo funciona P2SH-P2WPKH?
ScriptPubKey
El ScriptPubKey es un script de bloqueo P2SH estándar: OP_HASH160 <hash del script> OP_EQUAL. El hash es el HASH160 de un script de rescate, que es el propio programa de testigo P2WPKH.
ScriptSig
El ScriptSig contiene un único elemento: el push de datos del Redeem Script, que es el programa de testigo P2WPKH (OP_0 <hash de la clave pública>).
Testigo
El testigo funciona como en el P2WPKH normal: la firma seguida de la clave pública.
Dirección
La dirección es una dirección P2SH normal (Base58Check con prefijo 0x05, empezando con "3"), donde el hash es el HASH160 del redeem script P2WPKH: