Explicado de una manera muy sencilla, una direcci贸n en Cardano es b谩sicamente un n煤mero que puede contener fondos. En este sentido, podr铆amos verlo como el n煤mero de cuenta bancaria en la cual mantenemos nuestro dinero. Los fondos pueden transferirse entonces de unas direcciones a otras mediante unas operaciones llamadas transacciones (el equivalente a una transferencia bancaria)
La cadena de bloques ser铆a la base de datos en la cual quedan registradas de manera inalterable todas las transacciones en que las distintas direcciones se ven implicadas. De esta manera, consultando la cadena de bloques es posible conocer el saldo de cualquier direcci贸n, as铆 como todo el hist贸rico de transferencias
En Cardano existen b谩sicamente dos tipos de direcci贸nes, a las que nos referiremos como direcciones de pago (payment) y de stake.
Cada uno de este tipo de direcci贸n est谩 asociada a un par de claves, una p煤blica y otra privada. A la direcci贸n p煤blica la llamamos de verificaci贸n y a la privada de firma.
La clave de verificaci贸n, abreviadamente vkey (que es p煤blica), es la que permite que cualquiera pueda verificar su existencia y su saldo en la cadena de bloques. La clave de firma, abreviada como skey (que es privada) servir谩 para firmar las transacciones que permiten transferir fondos de una direcci贸n a otra.
Generaci贸n de claves y direcciones
El proceso de generaci贸n de cualquiera de las claves es muy similar: Primero se solicita a la herramienta cardano-cli la creaci贸n del par de claves, vkey y skey, y, a partir de la primera, se genera la clave en cuesti贸n.
Generaci贸n de las claves y la direcci贸n de payment:
cardano-cli address key-gen \
--verification-key-file payment.vkey \
--signing-key-file payment.skey
A partir de la clave de verificaci贸n generamos la direcci贸n:
cardano-cli address build \
--payment-verification-key-file payment.vkey \
--out-file payment.addr \
--testnet-magic $MAGIC_NUM
Generaci贸n de las claves y la direcci贸n de stake:
cardano-cli stake-address key-gen \
--verification-key-file stake.vkey \
--signing-key-file stake.skey
A partir de la clave de verificaci贸n generamos la direcci贸n::
cardano-cli stake-address key-gen \
--verification-key-file stake.vkey \
--testnet-magic $MAGIC_NUM
Un par de observaciones:
- Las claves son generadas con independencia de la red en la cual vayan a ser utilizadas. Sin embargo, para generar la direcci贸n, es necesario especificar a qu茅 red va a pertenecer (testnet o mainnet)
- Aunque cada direcci贸n lleva asociadas dos claves, una p煤blica y otra privada, la generaci贸n de la direcci贸n se realiza utilizando 煤nicamente la clave p煤blica.
Diferencias entre claves de payment y de stake
- La clave de payment es una clave que sirve, b谩sicamente, para almacenar, recibir y transferir fondos.
- La clave de stake sirve para tomar el control en la participaci贸n en el protocolo. Permite delegar fondos en los diferentes Stake Pools y tambi茅n es donde se reciben las recompensas por ello. Ser谩 necesaria, tambi茅n, si queremos crear nuestro propio Stake Pool. No es posible, sin embargo, transferir fondos a una direcci贸n de Stake, aunque s铆 lo es transferir las recompensas recibidas hacia otras direcciones, evidentemente.
Es importante se帽alar que una clave de payment generada como hemos visto, aunque perfectamente funcional, no permite la delegaci贸n de fondos en un stake pool. Para que esta delegaci贸n sea posible, ser谩 necesario que la direcci贸n de payment se encuentre vinculada a una direcci贸n de stake, la cual, a su vez, ser谩 la que nos permitir谩 realizar la delegaci贸n. Este procedimiento ser谩 el que estudiaremos en detalle en las pr贸ximas entradas.