Keys y certificado del pool
Procedimiento para generar Cold y KES keys, y el certificado operacional del pool.
Este procedimiento solo se realiza para el nodo productor de bloques.
Es muy recomendado que toda operación que implique acceso a las cold keys, payment.addr o stake.addr se realicen en una maquina sin acceso a internet a fin de minimizar posibilidades de exponer info sensitiva de nuestro pool y/o fondos a terceros mal intencionados. Luego se copian los archivos firmados al BP o un relay online y desde ahí se les agrega a la blockchain.

Crear keys y direcciones del pool

Como primer paso creamos un directorio pool-keys para almacenar aquí nuestras llaves, tmp para los archivos temporales de transacciones y out para los archivos de transacción firmados listos para someter a la blockchain.
1
mkdir ~/cardano-node/pool-keys
2
mkdir ~/cardano-node/out
3
mkdir ~/cardano-node/tmp
4
5
cd ~/cardano-node/pool-keys
Copied!

KES keys (Key Evolving Signature)

Son las llaves "calientes", éstas deben ser rotadas cada 62 periodos KES, equivalente a 93 días.
1
cardano-cli node key-gen-KES \
2
--verification-key-file kes.vkey \
3
--signing-key-file kes.skey
Copied!

Cold keys y cold.counter.

Son las llaves frías, éstas son inmutables. El cold.counter ira evolucionando
1
cardano-cli node key-gen \
2
--cold-verification-key-file cold.vkey \
3
--cold-signing-key-file cold.skey \
4
--operational-certificate-issue-counter-file cold.counter
Copied!

Certificado Operacional

Primero debemos calcular el periodo KES actual, para esto necesitamos algunos datos. Primero consultamos el tip o slotNo
1
cardano-cli query tip --mainnet | jq .slotNo
Copied!
Para que este valor sea el correcto el nodo debe estar completamente sincronizado con la red.
Consultamos la cantidad de slots por periodo KES
1
cat ~/cardano-node/relay/shelley-genesis.json | jq .slotsPerKESPeriod
Copied!
Con estos dos valores podemos calcular el periodo KES actual
1
expr $(cardano-cli query tip --mainnet | jq .slotNo) \
2
/ $(cat ~/cardano-node/relay/shelley-genesis.json | jq .slotsPerKESPeriod)
Copied!
Con este dato podemos finalmente generar nuestro certificado
1
cardano-cli node issue-op-cert \
2
--kes-verification-key-file kes.vkey \
3
--cold-signing-key-file cold.skey \
4
--operational-certificate-issue-counter cold.counter \
5
--kes-period 36 \
6
--out-file node.cert
Copied!

VRF Keys

Generamos un nuevo par de llaves VRF
1
cardano-cli node key-gen-VRF \
2
--verification-key-file vrf.vkey \
3
--signing-key-file vrf.skey
Copied!

Restringir permisos a los keys

Para evitar que terceros puedan tener acceso a nuestros pool keys, solo permitimos el acceso de lectura a nuestro usuario. Este punto es necesario a partir de 1.21.2.
1
sudo chmod -R 400 ~/cardano-node/pool-keys/
Copied!

Iniciar en modo productor de bloques (BP)

Para esto debemos iniciar cardano-node indicándole la ubicación de los archivos necesarios para que el pool pueda firmar bloques:
    kes.skey
    vrf.skey
    node.cert
1
screen -dmS BLOCK bash -c 'cardano-node run \
2
--topology /home/ubuntu/cardano-node/block/topology.json \
3
--database-path /home/ubuntu/cardano-node/db/block \
4
--socket-path /home/ubuntu/cardano-node/db/block/node.socket \
5
--port 3000 \
6
--config /home/ubuntu/cardano-node/block/config.json \
7
--shelley-kes-key /home/ubuntu/cardano-node/pool-keys/kes.skey \
8
--shelley-vrf-key /home/ubuntu/cardano-node/pool-keys/vrf.skey \
9
--shelley-operational-certificate /home/ubuntu/cardano-node/pool-keys/node.cert; exec bash'
Copied!
A partir de este punto se recomienda utilizar el servicio cardano-block para iniciar nuestro BP.
Última actualización 8mo ago