Struct sc_transaction_pool::BasicPool
source · pub struct BasicPool<PoolApi, Block>{ /* private fields */ }
Expand description
Basic implementation of transaction pool that can be customized by providing PoolApi.
Implementations§
source§impl<PoolApi, Block> BasicPool<PoolApi, Block>
impl<PoolApi, Block> BasicPool<PoolApi, Block>
sourcepub fn new_test(
pool_api: Arc<PoolApi>,
best_block_hash: Block::Hash,
finalized_hash: Block::Hash,
options: Options,
) -> (Self, Pin<Box<dyn Future<Output = ()> + Send>>)
pub fn new_test( pool_api: Arc<PoolApi>, best_block_hash: Block::Hash, finalized_hash: Block::Hash, options: Options, ) -> (Self, Pin<Box<dyn Future<Output = ()> + Send>>)
Create new basic transaction pool with provided api, for tests.
sourcepub fn with_revalidation_type(
options: Options,
is_validator: IsValidator,
pool_api: Arc<PoolApi>,
prometheus: Option<&PrometheusRegistry>,
revalidation_type: RevalidationType,
spawner: impl SpawnEssentialNamed,
best_block_number: NumberFor<Block>,
best_block_hash: Block::Hash,
finalized_hash: Block::Hash,
) -> Self
pub fn with_revalidation_type( options: Options, is_validator: IsValidator, pool_api: Arc<PoolApi>, prometheus: Option<&PrometheusRegistry>, revalidation_type: RevalidationType, spawner: impl SpawnEssentialNamed, best_block_number: NumberFor<Block>, best_block_hash: Block::Hash, finalized_hash: Block::Hash, ) -> Self
Create new basic transaction pool with provided api and custom revalidation type.
source§impl<Block, Client> BasicPool<FullChainApi<Client, Block>, Block>where
Block: BlockT,
Client: ProvideRuntimeApi<Block> + BlockBackend<Block> + HeaderBackend<Block> + BlockIdTo<Block> + ExecutorProvider<Block> + UsageProvider<Block> + HeaderMetadata<Block, Error = Error> + Send + Sync + 'static,
Client::Api: TaggedTransactionQueue<Block>,
impl<Block, Client> BasicPool<FullChainApi<Client, Block>, Block>where
Block: BlockT,
Client: ProvideRuntimeApi<Block> + BlockBackend<Block> + HeaderBackend<Block> + BlockIdTo<Block> + ExecutorProvider<Block> + UsageProvider<Block> + HeaderMetadata<Block, Error = Error> + Send + Sync + 'static,
Client::Api: TaggedTransactionQueue<Block>,
sourcepub fn new_full(
options: Options,
is_validator: IsValidator,
prometheus: Option<&PrometheusRegistry>,
spawner: impl SpawnEssentialNamed,
client: Arc<Client>,
) -> Arc<Self>
pub fn new_full( options: Options, is_validator: IsValidator, prometheus: Option<&PrometheusRegistry>, spawner: impl SpawnEssentialNamed, client: Arc<Client>, ) -> Arc<Self>
Create new basic transaction pool for a full node with the provided api.
Trait Implementations§
source§impl<Block, Client> LocalTransactionPool for BasicPool<FullChainApi<Client, Block>, Block>where
Block: BlockT,
Client: ProvideRuntimeApi<Block> + BlockBackend<Block> + HeaderBackend<Block> + BlockIdTo<Block> + HeaderMetadata<Block, Error = Error> + Send + Sync + 'static,
Client::Api: TaggedTransactionQueue<Block>,
impl<Block, Client> LocalTransactionPool for BasicPool<FullChainApi<Client, Block>, Block>where
Block: BlockT,
Client: ProvideRuntimeApi<Block> + BlockBackend<Block> + HeaderBackend<Block> + BlockIdTo<Block> + HeaderMetadata<Block, Error = Error> + Send + Sync + 'static,
Client::Api: TaggedTransactionQueue<Block>,
§type Hash = <<FullChainApi<Client, Block> as ChainApi>::Block as Block>::Hash
type Hash = <<FullChainApi<Client, Block> as ChainApi>::Block as Block>::Hash
Transaction hash type.
§type Error = <FullChainApi<Client, Block> as ChainApi>::Error
type Error = <FullChainApi<Client, Block> as ChainApi>::Error
Error type.
source§fn submit_local(
&self,
at: Block::Hash,
xt: LocalTransactionFor<Self>,
) -> Result<Self::Hash, Self::Error>
fn submit_local( &self, at: Block::Hash, xt: LocalTransactionFor<Self>, ) -> Result<Self::Hash, Self::Error>
Submits the given local unverified transaction to the pool blocking the
current thread for any necessary pre-verification.
NOTE: It MUST NOT be used for transactions that originate from the
network or RPC, since the validation is performed with
TransactionSource::Local
.source§impl<PoolApi, Block> MaintainedTransactionPool for BasicPool<PoolApi, Block>
impl<PoolApi, Block> MaintainedTransactionPool for BasicPool<PoolApi, Block>
source§impl<PoolApi, Block> TransactionPool for BasicPool<PoolApi, Block>
impl<PoolApi, Block> TransactionPool for BasicPool<PoolApi, Block>
§type InPoolTransaction = Transaction<<BasicPool<PoolApi, Block> as TransactionPool>::Hash, <<BasicPool<PoolApi, Block> as TransactionPool>::Block as Block>::Extrinsic>
type InPoolTransaction = Transaction<<BasicPool<PoolApi, Block> as TransactionPool>::Hash, <<BasicPool<PoolApi, Block> as TransactionPool>::Block as Block>::Extrinsic>
In-pool transaction type.
source§fn submit_at(
&self,
at: <Self::Block as BlockT>::Hash,
source: TransactionSource,
xts: Vec<TransactionFor<Self>>,
) -> PoolFuture<Vec<Result<TxHash<Self>, Self::Error>>, Self::Error>
fn submit_at( &self, at: <Self::Block as BlockT>::Hash, source: TransactionSource, xts: Vec<TransactionFor<Self>>, ) -> PoolFuture<Vec<Result<TxHash<Self>, Self::Error>>, Self::Error>
Returns a future that imports a bunch of unverified transactions to the pool.
source§fn submit_one(
&self,
at: <Self::Block as BlockT>::Hash,
source: TransactionSource,
xt: TransactionFor<Self>,
) -> PoolFuture<TxHash<Self>, Self::Error>
fn submit_one( &self, at: <Self::Block as BlockT>::Hash, source: TransactionSource, xt: TransactionFor<Self>, ) -> PoolFuture<TxHash<Self>, Self::Error>
Returns a future that imports one unverified transaction to the pool.
source§fn submit_and_watch(
&self,
at: <Self::Block as BlockT>::Hash,
source: TransactionSource,
xt: TransactionFor<Self>,
) -> PoolFuture<Pin<Box<TransactionStatusStreamFor<Self>>>, Self::Error>
fn submit_and_watch( &self, at: <Self::Block as BlockT>::Hash, source: TransactionSource, xt: TransactionFor<Self>, ) -> PoolFuture<Pin<Box<TransactionStatusStreamFor<Self>>>, Self::Error>
Returns a future that import a single transaction and starts to watch their progress in the
pool.
source§fn remove_invalid(
&self,
hashes: &[TxHash<Self>],
) -> Vec<Arc<Self::InPoolTransaction>>
fn remove_invalid( &self, hashes: &[TxHash<Self>], ) -> Vec<Arc<Self::InPoolTransaction>>
Remove transactions identified by given hashes (and dependent transactions) from the pool.
source§fn status(&self) -> PoolStatus
fn status(&self) -> PoolStatus
Returns pool status.
source§fn import_notification_stream(&self) -> ImportNotificationStream<TxHash<Self>>
fn import_notification_stream(&self) -> ImportNotificationStream<TxHash<Self>>
Return an event stream of transactions imported to the pool.
source§fn hash_of(&self, xt: &TransactionFor<Self>) -> TxHash<Self>
fn hash_of(&self, xt: &TransactionFor<Self>) -> TxHash<Self>
Returns transaction hash
source§fn on_broadcasted(&self, propagations: HashMap<TxHash<Self>, Vec<String>>)
fn on_broadcasted(&self, propagations: HashMap<TxHash<Self>, Vec<String>>)
Notify the pool about transactions broadcast.
source§fn ready_transaction(
&self,
hash: &TxHash<Self>,
) -> Option<Arc<Self::InPoolTransaction>>
fn ready_transaction( &self, hash: &TxHash<Self>, ) -> Option<Arc<Self::InPoolTransaction>>
Return specific ready transaction by hash, if there is one.
source§fn ready_at(
&self,
at: NumberFor<Self::Block>,
) -> Pin<Box<dyn Future<Output = Box<dyn ReadyTransactions<Item = Arc<Transaction<<<PoolApi as ChainApi>::Block as Block>::Hash, <<PoolApi as ChainApi>::Block as Block>::Extrinsic>>> + Send>> + Send>>
fn ready_at( &self, at: NumberFor<Self::Block>, ) -> Pin<Box<dyn Future<Output = Box<dyn ReadyTransactions<Item = Arc<Transaction<<<PoolApi as ChainApi>::Block as Block>::Hash, <<PoolApi as ChainApi>::Block as Block>::Extrinsic>>> + Send>> + Send>>
Get an iterator for ready transactions ordered by priority. Read more
source§fn ready(
&self,
) -> Box<dyn ReadyTransactions<Item = Arc<Transaction<<<PoolApi as ChainApi>::Block as Block>::Hash, <<PoolApi as ChainApi>::Block as Block>::Extrinsic>>> + Send>
fn ready( &self, ) -> Box<dyn ReadyTransactions<Item = Arc<Transaction<<<PoolApi as ChainApi>::Block as Block>::Hash, <<PoolApi as ChainApi>::Block as Block>::Extrinsic>>> + Send>
Get an iterator for ready transactions ordered by priority.
source§fn futures(&self) -> Vec<Self::InPoolTransaction>
fn futures(&self) -> Vec<Self::InPoolTransaction>
Get futures transaction list.
Auto Trait Implementations§
impl<PoolApi, Block> Freeze for BasicPool<PoolApi, Block>
impl<PoolApi, Block> !RefUnwindSafe for BasicPool<PoolApi, Block>
impl<PoolApi, Block> Send for BasicPool<PoolApi, Block>
impl<PoolApi, Block> Sync for BasicPool<PoolApi, Block>
impl<PoolApi, Block> Unpin for BasicPool<PoolApi, Block>
impl<PoolApi, Block> !UnwindSafe for BasicPool<PoolApi, Block>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
Consume self to return an equivalent value of
T
. Read moresource§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
The counterpart to
unchecked_from
.source§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of
T
.