mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-15 19:41:05 +00:00
Add transaction pool to Aura and Babe import queue (#3225)
* Add transaction pool to babe import queue * Add transaction pool to Babe check header * Fix tests * Add tx pool to Aura import_queue * Fix tests, node-template * Add comments regarding unused _transaction_pool * Make tx pool optional in check_header
This commit is contained in:
@@ -146,7 +146,8 @@ pub fn import_blocks<F, E, R>(
|
||||
let (mut queue, _) = components::FullComponents::<F>::build_import_queue(
|
||||
&mut config,
|
||||
client.clone(),
|
||||
select_chain
|
||||
select_chain,
|
||||
None,
|
||||
)?;
|
||||
|
||||
let (exit_send, exit_recv) = std::sync::mpsc::channel();
|
||||
|
||||
@@ -381,6 +381,7 @@ pub trait ServiceFactory: 'static + Sized {
|
||||
config: &mut FactoryFullConfiguration<Self>,
|
||||
_client: Arc<FullClient<Self>>,
|
||||
_select_chain: Self::SelectChain,
|
||||
_transaction_pool: Option<Arc<TransactionPool<Self::FullTransactionPoolApi>>>,
|
||||
) -> Result<Self::FullImportQueue, error::Error> {
|
||||
if let Some(name) = config.chain_spec.consensus_engine() {
|
||||
match name {
|
||||
@@ -454,6 +455,7 @@ pub trait Components: Sized + 'static {
|
||||
config: &mut FactoryFullConfiguration<Self::Factory>,
|
||||
client: Arc<ComponentClient<Self>>,
|
||||
select_chain: Option<Self::SelectChain>,
|
||||
_transaction_pool: Option<Arc<TransactionPool<Self::TransactionPoolApi>>>,
|
||||
) -> Result<(Self::ImportQueue, Option<BoxFinalityProofRequestBuilder<FactoryBlock<Self::Factory>>>), error::Error>;
|
||||
|
||||
/// Finality proof provider for serving network requests.
|
||||
@@ -572,10 +574,11 @@ impl<Factory: ServiceFactory> Components for FullComponents<Factory> {
|
||||
config: &mut FactoryFullConfiguration<Self::Factory>,
|
||||
client: Arc<ComponentClient<Self>>,
|
||||
select_chain: Option<Self::SelectChain>,
|
||||
transaction_pool: Option<Arc<TransactionPool<Self::TransactionPoolApi>>>,
|
||||
) -> Result<(Self::ImportQueue, Option<BoxFinalityProofRequestBuilder<FactoryBlock<Self::Factory>>>), error::Error> {
|
||||
let select_chain = select_chain
|
||||
.ok_or(error::Error::SelectChainRequired)?;
|
||||
Factory::build_full_import_queue(config, client, select_chain)
|
||||
Factory::build_full_import_queue(config, client, select_chain, transaction_pool)
|
||||
.map(|queue| (queue, None))
|
||||
}
|
||||
|
||||
@@ -695,6 +698,7 @@ impl<Factory: ServiceFactory> Components for LightComponents<Factory> {
|
||||
config: &mut FactoryFullConfiguration<Self::Factory>,
|
||||
client: Arc<ComponentClient<Self>>,
|
||||
_select_chain: Option<Self::SelectChain>,
|
||||
_transaction_pool: Option<Arc<TransactionPool<Self::TransactionPoolApi>>>,
|
||||
) -> Result<(Self::ImportQueue, Option<BoxFinalityProofRequestBuilder<FactoryBlock<Self::Factory>>>), error::Error> {
|
||||
Factory::build_light_import_queue(config, client)
|
||||
.map(|(queue, builder)| (queue, Some(builder)))
|
||||
|
||||
@@ -173,10 +173,21 @@ impl<Components: components::Components> Service<Components> {
|
||||
|
||||
let (client, on_demand) = Components::build_client(&config, executor, Some(keystore.clone()))?;
|
||||
let select_chain = Components::build_select_chain(&mut config, client.clone())?;
|
||||
|
||||
let transaction_pool = Arc::new(
|
||||
Components::build_transaction_pool(config.transaction_pool.clone(), client.clone())?
|
||||
);
|
||||
let transaction_pool_adapter = Arc::new(TransactionPoolAdapter {
|
||||
imports_external_transactions: !config.roles.is_light(),
|
||||
pool: transaction_pool.clone(),
|
||||
client: client.clone(),
|
||||
});
|
||||
|
||||
let (import_queue, finality_proof_request_builder) = Components::build_import_queue(
|
||||
&mut config,
|
||||
client.clone(),
|
||||
select_chain.clone(),
|
||||
Some(transaction_pool.clone()),
|
||||
)?;
|
||||
let import_queue = Box::new(import_queue);
|
||||
let finality_proof_provider = Components::build_finality_proof_provider(client.clone())?;
|
||||
@@ -197,14 +208,6 @@ impl<Components: components::Components> Service<Components> {
|
||||
);
|
||||
|
||||
let network_protocol = <Components::Factory>::build_network_protocol(&config)?;
|
||||
let transaction_pool = Arc::new(
|
||||
Components::build_transaction_pool(config.transaction_pool.clone(), client.clone())?
|
||||
);
|
||||
let transaction_pool_adapter = Arc::new(TransactionPoolAdapter {
|
||||
imports_external_transactions: !config.roles.is_light(),
|
||||
pool: transaction_pool.clone(),
|
||||
client: client.clone(),
|
||||
});
|
||||
|
||||
let protocol_id = {
|
||||
let protocol_id_full = match config.chain_spec.protocol_id() {
|
||||
@@ -971,7 +974,7 @@ where
|
||||
/// LightService = LightComponents<Self>
|
||||
/// { |config| <LightComponents<Factory>>::new(config) },
|
||||
/// FullImportQueue = BasicQueue<Block>
|
||||
/// { |_, client, _| Ok(BasicQueue::new(MyVerifier, Box::new(client), None, None)) },
|
||||
/// { |_, client, _, _| Ok(BasicQueue::new(MyVerifier, Box::new(client), None, None)) },
|
||||
/// LightImportQueue = BasicQueue<Block>
|
||||
/// { |_, client| {
|
||||
/// let fprb = Box::new(DummyFinalityProofRequestBuilder::default()) as Box<_>;
|
||||
@@ -1064,9 +1067,10 @@ macro_rules! construct_service_factory {
|
||||
fn build_full_import_queue(
|
||||
config: &mut $crate::FactoryFullConfiguration<Self>,
|
||||
client: $crate::Arc<$crate::FullClient<Self>>,
|
||||
select_chain: Self::SelectChain
|
||||
select_chain: Self::SelectChain,
|
||||
transaction_pool: Option<Arc<$crate::TransactionPool<Self::FullTransactionPoolApi>>>,
|
||||
) -> $crate::Result<Self::FullImportQueue, $crate::Error> {
|
||||
( $( $full_import_queue_init )* ) (config, client, select_chain)
|
||||
( $( $full_import_queue_init )* ) (config, client, select_chain, transaction_pool)
|
||||
}
|
||||
|
||||
fn build_light_import_queue(
|
||||
|
||||
Reference in New Issue
Block a user