Update KES Keys - solidsnakedev/cardano_commands GitHub Wiki

Block producer

Set cardano home

NODE_HOME=/node
POOL_KEYS=${NODE_HOME}/pool-keys
CONFIGURATION=${NODE_HOME}/configuration

Query slot number

slotNo=$(cardano-cli query tip --mainnet | jq -r '.slot')

Get Slots per KESPeriod from genesis

slotsPerKESPeriod=$(cat ${CONFIGURATION}/shelley-genesis.json | jq -r '.slotsPerKESPeriod')

Calculate KES Period

kesPeriod=$((${slotNo} / ${slotsPerKESPeriod}))
startKesPeriod=${kesPeriod}
echo startKesPeriod: ${startKesPeriod}

Generate KES Keys

cd $POOL_KEYS

cardano-cli node key-gen-KES \
 --verification-key-file kes.vkey \
 --signing-key-file kes.skey

Copy kes.vkey to Air Gapped Node

AIR GAPPED NODE

Set Poolkeys directory

POOL_KEYS=/home/amnesia/pool-keys

Copy cold keys to POOL_KEYS directory

Generate operational certificate (node cert)

cardano-cli node issue-op-cert \
--kes-verification-key-file $POOL_KEYS/kes.vkey \
--cold-signing-key-file $POOL_KEYS/cold.skey \
--operational-certificate-issue-counter $POOL_KEYS/cold.counter \
--kes-period ### \
--out-file $DATA/node.cert

Save new cold.counter to cold storage

Verify Kes info in block producer node

cardano-cli query kes-period-info --mainnet  --op-cert-file ${POOL_KEYS}/node.cert