Saltar al contenido
buybitcoinsmart

Glosario / Direcciones y claves

Dirección P2PKH

También se conoce como Pay-to-Public-Key-Hash o Salida P2PKH.

¿Qué es la dirección P2PKH?
P2PKH es el tipo de salida que bloquea las monedas en un hash de 20 bytes de una clave pública, de modo que la propia clave permanece oculta hasta el momento de gastarlas.

Pay to public key hash es el patrón de script que hay detrás de toda dirección que empieza por 1. Su script de bloqueo mide exactamente 25 bytes y ejecuta cinco operaciones cuando se mueven las monedas. Como la salida fija una huella digital y no la clave, un UTXO P2PKH no le dice a un observador nada sobre la clave pública que hay detrás.

Cómo funciona

Una salida P2PKH lleva un solo script de bloqueo, siempre con la misma forma: OP_DUP OP_HASH160 <20-byte hash> OP_EQUALVERIFY OP_CHECKSIG. Ese hash de 20 bytes es HASH160, es decir, RIPEMD-160 aplicado al SHA-256 de la clave pública comprimida, y así es como una clave de 33 bytes se convierte en un compromiso de 20 bytes.

El gasto aporta dos elementos en el campo scriptSig de la entrada: una firma y, después, la clave pública. La ejecución avanza en orden. OP_DUP copia la clave, OP_HASH160 reduce la copia a 20 bytes, OP_EQUALVERIFY la compara con el valor fijado y aborta si no coinciden, y OP_CHECKSIG verifica la firma con respecto a la transacción. Las dos comprobaciones tienen que superarse; que falle cualquiera de ellas invalida la transacción entera, no solo esa entrada.

Los tamaños se desprenden de la estructura. Una salida P2PKH cuesta 34 bytes on-chain, formados por un monto de 8 bytes, una longitud de 1 byte y el script de 25 bytes. Una entrada cuesta aproximadamente 148 vbytes, porque una firma ECDSA codificada en DER ocupa de 71 a 72 bytes, la clave comprimida añade 33 más, y todo ello queda fuera del testigo, donde cada byte pesa cuatro veces.

Dónde aparece

Toda dirección que empieza por 1 es una dirección P2PKH, lo que abarca la mayoría de las monedas que se movieron antes de que SegWit se activara en el bloque 481.824, en agosto de 2017. Los exploradores de bloques indican el tipo en cada salida, así que usted puede comprobar qué está mirando sin decodificar nada.

El detalle que vale la pena retener es cuándo su clave pública se vuelve pública. Hasta que usted gasta, la cadena solo guarda el hash. El primer gasto publica la clave en el scriptSig, de forma permanente. Si después reutiliza esa dirección, cualquier saldo posterior queda detrás de una clave que ya es visible para todos, lo que elimina una capa de protección que no le costaba nada. Eso es un problema de privacidad desde el primer momento, y es la razón por la que el largo debate sobre futuros ataques a la criptografía de curva elíptica se centra en las direcciones reutilizadas y ya gastadas, y no en las nuevas.

En la práctica: deje que su billetera le dé una dirección de recepción nueva para cada pago, y que el cambio vaya también a una dirección nueva. El software moderno hace ambas cosas de forma predeterminada.

Dirección P2PKH frente a P2WPKH

P2PKH y P2WPKH fijan lo mismo y cuestan muy distinto. Ambos bloquean las monedas en un HASH160 de 20 bytes de una sola clave pública comprimida, y ambos se desbloquean con una firma de esa clave. Lo que los separa es dónde se escriben los datos de desbloqueo. P2PKH guarda la firma y la clave en el scriptSig, que cuenta cuatro unidades de peso por byte; P2WPKH las traslada al testigo, que cuenta una. Por eso el mismo secreto puede producir una dirección que empieza por 1 y una dirección bc1q que no se parecen en nada, guardan monedas de forma independiente y difieren en más de un factor de dos en lo que cuesta vaciarlas.

No confundir con

Preguntas frecuentes

¿Es una dirección P2PKH lo mismo que una dirección heredada (legacy)?

En la práctica sí, con un matiz. Toda dirección P2PKH empieza por 1 y es una dirección heredada, pero a menudo se extiende la palabra legacy para abarcar también las cadenas Base58 que empiezan por 3, que son P2SH y no P2PKH.

¿Cuándo se vuelve visible mi clave pública en la cadena?

La primera vez que usted gasta desde la dirección. Hasta entonces la cadena solo guarda un hash de 20 bytes. Tras ese gasto la clave es pública para siempre, y esa es una de las razones por las que las billeteras le dan una dirección nueva para cada pago.

Para seguir leyendo

Términos relacionados

Más en la sección Direcciones y claves

Leer esta página en inglés