mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 07:01:05 +00:00
Pass transaction source to validate_transaction (#5366)
* WiP * Support source in the runtime API. * Finish implementation in txpool. * Fix warning. * Fix tests. * Apply suggestions from code review Co-Authored-By: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-Authored-By: Nikolay Volf <nikvolf@gmail.com> * Extra changes. * Fix test and benches. * fix test * Fix test & benches again. * Fix tests. * Update bumpalo * Fix doc test. * Fix doctest. * Fix doctest. Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
This commit is contained in:
@@ -29,5 +29,5 @@ mod pool;
|
||||
pub use pool::*;
|
||||
|
||||
pub use sp_runtime::transaction_validity::{
|
||||
TransactionLongevity, TransactionPriority, TransactionTag,
|
||||
TransactionLongevity, TransactionPriority, TransactionTag, TransactionSource,
|
||||
};
|
||||
|
||||
@@ -31,7 +31,7 @@ use sp_runtime::{
|
||||
generic::BlockId,
|
||||
traits::{Block as BlockT, Member, NumberFor},
|
||||
transaction_validity::{
|
||||
TransactionLongevity, TransactionPriority, TransactionTag,
|
||||
TransactionLongevity, TransactionPriority, TransactionTag, TransactionSource,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -192,6 +192,7 @@ pub trait TransactionPool: Send + Sync {
|
||||
fn submit_at(
|
||||
&self,
|
||||
at: &BlockId<Self::Block>,
|
||||
source: TransactionSource,
|
||||
xts: Vec<TransactionFor<Self>>,
|
||||
) -> PoolFuture<Vec<Result<TxHash<Self>, Self::Error>>, Self::Error>;
|
||||
|
||||
@@ -199,6 +200,7 @@ pub trait TransactionPool: Send + Sync {
|
||||
fn submit_one(
|
||||
&self,
|
||||
at: &BlockId<Self::Block>,
|
||||
source: TransactionSource,
|
||||
xt: TransactionFor<Self>,
|
||||
) -> PoolFuture<TxHash<Self>, Self::Error>;
|
||||
|
||||
@@ -206,6 +208,7 @@ pub trait TransactionPool: Send + Sync {
|
||||
fn submit_and_watch(
|
||||
&self,
|
||||
at: &BlockId<Self::Block>,
|
||||
source: TransactionSource,
|
||||
xt: TransactionFor<Self>,
|
||||
) -> PoolFuture<Box<TransactionStatusStreamFor<Self>>, Self::Error>;
|
||||
|
||||
@@ -299,7 +302,9 @@ impl<TPool: TransactionPool> OffchainSubmitTransaction<TPool::Block> for TPool {
|
||||
extrinsic
|
||||
);
|
||||
|
||||
let result = futures::executor::block_on(self.submit_one(&at, extrinsic));
|
||||
let result = futures::executor::block_on(self.submit_one(
|
||||
&at, TransactionSource::Local, extrinsic,
|
||||
));
|
||||
|
||||
result.map(|_| ())
|
||||
.map_err(|e| log::warn!(
|
||||
|
||||
@@ -16,13 +16,27 @@
|
||||
|
||||
//! Tagged Transaction Queue Runtime API.
|
||||
|
||||
use sp_runtime::transaction_validity::TransactionValidity;
|
||||
use sp_runtime::transaction_validity::{TransactionValidity, TransactionSource};
|
||||
use sp_runtime::traits::Block as BlockT;
|
||||
|
||||
sp_api::decl_runtime_apis! {
|
||||
/// The `TaggedTransactionQueue` api trait for interfering with the transaction queue.
|
||||
#[api_version(2)]
|
||||
pub trait TaggedTransactionQueue {
|
||||
/// Validate the given transaction.
|
||||
/// Validate the transaction.
|
||||
#[changed_in(2)]
|
||||
fn validate_transaction(tx: <Block as BlockT>::Extrinsic) -> TransactionValidity;
|
||||
|
||||
/// Validate the transaction.
|
||||
///
|
||||
/// This method is invoked by the transaction pool to learn details about given transaction.
|
||||
/// The implementation should make sure to verify the correctness of the transaction
|
||||
/// against current state.
|
||||
/// Note that this call may be performed by the pool multiple times and transactions
|
||||
/// might be verified in any possible order.
|
||||
fn validate_transaction(
|
||||
source: TransactionSource,
|
||||
tx: <Block as BlockT>::Extrinsic,
|
||||
) -> TransactionValidity;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user