diff --git a/polkadot/runtime/kusama/src/lib.rs b/polkadot/runtime/kusama/src/lib.rs index 20c0e590d8..84841f028f 100644 --- a/polkadot/runtime/kusama/src/lib.rs +++ b/polkadot/runtime/kusama/src/lib.rs @@ -1513,10 +1513,31 @@ pub type Executive = frame_executive::Executive< frame_system::ChainContext, Runtime, AllPallets, + SetStakingLimits, >; /// The payload being signed in the transactions. pub type SignedPayload = generic::SignedPayload; +pub struct SetStakingLimits; +impl frame_support::traits::OnRuntimeUpgrade for SetStakingLimits { + fn on_runtime_upgrade() -> Weight { + // This will be the threshold needed henceforth to become a nominator. All nominators will + // less than this amount bonded are at the risk of being chilled by another reporter. + let min_nominator_bond = UNITS / 10; + // The absolute maximum number of nominators. This number is set rather conservatively, and + // is expected to increase soon after this runtime upgrade via another governance proposal. + // The current Polkadot state has more than 30_000 nominators, therefore no other nominator + // can join. + let max_nominators = 20_000; + >::put(min_nominator_bond); + >::put(max_nominators); + + // we set no limits on validators for now. + + ::DbWeight::get().writes(2) + } +} + #[cfg(not(feature = "disable-runtime-api"))] sp_api::impl_runtime_apis! { impl sp_api::Core for Runtime { diff --git a/polkadot/runtime/polkadot/src/lib.rs b/polkadot/runtime/polkadot/src/lib.rs index b27b089fda..9ab67a2491 100644 --- a/polkadot/runtime/polkadot/src/lib.rs +++ b/polkadot/runtime/polkadot/src/lib.rs @@ -1099,11 +1099,31 @@ pub type Executive = frame_executive::Executive< frame_system::ChainContext, Runtime, AllPallets, - GrandpaStoragePrefixMigration, + (GrandpaStoragePrefixMigration, SetStakingLimits), >; /// The payload being signed in transactions. pub type SignedPayload = generic::SignedPayload; +pub struct SetStakingLimits; +impl frame_support::traits::OnRuntimeUpgrade for SetStakingLimits { + fn on_runtime_upgrade() -> Weight { + // This will be the threshold needed henceforth to become a nominator. All nominators will + // less than this amount bonded are at the risk of being chilled by another reporter. + let min_nominator_bond = 20 * UNITS; + // The absolute maximum number of nominators. This number is set rather conservatively, and + // is expected to increase soon after this runtime upgrade via another governance proposal. + // The current Polkadot state has more than 30_000 nominators, therefore no other nominator + // can join. + let max_nominators = 20_000; + >::put(min_nominator_bond); + >::put(max_nominators); + + // we set no limits on validators for now. + + ::DbWeight::get().writes(2) + } +} + #[cfg(not(feature = "disable-runtime-api"))] sp_api::impl_runtime_apis! { impl sp_api::Core for Runtime { diff --git a/polkadot/runtime/westend/src/lib.rs b/polkadot/runtime/westend/src/lib.rs index 51cf971972..1199d640ef 100644 --- a/polkadot/runtime/westend/src/lib.rs +++ b/polkadot/runtime/westend/src/lib.rs @@ -1105,10 +1105,23 @@ pub type Executive = frame_executive::Executive< frame_system::ChainContext, Runtime, AllPallets, + SetStakingLimits, >; /// The payload being signed in transactions. pub type SignedPayload = generic::SignedPayload; +pub struct SetStakingLimits; +impl frame_support::traits::OnRuntimeUpgrade for SetStakingLimits { + fn on_runtime_upgrade() -> Weight { + >::put(1 * UNITS); + >::put(1000); + >::put(10 * UNITS); + >::put(10); + + ::DbWeight::get().writes(4) + } +} + #[cfg(not(feature = "disable-runtime-api"))] sp_api::impl_runtime_apis! { impl sp_api::Core for Runtime {