x/msdcheck enforces a minimum self-delegation floor for validator creation and proposed MinSelfDelegation updates across all transaction entry points: Cosmos SDK transactions, API routes, and the EVM staking precompile.
The enforced minimum is:
Scope and semantics
- The rule applies to the validator operator’s self-delegation only.
- It does not depend on delegations from other users.
- A validator can only set or raise
MinSelfDelegationthrough create/edit flows. EditValidatoris not blocked solely because current validator tokens fell below the threshold after creation; the restriction applies to the proposedMinSelfDelegationvalue.- If an operator later reduces self-delegation below the minimum, for example through undelegation, the staking module’s native behavior jails the validator and removes it from the active set.
x/msdcheckdoes not block undelegate or redelegate.
Default genesis
x/msdcheck does not have an independent module genesis section in app_state.
Practical implications:
- There is no
app_state.msdcheckobject to configure. - Staking genesis (
app_state.staking) still applies as usual. - The minimum self-delegation check is enforced by module logic, not by msdcheck-specific genesis params.
Covered scenarios
Test commands
Run the tests from the root of the c8ntinuum source repository (see Build the Node for prerequisites). The tests live in theevmd Go module and link against the Rust SP1 verifier library, so run them through the top-level Makefile, which builds that library and sets the library path:
TestMSDCheckIntegration (Cosmos SDK messages) and TestMSDCheckPrecompile (EVM staking precompile).