Saltar al contenido
buybitcoinsmart

Glosario / Direcciones y claves

P2WPKH

También se conoce como SegWit nativo, Dirección SegWit nativa, Pay-to-Witness-Public-Key-Hash o Dirección bc1q.

¿Qué es P2WPKH?
P2WPKH saca la firma y la clave pública de la entrada y las lleva al testigo, donde cada byte cuenta como una unidad de peso en lugar de cuatro.

Se especifica en el BIP-141.

Las salidas SegWit nativas de una sola clave se escriben como direcciones bc1q de 42 caracteres. El script de bloqueo mide 22 bytes, y gastar una entrada ocupa alrededor de 68 vbytes frente a unos 148 del equivalente heredado (legacy). Bitcoin Core entrega este formato de forma predeterminada desde la versión 0.20.0, y la mayoría de las demás billeteras lo siguieron.

Cómo funciona

Una salida P2WPKH no lleva opcodes (códigos de operación) en el sentido habitual. Es el byte 0x00, que marca la versión de testigo 0, seguido de una inserción de datos con el HASH160 de 20 bytes de su clave pública comprimida: 22 bytes, que los nodos reconocen como un programa de testigo en lugar de ejecutarlos como un script. La entrada que la gasta deja su campo scriptSig completamente vacío y coloca dos elementos en el campo de testigo: la firma y la clave.

El ahorro viene de cómo se miden los bloques. BIP-141 define el peso de bloque como el tamaño base multiplicado por tres más el tamaño total, con un tope de 4.000.000 unidades de peso, lo que equivale a que cada byte que no es de testigo cueste cuatro unidades y cada byte de testigo cueste una. Una entrada P2WPKH tiene 41 bytes que no son de testigo, que pesan 164 unidades, y unos 108 bytes de testigo, que pesan 108, para un total de 272 unidades. Al dividir entre cuatro se obtienen los 68 vbytes que realmente se pagan.

Dos efectos secundarios importan tanto como el descuento. BIP-143 reemplazó el algoritmo de hash de firma para que el trabajo de firmar crezca de forma lineal con el número de entradas y no de forma cuadrática, y por eso una billetera de hardware procesa con rapidez una transacción SegWit grande. Y como el identificador de la transacción ya no cubre el testigo, un tercero ya no puede alterar una firma en tránsito para cambiar el txid.

Dónde aparece

Abra casi cualquier billetera publicada en los últimos años y la pantalla de recepción mostrará una cadena de caracteres bc1q. Las billeteras las derivan de la rama BIP-84, ruta m/84'/0'/0', que SLIP-132 asocia con el prefijo de clave extendida zpub, de modo que un respaldo restaurado en un software distinto llega a las mismas direcciones.

A estas alturas prácticamente todos los formularios de retiro de los exchanges aceptan bc1q. Si alguno se niega, está ejecutando código de validación escrito antes de 2017, y la respuesta práctica es retirar a un formato que sí acepte y después mover las monedas usted mismo.

Algo que bc1q no le dice es a qué paga la salida. Una dirección bc1q de 42 caracteres es una sola clave; una de 62 caracteres es un script. Ambas son de versión de testigo 0 y ambas usan bech32, así que la longitud es la única diferencia visible.

P2WPKH frente a SegWit anidado

P2WPKH y SegWit anidado gastan la misma clave y fijan el mismo hash de 20 bytes. La diferencia es un anidamiento. SegWit anidado coloca ese programa de testigo de 22 bytes dentro de una salida P2SH para que la dirección pueda ser una cadena Base58 que empieza por 3, y los 23 bytes adicionales que no son de testigo en la entrada que la gasta pesan 92 unidades, que es exactamente la diferencia entre 91 vbytes y 68. La seguridad es idéntica. Se renuncia a aproximadamente un tercio del ahorro de comisiones disponible a cambio de una dirección que el software muy antiguo acepta.

No confundir con

Preguntas frecuentes

¿Es bc1q lo mismo que SegWit nativo?

Sí, para billeteras de una sola clave. Una dirección bc1q de 42 caracteres es una salida P2WPKH, el formato SegWit nativo para una sola clave. Una dirección bc1q de 62 caracteres también es SegWit nativo, pero paga a un script en lugar de a una clave.

¿Cuánto ahorra realmente SegWit nativo?

Aproximadamente la mitad del costo de gastar. Una entrada P2WPKH pesa 272 unidades de peso, es decir, 68 vbytes, frente a unos 148 vbytes de una entrada heredada. El ahorro llega al gastar, no al recibir.

Para seguir leyendo

Términos relacionados

Más en la sección Direcciones y claves

Leer esta página en inglés