Wartung eines Cardano-Pools im Mainnet

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
Gültiges Node Zertifikat
2 Grüne Haken – Das Node Zertifikat ist gültig.

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.

Scroll to Top