Skip to content

feat: enable keypers to update shuttermint keys#651

Merged
jannikluhn merged 2 commits intorelease/v1.3.15from
feat/check-in-updates
Nov 18, 2025
Merged

feat: enable keypers to update shuttermint keys#651
jannikluhn merged 2 commits intorelease/v1.3.15from
feat/check-in-updates

Conversation

@jannikluhn
Copy link
Contributor

Keypers send check-in messages to the Shuttermint chain to announce their validator and encryption key. Instead of only accepting the first check in for each keyper, now Shuttermint accepts subsequent ones. The validator key will be used from the next block on. The encryption key will be emitted as a check in event.

To enable this and future Shuttermint updates, a fork heights struct has been added to the Shuttermint app state which specifies which protocol versions should go live at which block heights.

The keyper now stores all encryption keys and always uses the latest known one to encrypt directed messages. In addition, the encryption key cache in ShuttermintState has been removed as it was unused anyway.

@jannikluhn jannikluhn force-pushed the feat/check-in-updates branch 2 times, most recently from 6753a80 to 1e9c3f9 Compare November 18, 2025 02:53
"shutter-service-1000": {CheckInUpdate: &ForkHeightOverride{
Eon: uint64Ptr(13),
}},
"shutter-service-chiado-1000": {CheckInUpdate: &ForkHeightOverride{
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if we will set the fork height from config or assets, then why do we need these overrides?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Chains that are already running won't get the fork heights from the config. The genesis file is read only once during InitChain when the chain is first created. So for those we need the overrides.

cmd.PersistentFlags().String("role", "validator", "tendermint node role (validator, isolated-validator, sentry, seed)")
cmd.PersistentFlags().Uint64("initial-eon", 0, "initial eon")
cmd.PersistentFlags().Int64("forks.check-in-update.height", 0, "block height at which to activate the check-in update fork")
cmd.PersistentFlags().Bool("forks.check-in-update.disabled", false, "whether the check-in update fork is disabled")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Double negatives can be confusing. Maybe enabled defaulting to true would be clearer.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's a flag without an explicit argument, it'll just be --disabled to disable, omit (default) for enable.

Keypers send check-in messages to the Shuttermint chain to announce
their validator and encryption key. Instead of only accepting the first
check in for each keyper, now Shuttermint accepts subsequent ones. The
validator key will be used from the next block on. The encryption key
will be emitted as a check in event.

To enable this and future Shuttermint updates, a fork heights struct has
been added to the Shuttermint app state which specifies which protocol
versions should go live at which block heights.

The keyper now stores all encryption keys and always uses the latest
known one to encrypt directed messages. In addition, the encryption key
cache in ShuttermintState has been removed as it was unused anyway.
@jannikluhn jannikluhn force-pushed the feat/check-in-updates branch from aefba5d to 788b72a Compare November 18, 2025 16:52
@jannikluhn jannikluhn marked this pull request as ready for review November 18, 2025 17:02
@jannikluhn jannikluhn merged commit 4e098ab into release/v1.3.15 Nov 18, 2025
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants