mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-12 04:11:07 +00:00
Use correct CreateInherentDataProviders impl for manual seal (#8852)
* use correct CreateInherentDataProviders impl for manual seal * add babe inherent provider * move client into factory fn
This commit is contained in:
@@ -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 {
|
||||
(
|
||||
@@ -139,20 +138,16 @@ impl ChainInfo for NodeTemplateChainInfo {
|
||||
.expect("failed to create ConsensusDataProvider");
|
||||
|
||||
Ok((
|
||||
client,
|
||||
client.clone(),
|
||||
backend,
|
||||
keystore.sync_keystore(),
|
||||
task_manager,
|
||||
Box::new(move |_, _| {
|
||||
let slot_duration = slot_duration.clone();
|
||||
let client = client.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))
|
||||
let timestamp = SlotTimestampProvider::new(client.clone()).map_err(|err| format!("{:?}", err))?;
|
||||
let babe = sp_consensus_babe::inherents::InherentDataProvider::new(timestamp.slot().into());
|
||||
Ok((timestamp, babe))
|
||||
}
|
||||
}),
|
||||
Some(Box::new(consensus_data_provider)),
|
||||
|
||||
@@ -268,7 +268,7 @@ impl SlotTimestampProvider {
|
||||
|
||||
// looks like this isn't the first block, rehydrate the fake time.
|
||||
// otherwise we'd be producing blocks for older slots.
|
||||
let duration = if info.best_number != Zero::zero() {
|
||||
let time = if info.best_number != Zero::zero() {
|
||||
let header = client.header(BlockId::Hash(info.best_hash))?.unwrap();
|
||||
let slot = find_pre_digest::<B>(&header).unwrap().slot();
|
||||
// add the slot duration so there's no collision of slots
|
||||
@@ -282,10 +282,15 @@ impl SlotTimestampProvider {
|
||||
};
|
||||
|
||||
Ok(Self {
|
||||
time: atomic::AtomicU64::new(duration),
|
||||
time: atomic::AtomicU64::new(time),
|
||||
slot_duration,
|
||||
})
|
||||
}
|
||||
|
||||
/// Get the current slot number
|
||||
pub fn slot(&self) -> u64 {
|
||||
self.time.load(atomic::Ordering::SeqCst) / self.slot_duration
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait::async_trait]
|
||||
|
||||
@@ -111,10 +111,7 @@ pub async fn seal_block<B, BI, SC, C, E, P, CIDP>(
|
||||
|
||||
let inherent_data_providers =
|
||||
create_inherent_data_providers
|
||||
.create_inherent_data_providers(
|
||||
parent.hash(),
|
||||
(),
|
||||
)
|
||||
.create_inherent_data_providers(parent.hash(), ())
|
||||
.await
|
||||
.map_err(|e| Error::Other(e))?;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user