With reference to my previous question regarding inconsistent reading of KES validity given by cardano-node and gLiveView, is there any way I could objectively verify KES validity without waiting for the next block?

2 Answers 2


Things you can verify:

  • Current opcert counter is higher than previous counter on chain in a block created by your pool (you can use dbsync or query a public instance) - you already saw in your previous thread that expected OCert for your node was 6). Starting Vasil fork, it is expected that - upon rotation, your opcert counter is higher by exactly 1
  • Expiry date of KES (can query EKG or also just check gLiveView).
  • Make sure your cert was derived using kes from your cold key using which pool was created.

Once each of above is verified, it's simply a matter of waiting for your next block to get the proof/assurance. The above are pretty much the only checks you can perform.

  • What if you haven't done any blocks yet? Mine is currently up to 9, no blocks done, and the cert instantly expires.
    – Cyberience
    Mar 31, 2022 at 8:24
  • 1
    @Cyberience - "instantly expires" => That suggests you're likely not using right start period for KES (assuming you're verifying it correctly using right files and post node restart)
    – RdLrT
    Apr 1, 2022 at 3:36

Try the 2 commands below to see if they give you the info that you need.

1 - Cardano version 1.34.0 (and 1.34.1?) has a bug that does not show KES calculations correctly - this should be fixed in 1.35.0. Below is from 1.34.1 after I did a KES rotation earlier today.

$cardano-cli query kes-period-info --mainnet --op-cert-file op.cert

✓ The operational certificate counter agrees with the node protocol state counter
✓ Operational certificate's kes period is within the correct KES period interval
    "qKesNodeStateOperationalCertificateNumber": 14,
    "qKesCurrentKesPeriod": 505,
    "qKesOnDiskOperationalCertificateNumber": 15,
    "qKesRemainingSlotsInKesPeriod": 6783509,
    "qKesMaxKESEvolutions": 62,
    "qKesKesKeyExpiry": "2022-09-22T21:44:51Z",
    "qKesEndKesInterval": 558,
    "qKesStartKesInterval": 496,
    "qKesSlotsPerKesPeriod": 129600

2 - Try using the localhost HTTP metrics details via CLI - note your port number may vary:

$curl -s | grep KES

cardano_node_metrics_operationalCertificateExpiryKESPeriod_int 567 
cardano_node_metrics_currentKESPeriod_int 505 
cardano_node_metrics_remainingKESPeriods_int 62 
cardano_node_metrics_operationalCertificateStartKESPeriod_int 505

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.