Certificados KES
Este certificado es temporal, y deberás actualizarlo pasado de tiempo establecido en el protocolo.
Para crear un certificado operacional para un nodo productor de bloques, debe crear un par de claves KES. "KES" quiere decir Key Evolving Signature, lo que significa que después de un cierto período, la clave evolucionará a una nueva clave y descartará su versión anterior. Esto es útil, porque significa que incluso si un atacante obtiene acceso a la clave de firma, solo puede usarla para firmar bloques de ahora en adelante, pero no bloques que datan de períodos anteriores, lo que hace imposible que el atacante reescribir la historia. Desafortunadamente, hay un problema: una clave KES solo puede evolucionar durante un cierto número de períodos y después se vuelve inútil. Esto significa que antes de que haya transcurrido ese número de períodos, el operador del pool tiene que generar un nuevo par de claves KES, emitir un nuevo certificado de nodo operativo con ese nuevo par de claves y reiniciar el nodo productor con el nuevo certificado.

Creamos el par de claves KES

1
cardano-cli node key-gen-KES \
2
--verification-key-file kes.vkey \
3
--signing-key-file kes.skey
Copied!
Para saber cuánto dura un período y cuánto tiempo dura una clave, podemos buscar en el archivo de génesis mainnet-shelley-genesis.json
1
slotsPerKESPeriod=$(cat $HOME/cnode/config/mainnet-shelley-genesis.json | jq -r '.slotsPerKESPeriod')
2
echo slotsPerKESPeriod: ${slotsPerKESPeriod}
Copied!
"slotsPerKESPeriod": 129600, "maxKESEvolutions": 62,
Obtener el último slot
1
slotNo=$(cardano-cli query tip --mainnet | jq -r '.slotNo')
2
echo slotNo: ${slotNo}
Copied!
Antes de que podamos crear un certificado operativo para nuestro nodo, necesitamos averiguar el inicio del período de validez de KES, es decir, en qué período de evolución de KES estamos.
1
kesPeriod=$((${slotNo} / ${slotsPerKESPeriod}))
2
echo kesPeriod: ${kesPeriod}
Copied!

Creamos las cold keys

1
cd
2
mkdir ~/cold-keys
3
pushd ~/cold-keys
Copied!
1
cardano-cli node key-gen \
2
--cold-verification-key-file node.vkey \
3
--cold-signing-key-file node.skey \
4
--operational-certificate-issue-counter node.counter
Copied!

Generamos el certificado operacional:

1
cardano-cli node issue-op-cert \
2
--kes-verification-key-file kes.vkey \
3
--cold-signing-key-file $HOME/cold-keys/node.skey \
4
--operational-certificate-issue-counter $HOME/cold-keys/node.counter \
5
--kes-period $kesPeriod \
6
--out-file node.cert
Copied!

Creamos el par de claves VRF

1
cardano-cli node key-gen-VRF \
2
--verification-key-file vrf.vkey \
3
--signing-key-file vrf.skey
Copied!
Ajustamos los permisos:
Solo lectura para el creador del archivo. Ningún permiso para grupos u otros.
1
chmod 400 vrf.skey
Copied!
Última actualización 7mo ago