Struct sc_transaction_pool::BasicPool
source · pub struct BasicPool<PoolApi, Block>where
Block: BlockT,
PoolApi: ChainApi<Block = 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>where
Block: BlockT,
PoolApi: ChainApi<Block = Block> + 'static,
impl<PoolApi, Block> BasicPool<PoolApi, Block>where Block: BlockT, PoolApi: ChainApi<Block = Block> + 'static,
sourcepub fn new_test(
pool_api: Arc<PoolApi>,
best_block_hash: Block::Hash,
finalized_hash: Block::Hash
) -> (Self, Pin<Box<dyn Future<Output = ()> + Send>>)
pub fn new_test( pool_api: Arc<PoolApi>, best_block_hash: Block::Hash, finalized_hash: Block::Hash ) -> (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>,
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: &BlockId<Self::Block>,
xt: LocalTransactionFor<Self>
) -> Result<Self::Hash, Self::Error>
fn submit_local( &self, at: &BlockId<Self::Block>, 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>where
Block: BlockT,
PoolApi: 'static + ChainApi<Block = Block>,
impl<PoolApi, Block> MaintainedTransactionPool for BasicPool<PoolApi, Block>where Block: BlockT, PoolApi: 'static + ChainApi<Block = Block>,
source§impl<PoolApi, Block> TransactionPool for BasicPool<PoolApi, Block>where
Block: BlockT,
PoolApi: 'static + ChainApi<Block = Block>,
impl<PoolApi, Block> TransactionPool for BasicPool<PoolApi, Block>where Block: BlockT, PoolApi: 'static + ChainApi<Block = 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: &BlockId<Self::Block>,
source: TransactionSource,
xts: Vec<TransactionFor<Self>>
) -> PoolFuture<Vec<Result<TxHash<Self>, Self::Error>>, Self::Error>
fn submit_at( &self, at: &BlockId<Self::Block>, 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: &BlockId<Self::Block>,
source: TransactionSource,
xt: TransactionFor<Self>
) -> PoolFuture<TxHash<Self>, Self::Error>
fn submit_one( &self, at: &BlockId<Self::Block>, 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: &BlockId<Self::Block>,
source: TransactionSource,
xt: TransactionFor<Self>
) -> PoolFuture<Pin<Box<TransactionStatusStreamFor<Self>>>, Self::Error>
fn submit_and_watch( &self, at: &BlockId<Self::Block>, 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
Auto Trait Implementations§
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> CheckedConversion for T
impl<T> CheckedConversion for T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.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, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
impl<T, Outer> IsWrappedBy<Outer> for Twhere Outer: AsRef<T> + AsMut<T> + From<T>, T: From<Outer>,
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere Self: UniqueSaturatedFrom<T>,
§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
.§impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere T: Bounded, S: TryInto<T>,
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of
T
.