P2WSH
Pay To Witness Script Hash — la versión segwit de P2SH
BIP 141: Segregated Witness
P2WSH (Pay To Witness Script Hash) es un script de bloqueo que bloquea una salida al hash de un script de bloqueo personalizado.
Funciona de la misma manera que un P2SH legado, pero se desbloquea mediante el campo de testigo en lugar del ScriptSig.
El beneficio de usar P2WSH en lugar de P2SH es que el campo de testigo transporta menos peso, así que pagas menos en tarifas al desbloquear un P2WSH.
P2WSH se introdujo en la actualización Segregated Witness como sustituto de P2SH.
Uso
¿Cómo funciona P2WSH?
ScriptPubKey (bloqueo)
Para crear un bloqueo P2WSH, solo necesitas colocar un OP_0 seguido de un push de datos de 32 bytes:
OP_0 <hash del script (32 bytes)> Ese push de datos es el Script Hash, y es el hash SHA-256 único de un script de bloqueo personalizado.
El OP_0 es el byte de versión. Un script que empieza con OP_0 seguido de un push de 32 bytes siempre se interpreta como P2WSH (mientras que 20 bytes es P2WPKH).
ScriptSig
El ScriptSig debe estar vacío.
Campo de Testigo (desbloqueo)
Para desbloquear un P2WSH, colocas el Witness Script (el script de bloqueo original que formó el Script Hash) como el último elemento del campo de testigo. Todos los elementos anteriores son lo que necesitas para desbloquearlo.
Diferencia con P2SH: en P2SH, el hash del script es el HASH160 (20 bytes); en P2WSH, es el SHA-256 único (32 bytes). Eso reduce la probabilidad de colisiones en scripts de alto valor.
Herramientas
La dirección P2WSH es una codificación Bech32 de la versión de testigo 0 + el hash del script de 32 bytes (direcciones que empiezan con bc1q, pero más largas que las P2WPKH):