Aspectos Técnicos de Bitcoin

¿Qué Es Pay To Public Key Hash? [P2PKH]

Qué Es Pay To Public Key Hash

Pay To Public Key Hash o Pagar a Hash de Clave Pública (P2PKH) es un tipo de ScriptPubKey que bloque los bitcoins a un hash de clave pública.

En este tipo de transacciones, la clave pública es utilizada para desbloquear la salida que sirve como entrada de otra transacción. Se trata del algoritmo más popular actualmente en la cadena de bloques de Bitcoin.

P2PKH es similar a las transacciones P2PK, con la diferencia de que los bitcoins están bloqueados con el hash de la clave pública en lugar de la clave publica en sí.

Por ejemplo, si queremos enviar 1 BTC a nuestro amigo utilizando P2PKH, nuestro amigo nos deberá proveer la clave pública de su monedero que será pasada por una función hash e incluida en la transacción.

Luego de que nosotros hayamos creado la transacción y se la hayamos enviado, él podrá gastar sus BTC firmando la misma con su clave privada correspondiente a la clave pública cuyo hash es igual al provisto en la transacción que nosotros creamos.

¿Cómo funciona P2PKH?

Como vimos antes, P2PKH es similar a P2PK en eso de que ambos tipos de transacción necesitan que el destinatario demuestre ser el dueño de la clave pública en función de poder hacer uso de los fondos.

La principal diferencia es que mientras en P2PK se envía directamente a la dirección pública, en P2PKH la transacción es enviada al hash que se obtiene de la clave pública del destinatario, lo que conocemos como dirección..

El objetivo de esto es que P2PKH está diseñada para otorgar una mayor seguridad y conveniencia a la hora de enviar y recibir fondos en una cadena de bloques. Esto se debe principalmente a dos grandes ventajas: el hash de la clave pública y la detección de errores.

El Hash de la clave pública

El obtener el hash en las transacciones P2PKH aseguran que la clave pública no sea visible a otros usuarios antes de que esos fondos sean gastados.

Esto se consigue gracias a que se genera una capa adicional de encriptación entre la clave privada y la red pública, lo que proporciona un nivel más de seguridad para el usuario.

Una persona que quisiera descubrir ahora la clave privada primero debería descubrir a que clave pública pertenece ese hash, para luego hacer lo mismo con la clave privada.

Otra ventaja tiene que ver con se utiliza el hash en lugar de la clave pública completa, lo cual es más amistoso con el usuario.

El hash es también una cadena alfanumérica como la clave pública, pero es más corta. Esto permite que sea más fácil de gestionar que la última.

Detección de errores

En función de poder crear una transacción P2PKH, la persona que recibirá los fondos deberá compartir su clave pública, en formato de dirección de Bitcoin, con el emisor.

La dirección se trata del hash de la clave pública que permite obtener un formato que sea fácil de compartir y que haga posible detectar errores. También sirve para integrar algo de información a la misma en el principio del hash que indica a que red pertenece.

La detección de errores se consigue a través de lo que se conoce como checksum (también llamado a veces hash sum) que ayuda al software del monedero a detectar si hemos ingresado un hash incorrecto que derive en la perdida de los fondos para siempre.

Vimos que se utiliza la dirección. en lugar de la clave pública propiamente dicha. Este proceso de conversión requiere de varios pasos:

  1. La clave pública es hasheada dos veces, una utilizando un algoritmo SHA-256 y la segunda utilizando otro algoritmo llamado RIPEMD-160. Esto produce el hash que será usado para crear la transacción P2PKH.
  2. Lo siguiente es agregar la versión en bytes (normalmente 0x00) al comienzo del hash de la clave pública. Esa nueva cadena de caracteres es hasheada de nuevo con SHA-256.
  3. Los primeros 4 bytes (32 bits) el del hash resultante son agregados al final del último hash obtenido en el paso anterior.
  4. Finalmente, la cadena completa es convertida de bytes a texto empleando una codificación de base58. El resultado final es lo que conocemos como dirección.

Si un software reconoce que la dirección es inválida, entonces no creara la transacción con el hash de la clave pública. Eso sí, existe una pequeña posibilidad de que el software no logre detectar una dirección invalidad, pero es tan minúscula que vale la pena correr el riesgo. La probabilidad es 1 en 4,29 mil millones.

Así, usando la clave pública hasheada como dirección en lugar de la clave pública en sí, podemos detectar errores muy fácilmente.

Esto hace que sea conveniente crear una transacción de este tipo en lugar de usar la clave pública completa.

