Direcciones

Administraci贸n y mantenimiento de un nodo Cardano

Administraci贸n y mantenimiento de un nodo Cardano

Las siguientes tareas las llevaremos a cabo mediante las herramientas de CNTOOLS. Se trata de operaciones rutinarias relativamente sencillas que implican transacciones. Por lo tanto, requerir谩n del uso de claves de firma que, por precauci贸n, nunca deber铆an guardarse en el nodo. Existen dos modos de llevar a cabo este tipo de tareas.

  • Modo online: si disponemos de todas las claves en el nodo. Es la manera m谩s c贸moda de operar, aunque tambi茅n la m谩s arriesgada. Si realizamos operaciones en este modo, es importante conservar las claves en el nodo 煤nicamente el tiempo imprescindible para realizar la operaci贸n.
  • Modo h铆brido: La transacci贸n se prepara en el nodo, se pasa a un entorno fr铆o en el cual se encuentran las claves de firma y, una vez firmada, se lleva de vuelta al nodo para enviarla a la red.

En esta entrada, por simplicidad, nos referiremos al modo online y haremos referencia a las claves necesarias para cada operaci贸n. Dichas claves deber铆an conservarse en una unidad externa cifrada y ser copiadas temporalmente al nodo durante los minutos que dura la operaci贸n. A continuaci贸n deber谩n ser borradas con un programa de borrado seguro.

Rotaci贸n de claves

Hay ocasiones en las que un servidor es puesto en funcionamiento y posteriormente desatendido e incluso olvidado. Contrariamente a lo que se pudiera pensar, un servidor en estas condiciones puede mantenerse en funcionamiento durante mucho tiempo sin que nadie se ocupe de 茅l e, incluso, sin que sea f谩cil siquiera acceder a su ubicaci贸n para retirarlo de la circulaci贸n. Esto no resulta tan raro si pensamos en servidores virtuales o servicios en funcionamiento alojados en servidores m谩s grandes que est谩n suministrando otros servicios de manera simult谩nea. Esto explicar铆a por qu茅 el servidor f铆sico sigue recibiendo mantenimiento por parte de responsables que pueden llegar a ignorar durante a帽os la existencia de servicios 芦fantasma禄 ejecut谩ndose en sus m谩quinas.

Sin ir m谩s lejos, yo mismo me he encontrado con esta circunstancia al menos en dos ocasiones. En ambos casos se trataba de p谩ginas web profesionales que hab铆an sido puestas en funcionamiento en servidores compartidos por responsables que luego desaparecieron del mapa. Las p谩ginas pronto quedaron obsoletas sin que fuera posible acceder a ellas para desactivarlas o actualizarlas.

Pues bien. Para evitar que los nodos de Cardano puedan llegar a convertirse en nodos fantasma, degradando as铆 el funcionamiento de la red, los operadores tienen la obligaci贸n de renovar unas claves cada tres meses para que el nodo siga teniendo la capacidad de firmar bloques. A este proceso se le llama rotaci贸n.

Claves necesarias: cold.skey

ruta: $CNODE_HOME/priv/pool/<pool_name>/

Retiro de recompensas

Las recompensas obtenidas tras la firma de bloques se van depositando en una direcci贸n espec铆fica dentro de nuestra billetera. Estas recompensas son delegadas en el 芦pool禄 de manera autom谩tica, por lo que si no queremos disponer de ellas no es necesario realizar ninguna acci贸n. Sin embargo, estrictamente no forman parte de los fondos de la billetera propiamente dicha, as铆 que no nos servir铆an para cumplir con el 芦pledge禄, en caso de que quisi茅ramos aumentarlo. En cualquier caso, bien porque queramos elevar el 芦pledge禄, bien porque queramos transferirlas a otra direcci贸n, antes o despu茅s necesitaremos retirarlas.

Importante: Los gestores de billeteras tipo Daedalus o Yoroi incorporan una opci贸n para retirar las recompensas directamente. Esto est谩 muy bien si estamos delegando en cualquier 芦pool禄 que no sea el nuestro o siempre que se trate de una billetera diferente de la utilizada para crear el nodo. Sin embargo, si durante la creaci贸n del nodo decidimos incorporar una billetera externa generada con Yoroi o Daedalus es muy importante que no realicemos el retiro de las recompensas desde ninguno de estos programas externos, ya que en este caso se romper铆a la sincronizaci贸n entre el saldo real y el mostrado en la billetera. Una billetera de este tipo deber铆a utilizarse solamente como herramienta de monitorizaci贸n. Cualquier transacci贸n deber谩 realizarse directamente con las herramientas de cliente del nodo.

Claves necesarias: payment.skey, stake.skey

ruta: $CNODE_HOME/priv/wallet/<wallet_name>/

Listado de claves

A modo de chuleta, aqu铆 dejo una tabla con el listado de claves del nodo y donde podemos encontrar cada una de ellas.

Para el pool

Clave hot node cold node
cold.skey X
cold.vkey X X
hot.vkey X X
hot.skey X X
vrf.vkey X X
vrf.skey X X

Para la billetera

Clave hot node cold node
base.addr X X
reward.addr X X
payment.addr X X
payment.vkey X X
payment.skey X
stake.vkey X X
stake.skey X
stake.cert X
delegation.cert X
Publicado por David en Cardano, 0 comentarios

Tipos de direcciones en Cardano

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.

Publicado por David en Cardano, 0 comentarios