Gültigkeit der KES Keys und damit des node.cert abfragen
Folgendes Kommando kann genutzt werden, um die Gültigkeit des node Zertifikats abzufragen.
Hinwei: –$(NODE_CONFIG) ist in der regel –mainnet
cd $NODE_HOME cardano-cli query kes-period-info \ --${NODE_CONFIG} \ --op-cert-file node.cert

Erneuern der KES Keys
Die KES Keys müssen alle 90 Tage erneuert werden, wenn der Pool im Mainnet betrieben wird.
KES steht für “key evolving signature”, KES-Keys wurden eingeführt, um den Pool vor Hackern zu schützen, welche versuchen könnten die Keys zu kompromittieren.
Die KES-Keys müssen alle 90 Tage erneuert werden.
Prüfen der NodeCertificateNumber
Das Kommando:
cardano-cli query kes-period-info
gibt 2 Variablen aus:
qKesOnDiskOperationalCertificateNumber
und
qKesNodeStateOperationalCertificateNumber
Die Variable: qKesOnDiskOperationalCertificateNumber ergibt sich aus dem node.counter file. Sie muss bei einen neu erstellten Zertifikat EXAKT um 1 größer sein, als qKesNodeStateOperationalCertificateNumber.
Beim aufsetzen eines Cardano Stake Pools, haben wir einen node.counter file erzeugt. Hat der Pool seit dem letzten erneuern der Zertifikate, mindestens einen Block gemintet, dann müssen wir hier nichts tun. Weil:
Dann ist bei Aufruf des Kommandos:
cardano-cli query kes-period-info
Der:
qKesOnDiskOperationalCertificateNumber
gleich:
qKesNodeStateOperationalCertificateNumber
Das später verwendete Kommando:
cardano-cli node issue-op-cert
Wird den node Counter automatisch um 1 inkrementieren und damit ist alles gut.
Ansonsten muss der Node Counter file neu gesetzt werden, dies geschieht mit:
cd $HOME/cold-keys cardano-cli node new-counter \ --cold-verification-key-file $HOME/cold-keys/node.vkey \ --counter-value $(( <NodeCertificateNumber> + 1 )) \ --operational-certificate-issue-counter-file node.counter
Generieren eines neuen Node Zertifikats
Schritt 1: Herausfinden der aktuellen KES-Periode.
cd $NODE_HOME slotNo=$(cardano-cli query tip --mainnet | jq -r '.slot') slotsPerKESPeriod=$(cat $NODE_HOME/${NODE_CONFIG}-shelley-genesis.json | jq -r '.slotsPerKESPeriod') kesPeriod=$((${slotNo} / ${slotsPerKESPeriod})) startKesPeriod=${kesPeriod} echo startKesPeriod: ${startKesPeriod}
Jetzt kennen wir die Start-KES-Periode.
Schritt 2: Erzeugen eines neuen KES-Paares:
cd $NODE_HOME cardano-cli node key-gen-KES \ --verification-key-file kes.vkey \ --signing-key-file kes.skey
Nun haben wir das neue KES-Schlüssel-Paar. Dieses werden wir auf der Offline-Maschine signieren.
Schritt 3: Kopieren von kes.vkey und kes.skey auf die Offline-Maschine.
Schritt 4: Signieren des KES-Schlüssel-Paar auf der Offline-Maschine.
cd $NODE_HOME chmod u+rwx $HOME/cold-keys cardano-cli node issue-op-cert \ --kes-verification-key-file kes.vkey \ --cold-signing-key-file $HOME/cold-keys/node.skey \ --operational-certificate-issue-counter $HOME/cold-keys/node.counter \ --kes-period <startKesPeriod> \ --out-file node.cert chmod a-rwx $HOME/cold-keys
Nun haben wir ein neues node.cert. Dieses kopieren wir auf den Block-Producer.
Schritt 5: Kopieren von node.cert auf den Block-Producer in $HOME/cardano-my-node.
Schritt 6: Neustarten des Block-Producer
sudo systemctl restart cardano-node
Nun sollten die neuen KES-Keys aktiv sein. Für 90 Tage haben wir Ruhe.
Prüfen einer Balance
cardano-cli query utxo --address $(cat payment.addr) --mainnet
Prüfen auf Rewards
Wenn eine Epoche zu Ende geht und wir annehmen erfolgreich einen Block geminted zu haben können wir die Rewards mit folgenden Kommando prüfen:
cardano-cli query stake-address-info \ --address $(cat stake.addr) \ --mainnet
Update des Pledge und der Pool Daten
Um den Pledge eines Pools zu ändern, muss das Zertifikat neu hochgeladen werden. Dazu muss der Prozess der Zertifikatserstellung so wie hier oder hier neu durchgemacht werden. Dort dann entsprechend den Pledge anpassen.