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
| Scenario | Expected result |
|---|---|
MsgCreateValidator below minimum | Reject |
MsgCreateValidator at exact minimum | Accept |
MsgCreateValidator above minimum | Accept |
MsgEditValidator below current stake threshold but without invalid MinSelfDelegation change | Accept |
MsgEditValidator proposed MinSelfDelegation below minimum | Reject |
EVM staking precompile createValidator below minimum | Reject |
EVM staking precompile createValidator at exact minimum | Accept |
EVM staking precompile createValidator above minimum | Accept |