-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Use correct CreateInherentDataProviders impl for manual seal #8852
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -27,7 +27,9 @@ use sc_consensus_babe::BabeBlockImport; | |||||||||||||||||||||||||||||||||||||
use sp_keystore::SyncCryptoStorePtr; | ||||||||||||||||||||||||||||||||||||||
use sp_keyring::sr25519::Keyring::Alice; | ||||||||||||||||||||||||||||||||||||||
use sp_consensus_babe::AuthorityId; | ||||||||||||||||||||||||||||||||||||||
use sc_consensus_manual_seal::{ConsensusDataProvider, consensus::babe::BabeConsensusDataProvider}; | ||||||||||||||||||||||||||||||||||||||
use sc_consensus_manual_seal::{ | ||||||||||||||||||||||||||||||||||||||
ConsensusDataProvider, consensus::babe::{BabeConsensusDataProvider, SlotTimestampProvider}, | ||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||
use sp_runtime::{traits::IdentifyAccount, MultiSigner, generic::Era}; | ||||||||||||||||||||||||||||||||||||||
use node_cli::chain_spec::development_config; | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
|
@@ -59,10 +61,7 @@ impl ChainInfo for NodeTemplateChainInfo { | |||||||||||||||||||||||||||||||||||||
Self::SelectChain, | ||||||||||||||||||||||||||||||||||||||
>; | ||||||||||||||||||||||||||||||||||||||
type SignedExtras = node_runtime::SignedExtra; | ||||||||||||||||||||||||||||||||||||||
type InherentDataProviders = ( | ||||||||||||||||||||||||||||||||||||||
sp_timestamp::InherentDataProvider, | ||||||||||||||||||||||||||||||||||||||
sp_consensus_babe::inherents::InherentDataProvider, | ||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||
type InherentDataProviders = (SlotTimestampProvider, sp_consensus_babe::inherents::InherentDataProvider); | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
fn signed_extras(from: <Self::Runtime as frame_system::Config>::AccountId) -> Self::SignedExtras { | ||||||||||||||||||||||||||||||||||||||
( | ||||||||||||||||||||||||||||||||||||||
|
@@ -90,7 +89,7 @@ impl ChainInfo for NodeTemplateChainInfo { | |||||||||||||||||||||||||||||||||||||
TaskManager, | ||||||||||||||||||||||||||||||||||||||
Box<dyn CreateInherentDataProviders< | ||||||||||||||||||||||||||||||||||||||
Self::Block, | ||||||||||||||||||||||||||||||||||||||
(), | ||||||||||||||||||||||||||||||||||||||
Arc<TFullClient<Self::Block, Self::RuntimeApi, Self::Executor>>, | ||||||||||||||||||||||||||||||||||||||
InherentDataProviders = Self::InherentDataProviders | ||||||||||||||||||||||||||||||||||||||
>>, | ||||||||||||||||||||||||||||||||||||||
Option< | ||||||||||||||||||||||||||||||||||||||
|
@@ -143,17 +142,10 @@ impl ChainInfo for NodeTemplateChainInfo { | |||||||||||||||||||||||||||||||||||||
backend, | ||||||||||||||||||||||||||||||||||||||
keystore.sync_keystore(), | ||||||||||||||||||||||||||||||||||||||
task_manager, | ||||||||||||||||||||||||||||||||||||||
Box::new(move |_, _| { | ||||||||||||||||||||||||||||||||||||||
let slot_duration = slot_duration.clone(); | ||||||||||||||||||||||||||||||||||||||
async move { | ||||||||||||||||||||||||||||||||||||||
let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); | ||||||||||||||||||||||||||||||||||||||
let slot = sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_duration( | ||||||||||||||||||||||||||||||||||||||
*timestamp, | ||||||||||||||||||||||||||||||||||||||
slot_duration.slot_duration(), | ||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||
Ok((timestamp, slot)) | ||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||
Box::new(|_, client| async move { | ||||||||||||||||||||||||||||||||||||||
let provider = SlotTimestampProvider::new(client).map_err(|err| format!("{:?}", err))?; | ||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You have the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Because this closure is a factory function, it needs to be called more than once. This is also evident in the implementation for substrate/primitives/inherents/src/client_side.rs Lines 43 to 60 in 90cfb95
It's implemented for There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
I know.... But this doesn't mean that you can not do what I said... https://github.com/paritytech/polkadot/blob/master/node/service/src/lib.rs#L929-L954
This was not done to pass the client there. |
||||||||||||||||||||||||||||||||||||||
let babe = sp_consensus_babe::inherents::InherentDataProvider::new(provider.slot().into()); | ||||||||||||||||||||||||||||||||||||||
Ok((provider, babe)) | ||||||||||||||||||||||||||||||||||||||
}), | ||||||||||||||||||||||||||||||||||||||
Some(Box::new(consensus_data_provider)), | ||||||||||||||||||||||||||||||||||||||
select_chain, | ||||||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This change doesn't make any sense at all.