¿Qué es una P2PK?
El script de bloqueo P2PK o Pay To Public Key, es el script de bloqueo más antiguo y primitivo de Bitcoin, desarrollado directamente por Satoshi Nakamoto en su primera versión de Bitcoin. Nos permite realizar pagos de bitcoins usando la versión extendida de una clave pública en lugar de un hash de la misma como sucede en la actualidad con el script estándar P2PKH (Pay to Public Key Hash).
Gracias a esto, P2PK es una versión mucho más simple de P2PKH y fue usado por Nakamoto en sus operaciones de minería inicial al crear la transacción coinbase de sus bloques. Pero también usó este script en sus primeras transacciones como la que realizó a Hal Finney.
¿Cómo funciona una P2PK?
El funcionamiento de una P2PK sigue el mismo esquema básico de las transacciones de Bitcoin, de hecho, P2PK es el origen de dicho esquema, solo que de una forma aún más simple. Cuando queremos realizar una transacción en Bitcoin necesitamos tener en nuestro poder únicamente la clave privada. Como ya explicamos en ¿Cómo se genera 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 usualmente comienza con “1”, “3” o “bc1”) no se hace la última parte, es decir, no está codificada. De esta forma la dirección queda como la clave pública completa, la cual tendría una forma parecida a esta:
0496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947
be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858ee
La anterior clave pública de Bitcoin corresponde a una de las direcciones de Satoshi Nakamoto, específicamente, la dirección a la que se envió la segunda coinbase de Bitcoin.
Así, por ejemplo, para enviar una transacción a esa dirección usando una P2PK no usamos una dirección de Bitcoin como la que conocemos en la actualidad. En su lugar, bastaría con tomar toda la clave pública, la colocamos en el monedero y la enviamos. El resultado al final es el mismo, cuando la transacción quede confirmada el dueño de esa clave pública tendrá los bitcoins que le enviamos en su poder y podrá usarlos sin problemas.
Explicando el proceso de funcionamiento de una P2PK
La diferencia en el proceso de envío entre P2PK y P2PKH es la forma en como los scripts de bloqueo funcionan, y explicamos este detalle a continuación:
En primer lugar, en una P2PK no hace falta codificar la clave pública. En su lugar, solo necesitamos copiar dicha clave completa, colocarla en el script de Bitcoin y ya podremos enviar la transacción. El script P2PK para enviar (o bloquear bitcoins) tiene la siguiente forma:
Script de Bloqueo (scritpPubKey): < Clave pública a enviar > OP_CHECKSIG
Esto significa que para desbloquear dichos bitcoins y poder usarlos tendríamos que proporcionar una firma digital válida para la clave pública que hemos dado, tal como lo podemos ver en el scriptSig que tendría la siguiente forma:
Script de Desbloqueo (scriptSig): < SIGNATURE >(Firma digital válida)
Sin embargo, en una P2PKH esto cambia ligeramente, y el script de bloqueo se escribe de la siguiente forma:
Script de Bloqueo (scritpPubKey): OP_DUP OP_HASH160 < Hash de Clave Pública > OP_EQUALVERIFY OP_CHECKSIG
Y su desbloqueo se realiza por medio de:
Script de Desbloqueo (scriptSig): < SIGNATURE > < Clave Pública >
Esto significa que debemos proveer de una clave pública, duplicarla, realizar un hash de la misma, verificar que el hash de la clave pública entregada y verificar las firmas digitales para que podamos usar los bitcoins en dicha dirección.
Como puedes ver, P2PK es una opción mucho más simple y computacionalmente menos costosa. Sin embargo, P2PK es un script de bloqueo poco usado en el mundo Bitcoin en la actualidad, y a continuación explicaremos el por qué.