Las direcciones P2PKH son el tipo de direcciones más comunes dentro de Bitcoin, y son las que usualmente utilizamos para realizar transacciones en dicha criptomonedas. Conoce cuáles son sus características y su funcionamiento.
Aunque existen nuevos scripts en Bitcoin que han ido ganando popularidad, la forma más común de la red de efectuar transacciones es a través de los scripts Pay to Public Key Hash, o mejor conocido como P2PKH. En un principio la red empleaba el script Pay to Public Key (P2PK), pero debido a la vulnerabilidad de sufrir un ataque futuro mediante computadoras cuánticas, se cambió a P2PKH para mayor seguridad y protección de la red. Y desde entonces, este script juega un papel muy importante en la mayoría de las transacciones efectuadas en Bitcoin.
La verdad es que tanto P2PK y P2PKH se parecen mucho. Pues tanto en P2PK como en P2PKH, los usuarios deben demostrar un complejo mecanismo criptográfico. Este mecanismo se basa en demostrar que son los verdaderos propietarios de la clave pública para recibir los pagos y de la clave privada para gastar el pago que reciben. Pero la principal diferencia entre P2PK y P2PKH, es que este último permite que al momento de recibir una transacción el usuario no tenga que proporcionar su clave pública completa al scriptPubKey. Una situación que si ocurría dentro de los scripts P2PK. Que enviaba de forma directa la clave pública del receptor de la transacción.
Este sencillo cambio mejoraba enormemente la seguridad de Bitcoin frente a posibles ataques que podrían llevarse a cabo con computadores cuánticos. Pero al mismo tiempo, también mejoraba la privacidad de la transacciones, además de reducir el tamaño de cada transacción, algo genial para la escalabilidad de Bitcoin. Esto es debido al hecho de proporcionar solo un hash de 20 bytes de longitud en lugar de la clave pública completa. Una situación que evitaba que ésta pudiera ser conocida o revelada, incrementando la seguridad general de la red.
Pero seguramente te preguntarás: ¿Cómo hace posible P2PKH todo esto? ¿Qué mecanismos permiten su funcionamiento? Pues bien todo esto lo examinaremos a continuación.
¿Cómo funciona un script P2PKH?
El funcionamiento de un script P2PKH empieza en el momento, en el que el receptor y emisor se preparan para realizar una transacción. En ese momento, el receptor debe crear un par de claves públicas y privadas. Una vez cree dichas claves, el receptor compartirá su clave pública con el emisor de la transacción. En el proceso de codificación de estas claves, el receptor crea un hash de la clave pública que transmitirá al remitente de forma segura para que efectúe la transacción. Ese hash es nuestra dirección de criptomonedas o de Bitcoin. Si deseas saber un poco sobre este proceso de generación puedes leer nuestro artículo de ¿Cómo se crea una dirección de Bitcoin?
Ahora bien, en el momento en el que el emisor tiene la dirección de Bitcoin, este comienza con el proceso de crear la transacción. Este proceso lleva a la utilización de Bitcoin Script, para generar un sub-script especial que formará parte del P2PKH. Este sub-script lleva el nombre de scriptSig y su función es verificar que el emisor realmente tiene la propiedad de las criptomonedas que va a gastar. Para ello, toma la clave pública con la que el emisor recibió las criptomonedas en su momento y verifica que tenga la clave privada que le habilite para el gasto. Al verificarse este paso, el emisor puede entonces seguir con el proceso de generación del script P2PKH.
La segunda parte del proceso genera el sub-script scripPubKey. Esta parte del script entrega la potestad de las criptomonedas enviadas al hash de clave pública que ha recibido el emisor. Al unir el scriptSig y el scriptPubKey tenemos como resultado un P2PKH completo, cuyo función se puede resumir de la siguiente forma:
Un emisor solo puede gastar bitcoins que ha recibido en una dirección pública de su propiedad. Pero para gastarlos, debe probar que esa dirección realmente es suya. Así que debe proporcionar la clave pública y la clave privada correcta para desbloquear el gasto.
Confirmado este punto, el emisor envía a otra dirección una determinada cantidad de monedas que dejan de ser de su propiedad para pasar a ser propiedad de otro usuario, que solo podrá gastar esas monedas siguiendo el mismo proceso.
Ejemplo de un P2PKH
Veamos un ejemplo para tener una explicación más detallada de cómo ocurre todo este proceso en Bitcoin. Si María quiere enviar una transacción estándar en formato P2PKH a Pedro, entonces Pedro debe iniciar el proceso creando el conjunto de clave privada y clave pública donde desea recibir la transacción.
En el sistema Bitcoin, este conjunto de claves es creado de forma segura utilizando el algoritmo de firma digital de curva elíptica (ECDSA) con la curva secp256k1. Luego la clave pública generada es transformada usando las funciones SHA-256 y RIPEMD-160.
En este punto, Pedro envía a María la dirección, que entonces comienza con el proceso de generación de la transacción y del script P2PKH. María introduce los datos de la transacción en su monedero, que luego traducirá estos datos en un script P2PKH. Y desde el momento en que María presiona “Enviar” comienza el proceso. La transacción se envía a la red, donde los mineros la tomaran e incluirán en un bloque. Al finalizar la generación de este bloque, los nodos de la red comenzarán a realizar las acciones individuales de cada una de estas transacciones.
Es en ese momento, donde el pago de María a Pedro se hace una realidad. Esto pues, los nodos ejecutarán el script P2PKH pasando la propiedad de las monedas que María ha enviado a Pedro, haciendo que Pedro tomé propiedad absoluta de dichas monedas. En caso, de que la operación genere un cambio, este cambio se envía a María quien mantendrá la propiedad sobre el mismo. El resto de monedas que no forman parte del envío de monedas a Pedro ni del cambio de María, son las comisiones que los mineros tomaron por su trabajo.
Implementación de P2PKH
El script P2PKH está presente de forma predeterminada en las wallets o monederos que implementan el cliente de Bitcoin desde prácticamente el comienzo del sistema. Así, sólo unos días después del lanzamiento de Bitcoin y de haber minado los primeros bloques de la red, el 16 de enero de 2009 se comenzó a implementar el formato P2PKH en las transacciones de Bitcoin. Por lo que este script se encuentra en la mayoría de los bloques minados que están dentro de la blockchain.
Su creación se debe principalmente a dos razones:
- Satoshi Nakamoto quería que existiera una forma más simple y fácil en la que dos usuarios pudieran compartir sus claves públicas para realizar transacciones. Así, para convertir la clave pública en una expresión más corta y fácil de usar, se aplicó una función hash que convierte a esta clave en un conjunto aleatorio de caracteres alfanuméricos mucho más manejable y utilizable. Que se emplea como una dirección que se puede compartir con cualquier usuario de forma fácil y confiable.
- Como ECDSA es vulnerable al algoritmo Shor modificado. Este algoritmo puede deducir la clave privada a partir de la clave pública mediante una computadora cuántica. Sin embargo, la implementación de P2PKH previene este ataque. Al impedir que la clave pública completa pueda ser revelada a otro usuario al momento de efectuar una transacción. Creando una capa de seguridad adicional sobre la clave privada y la red pública, proporcionando un nivel superior de protección. Aunque esto es algo lejano puesto que la potencia cuántica necesaria para ejecutar un ataque exitoso de este tipo se ubica cerca de los 1500 qubits.
Ventajas y desventajas de la implementación de P2PKH
Ventajas
Una de las mayores ventajas de implementar el script P2PKH, y que lo hacen muy confiable al momento de efectuar transacciones, se debe a que reduce la posibilidad de sufrir ataques o amenazas derivados de las computadoras cuánticas. Qué podrían llegar a deducir las claves privadas de un usuario mediante la clave pública que haya proporcionado para recibir una transacción. Y es que gracias a P2PKH, las claves públicas nunca se revelan o envían. Pues en lugar de enviar la clave pública completa solo se usa un hash de la misma.
Otra gran ventaja que ofrece este script es la simplicidad y facilidad de uso. Ya que las direcciones que implementan P2PKH son mucho más cortas y manejables. Lo que a su vez también reduce la posibilidad de cometer errores en comparación con las direcciones P2PK.
Desventajas
Aunque las direcciones P2PKH son mucho más fáciles al momento de utilizar, el proceso de creación de estas direcciones es mucho más complejo y difícil que con los scripts P2PK. Por lo que requieren que la aplicación de muchos pasos o procesos adicionales a nivel de programación para formar transacciones P2PKH. No obstante esto es algo transparente para los usuarios, y para los dispositivos actuales esto no genera ningún efecto negativo de rendimiento.
Así mismo, como este script fue lanzado e implementado mucho antes de SegWit, las direcciones heredadas no son compatibles con las wallets o monederos que implementan este formato, como si lo hace el script P2SH. Aunque si es posible enviar una transacción desde una dirección P2PKH a una dirección SegWit. Sin embargo, las comisiones de estas transacciones pueden ser elevadas en general. Por lo que, aunque la implementación de las transacciones P2PKH juegan un papel importante en la red Bitcoin, su uso puede verse afectado y disminuido si los usuarios comienzan a adoptar en mayor medida a SegWit.