diff --git a/polkadot/runtime/parachains/src/configuration.rs b/polkadot/runtime/parachains/src/configuration.rs index 11c257bea4..dc303ef406 100644 --- a/polkadot/runtime/parachains/src/configuration.rs +++ b/polkadot/runtime/parachains/src/configuration.rs @@ -219,7 +219,7 @@ impl> Default for HostConfiguration { minimum_validation_upgrade_delay: BlockNumber, thread_availability_period: BlockNumber, }, + /// `validation_upgrade_delay` is less than or equal 1. + ValidationUpgradeDelayIsTooLow { validation_upgrade_delay: BlockNumber }, } -impl HostConfiguration { +impl HostConfiguration +where + BlockNumber: Zero + PartialOrd + sp_std::fmt::Debug + Clone + From, +{ /// Checks that this instance is consistent with the requirements on each individual member. /// /// # Errors @@ -341,6 +346,12 @@ impl HostConfigurat }) } + if self.validation_upgrade_delay <= 1.into() { + return Err(ValidationUpgradeDelayIsTooLow { + validation_upgrade_delay: self.validation_upgrade_delay.clone(), + }) + } + Ok(()) } @@ -1499,6 +1510,11 @@ mod tests { Configuration::set_minimum_validation_upgrade_delay(Origin::root(), 9), Error::::InvalidNewValue ); + + assert_err!( + Configuration::set_validation_upgrade_delay(Origin::root(), 0), + Error::::InvalidNewValue + ); }); } diff --git a/polkadot/runtime/parachains/src/inclusion/tests.rs b/polkadot/runtime/parachains/src/inclusion/tests.rs index 12dbb76640..4f727348d2 100644 --- a/polkadot/runtime/parachains/src/inclusion/tests.rs +++ b/polkadot/runtime/parachains/src/inclusion/tests.rs @@ -1307,7 +1307,7 @@ fn candidate_checks() { { let cfg = Configuration::config(); let expected_at = 10 + cfg.validation_upgrade_delay; - assert_eq!(expected_at, 10); + assert_eq!(expected_at, 12); Paras::schedule_code_upgrade(chain_a, vec![1, 2, 3, 4].into(), expected_at, &cfg); }