mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-30 07:17:56 +00:00
Make offchain tx pool creation reusable (#14230)
* Make offchain tx pool creation reusable Introduces an `OffchainTransactionPoolFactory` for creating offchain transactions pools that can be registered in the runtime externalities context. This factory will be required for a later pr to make the creation of offchain transaction pools easier. * Update client/transaction-pool/api/src/lib.rs Co-authored-by: Anton <anton.kalyaev@gmail.com> --------- Co-authored-by: Anton <anton.kalyaev@gmail.com>
This commit is contained in:
@@ -52,8 +52,8 @@ use std::{
|
||||
use graph::{ExtrinsicHash, IsValidator};
|
||||
use sc_transaction_pool_api::{
|
||||
error::Error as TxPoolError, ChainEvent, ImportNotificationStream, MaintainedTransactionPool,
|
||||
PoolFuture, PoolStatus, ReadyTransactions, TransactionFor, TransactionPool, TransactionSource,
|
||||
TransactionStatusStreamFor, TxHash,
|
||||
OffchainTransactionPoolFactory, PoolFuture, PoolStatus, ReadyTransactions, TransactionFor,
|
||||
TransactionPool, TransactionSource, TransactionStatusStreamFor, TxHash,
|
||||
};
|
||||
use sp_core::traits::SpawnEssentialNamed;
|
||||
use sp_runtime::{
|
||||
@@ -397,7 +397,9 @@ where
|
||||
));
|
||||
|
||||
// make transaction pool available for off-chain runtime calls.
|
||||
client.execution_extensions().register_transaction_pool(&pool);
|
||||
client
|
||||
.execution_extensions()
|
||||
.register_transaction_pool_factory(OffchainTransactionPoolFactory::new(&pool));
|
||||
|
||||
pool
|
||||
}
|
||||
@@ -421,7 +423,7 @@ where
|
||||
|
||||
fn submit_local(
|
||||
&self,
|
||||
at: &BlockId<Self::Block>,
|
||||
at: Block::Hash,
|
||||
xt: sc_transaction_pool_api::LocalTransactionFor<Self>,
|
||||
) -> Result<Self::Hash, Self::Error> {
|
||||
use sp_runtime::{
|
||||
@@ -430,7 +432,11 @@ where
|
||||
|
||||
let validity = self
|
||||
.api
|
||||
.validate_transaction_blocking(at, TransactionSource::Local, xt.clone())?
|
||||
.validate_transaction_blocking(
|
||||
&BlockId::hash(at),
|
||||
TransactionSource::Local,
|
||||
xt.clone(),
|
||||
)?
|
||||
.map_err(|e| {
|
||||
Self::Error::Pool(match e {
|
||||
TransactionValidityError::Invalid(i) => TxPoolError::InvalidTransaction(i),
|
||||
@@ -441,7 +447,7 @@ where
|
||||
let (hash, bytes) = self.pool.validated_pool().api().hash_and_length(&xt);
|
||||
let block_number = self
|
||||
.api
|
||||
.block_id_to_number(at)?
|
||||
.block_id_to_number(&BlockId::hash(at))?
|
||||
.ok_or_else(|| error::Error::BlockIdConversion(format!("{:?}", at)))?;
|
||||
|
||||
let validated = ValidatedTransaction::valid_at(
|
||||
|
||||
Reference in New Issue
Block a user