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.