Ejemplo de un pago P2PKH

Supongamos que nuestro amigo quiere que le paguemos parte de la cena con BTC utilizando una transacción P2PKH.

Antes de que la transacción comience, nuestro amigo deberá generar un par de claves públicas y privadas. Luego convertir la clave pública en un hash, que luego es convertido en la dirección.

Nuestro amigo nos envía la dirección, así podemos comenzar el proceso de pago generando la nueva transacción.

Una vez publicada y confirmada, cualquiera que pueda proveer una firma digital con la clave privada que hace juego con la clave pública, y, por tanto, la dirección, puede hacer uso de los fondos

Por eso, siempre que nuestro amigo mantenga la clave privada segura, entonces será el único que pueda recibir y gastar esos BTC.

Durante todo el proceso, interactuamos con nuestro amigo usando el hash de la clave pública y la dirección. Como tal, no tenemos que utilizar nunca la clave pública.

Como ya sabemos ahora, esto provee una capa extra de seguridad entre la clave privada y la información que es de público conocimiento.

P2PK vs P2PKH

Notamos que P2PKH es una forma muy útil de enviar y recibir dinero en el protocolo de Bitcoin.

Existen nuevos tipos de pagos que soportan Bitcoin Script, y esto han ganado cierta popularidad. Pero P2PKH sigue siendo muy importante para un gran número de transacciones.

Esto le ha quitado el protagonismo a P2PK por una serie de diferencias muy importantes.

1. Seguridad

P2PKH fue introducido junto con P2PK como uno de los tipos de transacciones originales, pero a día de hoy es más común P2PKH que P2PK.

Aquellos usuarios que utilicen un monedero con formato P2PKH no tienen que estar tan preocupados si el día de mañana los ordenadores cuánticos se hacen algo común. Sin embargo, las transacciones P2PK sin son vulnerables a estos.

2. Simplicidad

Si comparamos el formato de clave pública de P2PK, las direcciones P2PKH son mucho más cortas. La ventaja de esto es que hace más fácil su manejo y uso.

Como vimos antes en el artículo, esto también permite utilizar el checksum, lo cual disminuye enormemente las posibilidades de enviar fondos a una dirección incorrecta.

3. Complejidad

Debido a los pasos extras necesarios para crear la transacción, los desarrolladores consideran que P2PKH es más difícil de programar que simplemente crear una transacción P2PK.

Diferencia entre P2PKH y P2PK

El problema de la falta de compatibilidad con SegWit

Los Bitcoin scripts como Pay To Script Hash y Bench32 fueron introducidos posteriormente a P2PKH. Esto hace que P2PKH carezca de la compatibilidad con SegWit, algo que los scripts antes mencionados si tienen.

Si bien esto no era un gran problema cuando SegWit fue lanzado, debido a su poca adopción, es cierto que ahora este protocolo está obteniendo cada vez más importancia y popularidad.

Mientras que P2PKH seguirá siendo utilizado para las transacciones que no son SegWit, su uso general seguirá decreciendo a medida que más monederos y exchanges utilizan esta mejora.

¿Se utiliza actualmente P2PKH?

El 22 de mayo de 2010, Laszlo Hanyecz uso P2PKH para pagarle a alguien 10.000 BTC por dos pizzas enviadas directamente a su casa.

Este evento de Bitcoin popularizo el famoso Bitcoin Pizza Day, que ahora es celebrado anualmente en la comunidad de criptomonedas todos los años.

P2PKH es todavía un tipo de transacción muy importante en el ecosistema de Bitcoin 11 años después. Si bien otros tipos de transacciones son mejores para aquellas transacciones multi firma, P2PKH es una opción altamente segura entre los usuarios de Bitcoin.

La forma más fácil de identificar este tipo de transacciones es utilizando un explorador de blockchain, ya que aquellas que comiencen con el número 1 son P2PK o P2PKH.

Es probable que encuentres muchas transacciones en cualquier momento mirando una de estas herramientas.

Según algunas estadísticas, más de 9 millones de BTC (47% del suministro total que existe) actualmente utilizan P2PKH. Mientras que el número total de UTXO (¿qué son?) que emplean P2PKH es de más de 52 millones.

Acerca del autor

Criptotario

Me llamo Martin, soy ingeniero y apasionado de las inversiones y la tecnología. Me gusta mucho leer libros y todo aquello que me haga mejorar día a día.

Agrega un Comentario

Haz clic aquí para añadir un comentario