Companion - Read babe config parameters from runtime (#5842)

* Read babe config parameters from runtime

* Trigger pipeline

* Trigger pipeline (after PR title change)

* update lockfile for {"substrate"}

Co-authored-by: parity-processbot <>
This commit is contained in:
Davide Galassi
2022-09-06 08:23:13 +02:00
committed by GitHub
parent 7e4bea2578
commit 293ff64fd0
14 changed files with 219 additions and 224 deletions
+170 -170
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -203,7 +203,7 @@ sp_api::mock_impl_runtime_apis! {
} }
impl BabeApi<Block> for MockRuntimeApi { impl BabeApi<Block> for MockRuntimeApi {
fn configuration(&self) -> sp_consensus_babe::BabeGenesisConfiguration { fn configuration(&self) -> sp_consensus_babe::BabeConfiguration {
unimplemented!() unimplemented!()
} }
+1 -1
View File
@@ -521,7 +521,7 @@ where
client.clone(), client.clone(),
); );
let babe_config = babe::Config::get(&*client)?; let babe_config = babe::configuration(&*client)?;
let (block_import, babe_link) = let (block_import, babe_link) =
babe::block_import(babe_config.clone(), beefy_block_import, client.clone())?; babe::block_import(babe_config.clone(), beefy_block_import, client.clone())?;
+2 -2
View File
@@ -23,7 +23,7 @@ use std::sync::Arc;
use jsonrpsee::RpcModule; use jsonrpsee::RpcModule;
use polkadot_primitives::v2::{AccountId, Balance, Block, BlockNumber, Hash, Nonce}; use polkadot_primitives::v2::{AccountId, Balance, Block, BlockNumber, Hash, Nonce};
use sc_client_api::AuxStore; use sc_client_api::AuxStore;
use sc_consensus_babe::Epoch; use sc_consensus_babe::{BabeConfiguration, Epoch};
use sc_finality_grandpa::FinalityProofProvider; use sc_finality_grandpa::FinalityProofProvider;
pub use sc_rpc::{DenyUnsafe, SubscriptionTaskExecutor}; pub use sc_rpc::{DenyUnsafe, SubscriptionTaskExecutor};
use sp_api::ProvideRuntimeApi; use sp_api::ProvideRuntimeApi;
@@ -40,7 +40,7 @@ pub type RpcExtension = RpcModule<()>;
/// Extra dependencies for BABE. /// Extra dependencies for BABE.
pub struct BabeDeps { pub struct BabeDeps {
/// BABE protocol config. /// BABE protocol config.
pub babe_config: sc_consensus_babe::Config, pub babe_config: BabeConfiguration,
/// BABE pending epoch changes. /// BABE pending epoch changes.
pub shared_epoch_changes: sc_consensus_epochs::SharedEpochChanges<Block, Epoch>, pub shared_epoch_changes: sc_consensus_epochs::SharedEpochChanges<Block, Epoch>,
/// The keystore that manages the keys of the node. /// The keystore that manages the keys of the node.
@@ -50,6 +50,9 @@ pub mod time {
pub const WEEKS: BlockNumber = DAYS * 7; pub const WEEKS: BlockNumber = DAYS * 7;
// 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks. // 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks.
// The choice of is done in accordance to the slot duration and expected target
// block time, for safely resisting network delays of maximum two seconds.
// <https://research.web3.foundation/en/latest/polkadot/BABE/Babe/#6-practical-results>
pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4); pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4);
} }
+6 -10
View File
@@ -1766,19 +1766,15 @@ sp_api::impl_runtime_apis! {
} }
impl babe_primitives::BabeApi<Block> for Runtime { impl babe_primitives::BabeApi<Block> for Runtime {
fn configuration() -> babe_primitives::BabeGenesisConfiguration { fn configuration() -> babe_primitives::BabeConfiguration {
// The choice of `c` parameter (where `1 - c` represents the let epoch_config = Babe::epoch_config().unwrap_or(BABE_GENESIS_EPOCH_CONFIG);
// probability of a slot being empty), is done in accordance to the babe_primitives::BabeConfiguration {
// slot duration and expected target block time, for safely
// resisting network delays of maximum two seconds.
// <https://research.web3.foundation/en/latest/polkadot/BABE/Babe/#6-practical-results>
babe_primitives::BabeGenesisConfiguration {
slot_duration: Babe::slot_duration(), slot_duration: Babe::slot_duration(),
epoch_length: EpochDuration::get(), epoch_length: EpochDuration::get(),
c: BABE_GENESIS_EPOCH_CONFIG.c, c: epoch_config.c,
genesis_authorities: Babe::authorities().to_vec(), authorities: Babe::authorities().to_vec(),
randomness: Babe::randomness(), randomness: Babe::randomness(),
allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots, allowed_slots: epoch_config.allowed_slots,
} }
} }
@@ -52,6 +52,9 @@ pub mod time {
pub const WEEKS: BlockNumber = DAYS * 7; pub const WEEKS: BlockNumber = DAYS * 7;
// 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks. // 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks.
// The choice of is done in accordance to the slot duration and expected target
// block time, for safely resisting network delays of maximum two seconds.
// <https://research.web3.foundation/en/latest/polkadot/BABE/Babe/#6-practical-results>
pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4); pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4);
} }
+6 -10
View File
@@ -1895,19 +1895,15 @@ sp_api::impl_runtime_apis! {
} }
impl babe_primitives::BabeApi<Block> for Runtime { impl babe_primitives::BabeApi<Block> for Runtime {
fn configuration() -> babe_primitives::BabeGenesisConfiguration { fn configuration() -> babe_primitives::BabeConfiguration {
// The choice of `c` parameter (where `1 - c` represents the let epoch_config = Babe::epoch_config().unwrap_or(BABE_GENESIS_EPOCH_CONFIG);
// probability of a slot being empty), is done in accordance to the babe_primitives::BabeConfiguration {
// slot duration and expected target block time, for safely
// resisting network delays of maximum two seconds.
// <https://research.web3.foundation/en/latest/polkadot/BABE/Babe/#6-practical-results>
babe_primitives::BabeGenesisConfiguration {
slot_duration: Babe::slot_duration(), slot_duration: Babe::slot_duration(),
epoch_length: EpochDuration::get(), epoch_length: EpochDuration::get(),
c: BABE_GENESIS_EPOCH_CONFIG.c, c: epoch_config.c,
genesis_authorities: Babe::authorities().to_vec(), authorities: Babe::authorities().to_vec(),
randomness: Babe::randomness(), randomness: Babe::randomness(),
allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots, allowed_slots: epoch_config.allowed_slots,
} }
} }
@@ -50,6 +50,9 @@ pub mod time {
pub const DAYS: BlockNumber = HOURS * 24; pub const DAYS: BlockNumber = HOURS * 24;
// 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks. // 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks.
// The choice of is done in accordance to the slot duration and expected target
// block time, for safely resisting network delays of maximum two seconds.
// <https://research.web3.foundation/en/latest/polkadot/BABE/Babe/#6-practical-results>
pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4); pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4);
} }
+6 -10
View File
@@ -1141,19 +1141,15 @@ sp_api::impl_runtime_apis! {
} }
impl babe_primitives::BabeApi<Block> for Runtime { impl babe_primitives::BabeApi<Block> for Runtime {
fn configuration() -> babe_primitives::BabeGenesisConfiguration { fn configuration() -> babe_primitives::BabeConfiguration {
// The choice of `c` parameter (where `1 - c` represents the let epoch_config = Babe::epoch_config().unwrap_or(BABE_GENESIS_EPOCH_CONFIG);
// probability of a slot being empty), is done in accordance to the babe_primitives::BabeConfiguration {
// slot duration and expected target block time, for safely
// resisting network delays of maximum two seconds.
// <https://research.web3.foundation/en/latest/polkadot/BABE/Babe/#6-practical-results>
babe_primitives::BabeGenesisConfiguration {
slot_duration: Babe::slot_duration(), slot_duration: Babe::slot_duration(),
epoch_length: EpochDurationInBlocks::get().into(), epoch_length: EpochDurationInBlocks::get().into(),
c: BABE_GENESIS_EPOCH_CONFIG.c, c: epoch_config.c,
genesis_authorities: Babe::authorities().to_vec(), authorities: Babe::authorities().to_vec(),
randomness: Babe::randomness(), randomness: Babe::randomness(),
allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots, allowed_slots: epoch_config.allowed_slots,
} }
} }
@@ -43,6 +43,9 @@ pub mod time {
pub const DAYS: BlockNumber = HOURS * 24; pub const DAYS: BlockNumber = HOURS * 24;
// 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks. // 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks.
// The choice of is done in accordance to the slot duration and expected target
// block time, for safely resisting network delays of maximum two seconds.
// <https://research.web3.foundation/en/latest/polkadot/BABE/Babe/#6-practical-results>
pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4); pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4);
} }
+6 -10
View File
@@ -992,19 +992,15 @@ sp_api::impl_runtime_apis! {
} }
impl babe_primitives::BabeApi<Block> for Runtime { impl babe_primitives::BabeApi<Block> for Runtime {
fn configuration() -> babe_primitives::BabeGenesisConfiguration { fn configuration() -> babe_primitives::BabeConfiguration {
// The choice of `c` parameter (where `1 - c` represents the let epoch_config = Babe::epoch_config().unwrap_or(BABE_GENESIS_EPOCH_CONFIG);
// probability of a slot being empty), is done in accordance to the babe_primitives::BabeConfiguration {
// slot duration and expected target block time, for safely
// resisting network delays of maximum two seconds.
// <https://research.web3.foundation/en/latest/polkadot/BABE/Babe/#6-practical-results>
babe_primitives::BabeGenesisConfiguration {
slot_duration: Babe::slot_duration(), slot_duration: Babe::slot_duration(),
epoch_length: EpochDuration::get(), epoch_length: EpochDuration::get(),
c: BABE_GENESIS_EPOCH_CONFIG.c, c: epoch_config.c,
genesis_authorities: Babe::authorities().to_vec(), authorities: Babe::authorities().to_vec(),
randomness: Babe::randomness(), randomness: Babe::randomness(),
allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots, allowed_slots: epoch_config.allowed_slots,
} }
} }
@@ -50,6 +50,9 @@ pub mod time {
pub const DAYS: BlockNumber = HOURS * 24; pub const DAYS: BlockNumber = HOURS * 24;
// 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks. // 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks.
// The choice of is done in accordance to the slot duration and expected target
// block time, for safely resisting network delays of maximum two seconds.
// <https://research.web3.foundation/en/latest/polkadot/BABE/Babe/#6-practical-results>
pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4); pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4);
} }
+6 -10
View File
@@ -1476,19 +1476,15 @@ sp_api::impl_runtime_apis! {
} }
impl babe_primitives::BabeApi<Block> for Runtime { impl babe_primitives::BabeApi<Block> for Runtime {
fn configuration() -> babe_primitives::BabeGenesisConfiguration { fn configuration() -> babe_primitives::BabeConfiguration {
// The choice of `c` parameter (where `1 - c` represents the let epoch_config = Babe::epoch_config().unwrap_or(BABE_GENESIS_EPOCH_CONFIG);
// probability of a slot being empty), is done in accordance to the babe_primitives::BabeConfiguration {
// slot duration and expected target block time, for safely
// resisting network delays of maximum two seconds.
// <https://research.web3.foundation/en/latest/polkadot/BABE/Babe/#6-practical-results>
babe_primitives::BabeGenesisConfiguration {
slot_duration: Babe::slot_duration(), slot_duration: Babe::slot_duration(),
epoch_length: EpochDuration::get(), epoch_length: EpochDuration::get(),
c: BABE_GENESIS_EPOCH_CONFIG.c, c: epoch_config.c,
genesis_authorities: Babe::authorities().to_vec(), authorities: Babe::authorities().to_vec(),
randomness: Babe::randomness(), randomness: Babe::randomness(),
allowed_slots: BABE_GENESIS_EPOCH_CONFIG.allowed_slots, allowed_slots: epoch_config.allowed_slots,
} }
} }