Saltar al contenido
buybitcoinsmart

Glosario / Direcciones y claves

P2WSH

También se conoce como Pay-to-Witness-Script-Hash.

¿Qué es P2WSH?
P2WSH bloquea las monedas en un compromiso SHA-256 de 32 bytes que fija un script de testigo, y da a los contratos mucho más espacio que P2SH y un descuento en el script cuando este se revela.

Se especifica en el BIP-141.

"Pay to witness script hash" es la salida SegWit versión 0 para todo lo que sea más complicado que una sola clave, y se escribe como una dirección bc1q de 62 caracteres. Bitcoin Core retransmite un gasto cuyo script de testigo llega a 3.600 bytes y cuyo testigo contiene hasta 100 elementos de la pila, mientras que un script de canje P2SH se detiene en 520 bytes. Ese espacio adicional es la razón por la que los contratos serios se trasladaron aquí.

Cómo funciona

Una salida P2WSH es el byte 0x00 de la versión de testigo 0 seguido de una inserción de datos de 32 bytes, 34 bytes en total. Esos 32 bytes son un SHA-256 simple del script de testigo serializado, no el RIPEMD-160 de un SHA-256 que se usa en otras partes de bitcoin.

Esa elección es deliberada. Un compromiso de 160 bits ofrece aproximadamente 80 bits de resistencia a colisiones, lo que resulta incómodo cuando una contraparte ayuda a elegir lo que entra en el script y podría buscar dos scripts que compartan un hash. Un compromiso de 256 bits elimina esa preocupación. P2WPKH, que usa una sola clave, conserva el hash más corto porque solo una parte elige la clave, y por eso su dirección es 20 caracteres más corta.

Al gastar, se apilan los argumentos en la pila del testigo y se termina con el script serializado. Un nodo calcula el hash de ese último elemento, lo compara con el compromiso y luego ejecuta el script con lo que queda. La política de retransmisión de Bitcoin Core establece los límites en el archivo policy.h: 3.600 bytes para el script, 100 elementos en la pila y 80 bytes por elemento.

Las comisiones explican la migración. Aquí, un gasto 2 de 3 ocupa alrededor de 104,5 vbytes, porque las dos firmas y todo el script de 105 bytes van en el testigo a una unidad de peso por byte. La misma política de gasto con P2SH cuesta aproximadamente 297 vbytes. El límite de consenso de 20 claves del opcode (código de operación) OP_CHECKMULTISIG también se puede alcanzar, ya que veinte claves ocupan menos de 700 bytes.

Dónde aparece

Todo canal Lightning se financia mediante una salida P2WSH 2 de 2, lo que lo convierte en uno de los tipos de script más comunes de la cadena, aunque pocas personas escriban alguna vez la dirección. La custodia institucional, las políticas de miniscript y las cláusulas de herencia con bloqueo temporal (timelock) también lo usan.

En un explorador de bloques, un UTXO P2WSH es una cadena de 62 caracteres que empieza por bc1q y nada más. Tiene el mismo aspecto tanto si protege dos claves como veinte, y las condiciones solo salen a la luz cuando las monedas se mueven.

Los respaldos tienen que incluir el script. Una frase semilla regenera claves, no scripts arbitrarios, así que guarde el descriptor o los bytes exactos del script junto a la frase semilla y compruebe que puede restaurar a partir de ellos antes de que la dirección contenga dinero real.

P2WSH frente a script de testigo

P2WSH es la salida; el script de testigo es el contenido que la salida fija. La salida contiene 32 bytes de hash y nada más, así que no aporta ninguna información sobre las condiciones asociadas, y nada del script aparece on-chain hasta que un gasto lo publica. En consecuencia, la obligación es desigual. Un remitente solo necesita la dirección y puede pagar sin entender nada. El destinatario necesita los bytes exactos del script para siempre, porque perderlos hace que las monedas sean imposibles de gastar, sin importar cuántas claves privadas sobrevivan.

No confundir con

Preguntas frecuentes

¿Por qué una dirección P2WSH es más larga que una dirección bc1q corriente?

Porque codifica un hash de 32 bytes en lugar de uno de 20 bytes, lo que da 62 caracteres en vez de 42. El compromiso más largo usa SHA-256 simple, lo que mantiene las colisiones fuera de alcance cuando varias partes ayudan a construir el script.

¿Necesito P2WSH para una billetera corriente?

No. Una billetera de una sola clave usa P2WPKH o Taproot y nunca lo toca. P2WSH importa para las bóvedas multisig, la financiación de canales Lightning y cualquier política de gasto que tenga que escribirse como un script.

Para seguir leyendo

Términos relacionados

Más en la sección Direcciones y claves

Leer esta página en inglés