¿Qué es una P2PK?

El script de bloqueo P2PK es el modelo inicial de script que utilizaba Bitcoin para mandar y percibir criptomonedas en su primer instante. Un modelo de script simple y muy elegante que nos dejaba explorar el poder de Bitcoin y que nos abriría las puertas a esta interesante tecnología. 

El script de bloqueo P2PK o bien Pay To Public Key, es el script de bloqueo más viejo y primitivo de Bitcoin, desarrollado de forma directa por Satoshi Nakamoto en su primera versión de Bitcoin. Nos deja efectuar pagos de bitcoins utilizando la versión extendida de una clave pública en vez de un hash de exactamente la misma como sucede hoy día con el script estándar P2PKH (Pay to Public Key Hash).

Gracias a esto, P2PK es una versión considerablemente más simple de P2PKH y fue utilizado por Nakamoto en sus operaciones de minería inicial al crear la transacción coinbase de sus bloques. Mas asimismo utilizó este script en sus primeras transacciones como la que efectuó a Hal Finney.

¿De qué forma marcha una P2PK?

El funcionamiento de una P2PK prosigue exactamente el mismo esquema básico de las transacciones de Bitcoin, en verdad, P2PK es el origen de tal esquema, solo que de una manera todavía más simple. Cuando deseamos efectuar una transacción en Bitcoin precisamos tener en nuestro poder solamente la clave privada. Como ya explicamos en ¿De qué forma se produce una dirección Bitcoin?, de la clave privada sale matemáticamente la clave pública y de la clave pública se codifica para sacar la dirección Bitcoin.

En P2PK, esa dirección de Bitcoin (que generalmente empieza con “1”, “3” o bien “bc1”) no se hace la última parte, o sea, no está codificada. De este modo la dirección queda como la clave pública completa, la que tendría una forma similar a esta:

0496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947

be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858ee

La precedente clave pública de Bitcoin corresponde a una de las direcciones de Satoshi Nakamoto, particularmente, la dirección a la que se mandó la segunda coinbase de Bitcoin.

Así, por poner un ejemplo, para mandar una transacción a esa dirección utilizando una P2PK no utilizamos una dirección de Bitcoin como la que conocemos en nuestros días. En su sitio, bastaría con tomar toda la clave pública, la ponemos en el monedero y la mandamos. El resultado al final es exactamente el mismo, cuando la transacción quede confirmada el dueño de esa clave pública va a tener los bitcoins que le mandamos en su poder y va a poder utilizarlos sin inconvenientes.

P2PK vs P2PKH

Explicando el proceso de funcionamiento de una P2PK

La diferencia en el proceso de envío entre P2PK y P2PKH es la manera en como los scripts de bloqueo marchan, y explicamos este detalle a continuación:

En primer sitio, en una P2PK no hace falta codificar la clave pública. En su sitio, solo precisamos copiar dicha clave completa, ponerla en el script de Bitcoin y ya vamos a poder mandar la transacción. El script P2PK para mandar (o bien bloquear bitcoins) tiene la próxima forma:

Script de Bloqueo (scritpPubKey): < Clave pública a mandar > OP_CHECKSIG

Esto quiere decir que para desbloquear dichos bitcoins y poder emplearlos deberíamos administrar una firma digital válida para la clave pública que hemos dado, tal y como lo podemos ver en el scriptSig que tendría la próxima forma:

Script de Desbloqueo (scriptSig): < SIGNATURE >(Firma digital válida)

Sin embargo, en una P2PKH esto cambia levemente, y el script de bloqueo se escribe de la próxima forma:

Script de Bloqueo (scritpPubKey): OP_DUP OP_HASH160 < Hash de Clave Pública > OP_EQUALVERIFY OP_CHECKSIG

Y su desbloqueo se efectúa por medio de:

Script de Desbloqueo (scriptSig): < SIGNATURE > < Clave Pública >

Esto quiere decir que debemos proveer de una clave pública, duplicarla, efectuar un hash de exactamente la misma, contrastar que el hash de la clave pública entregada y contrastar las firmas digitales a fin de que podamos utilizar los bitcoins en tal dirección.

Como puedes ver, P2PK es una alternativa considerablemente más simple y computacionalmente menos costosa. No obstante, P2PK es un script de bloqueo poco utilizado en el planeta Bitcoin actualmente, y ahora vamos a explicar el motivo.

¿Cuánto sabes, criptonauta?

¿La razón por la cual se dejaron de utilizar las P2PK a favor de P2PKH fue por seguridad en Bitcoin?

Pros y contras de las de P2PK

Entre los pros de P2PK se puede destacar que:

  1. Es un script considerablemente más fácil y computacionalmente menos costoso que P2PKH.
  2. Es extensamente compatible, todas y cada una de las versiones de Bitcoin Core tienen soporte para este script, puesto que es la base del funcionamiento del mismo desde sus comienzos.

Sin embargo, en contra suya podemos mentar ciertos peligros, ciertos identificados por el propio Satoshi Nakamoto en un análisis efectuado, lo que ha hecho que prácticamente ya no se use P2PK:

  1. El peligro de que la criptografía de curva elíptica pueda ser vulnerada totalmente merced a la ejecución triunfante de un algoritmo de Shor cambiado para solucionar el inconveniente del logaritmo reservado en las curvas elípticas. Esta es una situación en la que desplegar clave públicas como lo hace P2PK, haría frágil dichas direcciones. Para eludir esto, Nakamoto decidió utilizar un hash de la clave pública por un proceso que añade una capa de seguridad auxiliar a este proceso, solventando este inconveniente. En verdad, en la versión inicial de Bitcoin era de manera perfecta usable los dos métodos el P2PK y P2PKH.
  2. La extensión más corta de las P2PKH fue otro factor en pro de desamparar P2PK, no solo por extensión, sino más bien asimismo para ahorrar bytes en las transacciones y prosperar la escalabilidad de Bitcoin.
  3. Son menos “humanas”. O sea, las claves públicas tienen una extensión de ciento treinta caracteres en vez de las frecuentes direcciones de Bitcoin y sus treinta y cuatro caracteres. Esto causa que las P2PK precisan de mayor cuidado al contrastar que las direcciones son adecuadas, pues de lo contrario se podrían perder los fondos de forma irreversible. Es simple ver que una dirección comienza por 1 y saber que es una dirección de Bitcoin, o bien revisar los últimos caracteres para saber si la dirección no ha alterado merced al checksum.

bitcoin
Bitcoin (BTC) $ 61,091.00
ethereum
Ethereum (ETH) $ 4,081.67
binance-coin
Binance Coin (BNB) $ 477.75
tether
Tether (USDT) $ 1.00
cardano
Cardano (ADA) $ 2.12
solana
Solana (SOL) $ 201.33
xrp
XRP (XRP) $ 1.08
polkadot
Polkadot (DOT) $ 42.43
dogecoin
Dogecoin (DOGE) $ 0.275940
usd-coin
USD Coin (USDC) $ 1.00