From bc641da005ca39134af36f0ba4ff3165763825be Mon Sep 17 00:00:00 2001 From: Seun Lanlege Date: Mon, 28 Jun 2021 16:53:43 +0100 Subject: [PATCH 01/11] Use TransactionPool trait --- client/consensus/manual-seal/src/lib.rs | 31 +++++++++---------- .../consensus/manual-seal/src/seal_block.rs | 10 +++--- test-utils/test-runner/src/node.rs | 2 +- 3 files changed, 21 insertions(+), 22 deletions(-) diff --git a/client/consensus/manual-seal/src/lib.rs b/client/consensus/manual-seal/src/lib.rs index 2473ac848ca32..0a007835a349c 100644 --- a/client/consensus/manual-seal/src/lib.rs +++ b/client/consensus/manual-seal/src/lib.rs @@ -29,7 +29,6 @@ use sp_blockchain::HeaderBackend; use sp_inherents::CreateInherentDataProviders; use sp_runtime::{traits::Block as BlockT, Justifications, ConsensusEngineId}; use sc_client_api::backend::{Backend as ClientBackend, Finalizer}; -use sc_transaction_pool::txpool; use std::{sync::Arc, marker::PhantomData}; use prometheus_endpoint::Registry; @@ -48,6 +47,7 @@ pub use self::{ rpc::{EngineCommand, CreatedBlock}, }; use sp_api::{ProvideRuntimeApi, TransactionFor}; +use sp_transaction_pool::TransactionPool; /// The `ConsensusEngineId` of Manual Seal. pub const MANUAL_SEAL_ENGINE_ID: ConsensusEngineId = [b'm', b'a', b'n', b'l']; @@ -94,7 +94,7 @@ pub fn import_queue( } /// Params required to start the instant sealing authorship task. -pub struct ManualSealParams, A: txpool::ChainApi, SC, CS, CIDP> { +pub struct ManualSealParams, P, SC, CS, CIDP> { /// Block import instance for well. importing blocks. pub block_import: BI, @@ -105,7 +105,7 @@ pub struct ManualSealParams, A: txpool pub client: Arc, /// Shared reference to the transaction pool. - pub pool: Arc>, + pub pool: Arc

, /// Stream, Basically the receiving end of a channel for sending commands to /// the authorship task. @@ -122,7 +122,7 @@ pub struct ManualSealParams, A: txpool } /// Params required to start the manual sealing authorship task. -pub struct InstantSealParams, A: txpool::ChainApi, SC, CIDP> { +pub struct InstantSealParams, P, SC, CIDP> { /// Block import instance for well. importing blocks. pub block_import: BI, @@ -133,7 +133,7 @@ pub struct InstantSealParams, A: txpoo pub client: Arc, /// Shared reference to the transaction pool. - pub pool: Arc>, + pub pool: Arc

, /// SelectChain strategy. pub select_chain: SC, @@ -146,7 +146,7 @@ pub struct InstantSealParams, A: txpoo } /// Creates the background authorship task for the manual seal engine. -pub async fn run_manual_seal( +pub async fn run_manual_seal( ManualSealParams { mut block_import, mut env, @@ -156,10 +156,9 @@ pub async fn run_manual_seal( select_chain, consensus_data_provider, create_inherent_data_providers, - }: ManualSealParams + }: ManualSealParams ) where - A: txpool::ChainApi + 'static, B: BlockT + 'static, BI: BlockImport> + Send + Sync + 'static, @@ -170,6 +169,7 @@ pub async fn run_manual_seal( CS: Stream::Hash>> + Unpin + 'static, SC: SelectChain + 'static, TransactionFor: 'static, + P: TransactionPool, CIDP: CreateInherentDataProviders, { while let Some(command) = commands_stream.next().await { @@ -215,7 +215,7 @@ pub async fn run_manual_seal( /// runs the background authorship task for the instant seal engine. /// instant-seal creates a new block for every transaction imported into /// the transaction pool. -pub async fn run_instant_seal( +pub async fn run_instant_seal( InstantSealParams { block_import, env, @@ -224,10 +224,9 @@ pub async fn run_instant_seal( select_chain, consensus_data_provider, create_inherent_data_providers, - }: InstantSealParams + }: InstantSealParams ) where - A: txpool::ChainApi + 'static, B: BlockT + 'static, BI: BlockImport> + Send + Sync + 'static, @@ -237,12 +236,12 @@ pub async fn run_instant_seal( E::Proposer: Proposer>, SC: SelectChain + 'static, TransactionFor: 'static, + P: TransactionPool, CIDP: CreateInherentDataProviders, { // instant-seal creates blocks as soon as transactions are imported // into the transaction pool. - let commands_stream = pool.validated_pool() - .import_notification_stream() + let commands_stream = pool.import_notification_stream() .map(|_| { EngineCommand::SealNewBlock { create_empty: false, @@ -331,7 +330,7 @@ mod tests { block_import: client.clone(), env, client: client.clone(), - pool: pool.pool().clone(), + pool: pool.clone(), commands_stream, select_chain, create_inherent_data_providers: |_, _| async { Ok(()) }, @@ -395,7 +394,7 @@ mod tests { block_import: client.clone(), env, client: client.clone(), - pool: pool.pool().clone(), + pool: pool.clone(), commands_stream, select_chain, consensus_data_provider: None, @@ -476,7 +475,7 @@ mod tests { block_import: client.clone(), env, client: client.clone(), - pool: pool.pool().clone(), + pool: pool.clone(), commands_stream, select_chain, consensus_data_provider: None, diff --git a/client/consensus/manual-seal/src/seal_block.rs b/client/consensus/manual-seal/src/seal_block.rs index 89da02ac49612..20099902e2c77 100644 --- a/client/consensus/manual-seal/src/seal_block.rs +++ b/client/consensus/manual-seal/src/seal_block.rs @@ -25,7 +25,6 @@ use sp_runtime::{ generic::BlockId, }; use futures::prelude::*; -use sc_transaction_pool::txpool; use sp_consensus::{ self, BlockImport, Environment, Proposer, ForkChoiceStrategy, BlockImportParams, BlockOrigin, ImportResult, SelectChain, StateAction, @@ -35,12 +34,13 @@ use std::collections::HashMap; use std::time::Duration; use sp_inherents::{CreateInherentDataProviders, InherentDataProvider}; use sp_api::{ProvideRuntimeApi, TransactionFor}; +use sp_transaction_pool::TransactionPool; /// max duration for creating a proposal in secs pub const MAX_PROPOSAL_DURATION: u64 = 10; /// params for sealing a new block -pub struct SealBlockParams<'a, B: BlockT, BI, SC, C: ProvideRuntimeApi, E, P: txpool::ChainApi, CIDP> { +pub struct SealBlockParams<'a, B: BlockT, BI, SC, C: ProvideRuntimeApi, E, P, CIDP> { /// if true, empty blocks(without extrinsics) will be created. /// otherwise, will return Error::EmptyTransactionPool. pub create_empty: bool, @@ -51,7 +51,7 @@ pub struct SealBlockParams<'a, B: BlockT, BI, SC, C: ProvideRuntimeApi, E, P: /// sender to report errors/success to the rpc. pub sender: rpc::Sender::Hash>>, /// transaction pool - pub pool: Arc>, + pub pool: Arc

, /// header backend pub client: Arc, /// Environment trait object for creating a proposer @@ -90,13 +90,13 @@ pub async fn seal_block( C: HeaderBackend + ProvideRuntimeApi, E: Environment, E::Proposer: Proposer>, - P: txpool::ChainApi, + P: TransactionPool, SC: SelectChain, TransactionFor: 'static, CIDP: CreateInherentDataProviders, { let future = async { - if pool.validated_pool().status().ready == 0 && !create_empty { + if pool.status().ready == 0 && !create_empty { return Err(Error::EmptyTransactionPool); } diff --git a/test-utils/test-runner/src/node.rs b/test-utils/test-runner/src/node.rs index 00be12b651bcc..28a0f07294c70 100644 --- a/test-utils/test-runner/src/node.rs +++ b/test-utils/test-runner/src/node.rs @@ -193,7 +193,7 @@ impl Node { block_import, env, client: client.clone(), - pool: transaction_pool.pool().clone(), + pool: transaction_pool.clone(), commands_stream, select_chain, consensus_data_provider, From 07a9a13e40e309ad841f21856abc387fef308f99 Mon Sep 17 00:00:00 2001 From: Seun Lanlege Date: Wed, 30 Jun 2021 09:03:19 +0100 Subject: [PATCH 02/11] sc-transaction-pool-primitives --- Cargo.lock | 54 +++++++++++-------- Cargo.toml | 1 + bin/node-template/node/Cargo.toml | 2 +- bin/node-template/node/src/rpc.rs | 2 +- bin/node/bench/Cargo.toml | 2 +- bin/node/bench/src/construct.rs | 8 +-- bin/node/bench/src/txpool.rs | 2 +- bin/node/cli/Cargo.toml | 2 +- bin/node/cli/src/service.rs | 2 +- bin/node/rpc/Cargo.toml | 2 +- bin/node/rpc/src/lib.rs | 2 +- client/api/Cargo.toml | 2 +- client/api/src/client.rs | 5 +- client/api/src/execution_extensions.rs | 7 +-- client/basic-authorship/Cargo.toml | 2 +- .../basic-authorship/src/basic_authorship.rs | 4 +- client/consensus/manual-seal/Cargo.toml | 2 +- client/consensus/manual-seal/src/lib.rs | 6 +-- .../consensus/manual-seal/src/seal_block.rs | 2 +- client/informant/Cargo.toml | 2 +- client/informant/src/lib.rs | 2 +- client/offchain/Cargo.toml | 2 +- client/offchain/src/lib.rs | 6 +-- client/rpc-api/Cargo.toml | 2 +- client/rpc-api/src/author/error.rs | 4 +- client/rpc-api/src/author/mod.rs | 4 +- client/rpc/Cargo.toml | 2 +- client/rpc/src/author/mod.rs | 2 +- client/service/Cargo.toml | 1 + client/service/src/builder.rs | 2 +- client/service/src/lib.rs | 10 ++-- client/service/src/metrics.rs | 2 +- client/service/test/Cargo.toml | 2 +- client/service/test/src/lib.rs | 4 +- client/transaction-pool/Cargo.toml | 1 + client/transaction-pool/graph/Cargo.toml | 2 +- .../transaction-pool/graph/benches/basics.rs | 6 +-- .../transaction-pool/graph/src/base_pool.rs | 2 +- client/transaction-pool/graph/src/pool.rs | 4 +- client/transaction-pool/graph/src/ready.rs | 2 +- .../graph/src/validated_pool.rs | 2 +- client/transaction-pool/graph/src/watcher.rs | 2 +- client/transaction-pool/primitives/Cargo.toml | 21 ++++++++ .../transaction-pool/primitives}/src/error.rs | 0 .../transaction-pool/primitives/src/lib.rs | 8 +-- client/transaction-pool/src/error.rs | 4 +- client/transaction-pool/src/lib.rs | 6 +-- client/transaction-pool/src/revalidation.rs | 2 +- client/transaction-pool/src/testing/pool.rs | 4 +- docs/Upgrading-2.0-to-3.0.md | 4 +- primitives/transaction-pool/Cargo.toml | 14 ----- primitives/transaction-pool/src/lib.rs | 7 --- .../runtime/transaction-pool/Cargo.toml | 2 +- .../runtime/transaction-pool/src/lib.rs | 6 +-- test-utils/test-runner/Cargo.toml | 1 + test-utils/test-runner/src/node.rs | 2 +- utils/frame/rpc/system/Cargo.toml | 2 +- utils/frame/rpc/system/src/lib.rs | 2 +- 58 files changed, 140 insertions(+), 122 deletions(-) create mode 100644 client/transaction-pool/primitives/Cargo.toml rename {primitives/transaction-pool => client/transaction-pool/primitives}/src/error.rs (100%) rename primitives/transaction-pool/src/pool.rs => client/transaction-pool/primitives/src/lib.rs (98%) diff --git a/Cargo.lock b/Cargo.lock index ee78c31645b43..7d82448e05119 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4131,6 +4131,7 @@ dependencies = [ "sc-cli", "sc-client-api", "sc-transaction-pool", + "sc-transaction-pool-primitives", "serde", "serde_json", "sp-consensus", @@ -4140,7 +4141,6 @@ dependencies = [ "sp-state-machine", "sp-timestamp", "sp-tracing", - "sp-transaction-pool", "sp-trie", "structopt", "tempfile", @@ -4218,6 +4218,7 @@ dependencies = [ "sc-telemetry", "sc-tracing", "sc-transaction-pool", + "sc-transaction-pool-primitives", "serde", "serde_json", "soketto 0.4.2", @@ -4233,7 +4234,6 @@ dependencies = [ "sp-keystore", "sp-runtime", "sp-timestamp", - "sp-transaction-pool", "sp-trie", "structopt", "substrate-browser-utils", @@ -4331,6 +4331,7 @@ dependencies = [ "sc-rpc", "sc-rpc-api", "sc-sync-state-rpc", + "sc-transaction-pool-primitives", "sp-api", "sp-block-builder", "sp-blockchain", @@ -4338,7 +4339,6 @@ dependencies = [ "sp-consensus-babe", "sp-keystore", "sp-runtime", - "sp-transaction-pool", "substrate-frame-rpc-system", ] @@ -4457,6 +4457,7 @@ dependencies = [ "sc-service", "sc-telemetry", "sc-transaction-pool", + "sc-transaction-pool-primitives", "sp-api", "sp-block-builder", "sp-blockchain", @@ -4467,7 +4468,6 @@ dependencies = [ "sp-inherents", "sp-runtime", "sp-timestamp", - "sp-transaction-pool", "structopt", "substrate-build-script-utils", "substrate-frame-rpc-system", @@ -7037,13 +7037,13 @@ dependencies = [ "sc-proposer-metrics", "sc-telemetry", "sc-transaction-pool", + "sc-transaction-pool-primitives", "sp-api", "sp-blockchain", "sp-consensus", "sp-core", "sp-inherents", "sp-runtime", - "sp-transaction-pool", "substrate-prometheus-endpoint", "substrate-test-runtime-client", ] @@ -7148,6 +7148,7 @@ dependencies = [ "parity-scale-codec", "parking_lot 0.11.1", "sc-executor", + "sc-transaction-pool-primitives", "sp-api", "sp-blockchain", "sp-consensus", @@ -7161,7 +7162,6 @@ dependencies = [ "sp-std", "sp-storage", "sp-test-primitives", - "sp-transaction-pool", "sp-trie", "sp-utils", "sp-version", @@ -7374,6 +7374,7 @@ dependencies = [ "sc-consensus-babe", "sc-consensus-epochs", "sc-transaction-pool", + "sc-transaction-pool-primitives", "serde", "sp-api", "sp-blockchain", @@ -7386,7 +7387,6 @@ dependencies = [ "sp-keystore", "sp-runtime", "sp-timestamp", - "sp-transaction-pool", "substrate-prometheus-endpoint", "substrate-test-runtime-client", "substrate-test-runtime-transaction-pool", @@ -7661,9 +7661,9 @@ dependencies = [ "parity-util-mem", "sc-client-api", "sc-network", + "sc-transaction-pool-primitives", "sp-blockchain", "sp-runtime", - "sp-transaction-pool", "wasm-timer", ] @@ -7836,13 +7836,13 @@ dependencies = [ "sc-keystore", "sc-network", "sc-transaction-pool", + "sc-transaction-pool-primitives", "sp-api", "sp-consensus", "sp-core", "sp-offchain", "sp-runtime", "sp-tracing", - "sp-transaction-pool", "sp-utils", "substrate-test-runtime-client", "threadpool", @@ -7893,6 +7893,7 @@ dependencies = [ "sc-rpc-api", "sc-tracing", "sc-transaction-pool", + "sc-transaction-pool-primitives", "serde_json", "sp-api", "sp-blockchain", @@ -7906,7 +7907,6 @@ dependencies = [ "sp-session", "sp-state-machine", "sp-tracing", - "sp-transaction-pool", "sp-utils", "sp-version", "substrate-test-runtime-client", @@ -7926,6 +7926,7 @@ dependencies = [ "log", "parity-scale-codec", "parking_lot 0.11.1", + "sc-transaction-pool-primitives", "serde", "serde_json", "sp-chain-spec", @@ -7933,7 +7934,6 @@ dependencies = [ "sp-rpc", "sp-runtime", "sp-tracing", - "sp-transaction-pool", "sp-version", ] @@ -8005,6 +8005,7 @@ dependencies = [ "sc-telemetry", "sc-tracing", "sc-transaction-pool", + "sc-transaction-pool-primitives", "serde", "serde_json", "sp-api", @@ -8058,6 +8059,7 @@ dependencies = [ "sc-light", "sc-network", "sc-service", + "sc-transaction-pool-primitives", "sp-api", "sp-blockchain", "sp-consensus", @@ -8068,7 +8070,6 @@ dependencies = [ "sp-state-machine", "sp-storage", "sp-tracing", - "sp-transaction-pool", "sp-trie", "substrate-test-runtime", "substrate-test-runtime-client", @@ -8188,11 +8189,11 @@ dependencies = [ "parity-util-mem", "parking_lot 0.11.1", "retain_mut", + "sc-transaction-pool-primitives", "serde", "sp-blockchain", "sp-core", "sp-runtime", - "sp-transaction-pool", "sp-utils", "substrate-test-runtime", "thiserror", @@ -8214,6 +8215,7 @@ dependencies = [ "sc-block-builder", "sc-client-api", "sc-transaction-graph", + "sc-transaction-pool-primitives", "sp-api", "sp-blockchain", "sp-consensus", @@ -8230,6 +8232,20 @@ dependencies = [ "wasm-timer", ] +[[package]] +name = "sc-transaction-pool-primitives" +version = "3.0.0" +dependencies = [ + "derive_more", + "futures 0.3.15", + "log", + "parity-scale-codec", + "serde", + "sp-blockchain", + "sp-runtime", + "thiserror", +] + [[package]] name = "schannel" version = "0.1.19" @@ -9413,15 +9429,8 @@ dependencies = [ name = "sp-transaction-pool" version = "3.0.0" dependencies = [ - "derive_more", - "futures 0.3.15", - "log", - "parity-scale-codec", - "serde", "sp-api", - "sp-blockchain", "sp-runtime", - "thiserror", ] [[package]] @@ -9693,6 +9702,7 @@ dependencies = [ "sc-client-api", "sc-rpc-api", "sc-transaction-pool", + "sc-transaction-pool-primitives", "serde", "sp-api", "sp-block-builder", @@ -9700,7 +9710,6 @@ dependencies = [ "sp-core", "sp-runtime", "sp-tracing", - "sp-transaction-pool", "substrate-test-runtime-client", ] @@ -9818,9 +9827,9 @@ dependencies = [ "parity-scale-codec", "parking_lot 0.11.1", "sc-transaction-graph", + "sc-transaction-pool-primitives", "sp-blockchain", "sp-runtime", - "sp-transaction-pool", "substrate-test-runtime-client", ] @@ -9965,6 +9974,7 @@ dependencies = [ "sc-service", "sc-transaction-graph", "sc-transaction-pool", + "sc-transaction-pool-primitives", "sp-api", "sp-block-builder", "sp-blockchain", diff --git a/Cargo.toml b/Cargo.toml index f7552f0bbbc48..f86e78ff56dc6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -62,6 +62,7 @@ members = [ "client/tracing/proc-macro", "client/transaction-pool", "client/transaction-pool/graph", + "client/transaction-pool/primitives", "frame/assets", "frame/atomic-swap", "frame/aura", diff --git a/bin/node-template/node/Cargo.toml b/bin/node-template/node/Cargo.toml index d45241362fd2f..435d3d9eaf9a4 100644 --- a/bin/node-template/node/Cargo.toml +++ b/bin/node-template/node/Cargo.toml @@ -26,7 +26,7 @@ sc-telemetry = { version = "3.0.0", path = "../../../client/telemetry" } sc-keystore = { version = "3.0.0", path = "../../../client/keystore" } sp-inherents = { version = "3.0.0", path = "../../../primitives/inherents" } sc-transaction-pool = { version = "3.0.0", path = "../../../client/transaction-pool" } -sp-transaction-pool = { version = "3.0.0", path = "../../../primitives/transaction-pool" } +sc-transaction-pool-primitives = { version = "3.0.0", path = "../../../client/transaction-pool/primitives" } sc-consensus-aura = { version = "0.9.0", path = "../../../client/consensus/aura" } sp-consensus-aura = { version = "0.9.0", path = "../../../primitives/consensus/aura" } sp-consensus = { version = "0.9.0", path = "../../../primitives/consensus/common" } diff --git a/bin/node-template/node/src/rpc.rs b/bin/node-template/node/src/rpc.rs index c1f0e0a8457bc..0a195f627cc53 100644 --- a/bin/node-template/node/src/rpc.rs +++ b/bin/node-template/node/src/rpc.rs @@ -12,7 +12,7 @@ use sp_api::ProvideRuntimeApi; use sp_blockchain::{Error as BlockChainError, HeaderMetadata, HeaderBackend}; use sp_block_builder::BlockBuilder; pub use sc_rpc_api::DenyUnsafe; -use sp_transaction_pool::TransactionPool; +use sc_transaction_pool_primitives::TransactionPool; /// Full client dependencies. diff --git a/bin/node/bench/Cargo.toml b/bin/node/bench/Cargo.toml index 93ee35d98f98d..24c6d48ad5f82 100644 --- a/bin/node/bench/Cargo.toml +++ b/bin/node/bench/Cargo.toml @@ -26,7 +26,6 @@ kvdb-rocksdb = "0.11.0" sp-trie = { version = "3.0.0", path = "../../../primitives/trie" } sp-core = { version = "3.0.0", path = "../../../primitives/core" } sp-consensus = { version = "0.9.0", path = "../../../primitives/consensus/common" } -sp-transaction-pool = { version = "3.0.0", path = "../../../primitives/transaction-pool" } sc-basic-authorship = { version = "0.9.0", path = "../../../client/basic-authorship" } sp-inherents = { version = "3.0.0", path = "../../../primitives/inherents" } sp-timestamp = { version = "3.0.0", default-features = false, path = "../../../primitives/timestamp" } @@ -40,4 +39,5 @@ lazy_static = "1.4.0" parity-util-mem = { version = "0.9.0", default-features = false, features = ["primitive-types"] } parity-db = { version = "0.2.4" } sc-transaction-pool = { version = "3.0.0", path = "../../../client/transaction-pool" } +sc-transaction-pool-primitives = { version = "3.0.0", path = "../../../client/transaction-pool/primitives" } futures = { version = "0.3.4", features = ["thread-pool"] } diff --git a/bin/node/bench/src/construct.rs b/bin/node/bench/src/construct.rs index 3dce8966f7a1d..f431a29e998d5 100644 --- a/bin/node/bench/src/construct.rs +++ b/bin/node/bench/src/construct.rs @@ -39,7 +39,7 @@ use sp_runtime::{ traits::NumberFor, OpaqueExtrinsic, }; -use sp_transaction_pool::{ +use sc_transaction_pool_primitives::{ ImportNotificationStream, PoolFuture, PoolStatus, @@ -198,7 +198,7 @@ impl From for PoolTransaction { } } -impl sp_transaction_pool::InPoolTransaction for PoolTransaction { +impl sc_transaction_pool_primitives::InPoolTransaction for PoolTransaction { type Transaction = OpaqueExtrinsic; type Hash = node_primitives::Hash; @@ -224,11 +224,11 @@ impl sp_transaction_pool::InPoolTransaction for PoolTransaction { #[derive(Clone, Debug)] pub struct Transactions(Vec>); -impl sp_transaction_pool::TransactionPool for Transactions { +impl sc_transaction_pool_primitives::TransactionPool for Transactions { type Block = Block; type Hash = node_primitives::Hash; type InPoolTransaction = PoolTransaction; - type Error = sp_transaction_pool::error::Error; + type Error = sc_transaction_pool_primitives::error::Error; /// Returns a future that imports a bunch of unverified transactions to the pool. fn submit_at( diff --git a/bin/node/bench/src/txpool.rs b/bin/node/bench/src/txpool.rs index b3646a92e032a..51aaebf035457 100644 --- a/bin/node/bench/src/txpool.rs +++ b/bin/node/bench/src/txpool.rs @@ -27,7 +27,7 @@ use node_testing::bench::{BenchDb, Profile, BlockType, KeyTypes, DatabaseType}; use sc_transaction_pool::BasicPool; use sp_runtime::generic::BlockId; -use sp_transaction_pool::{TransactionPool, TransactionSource}; +use sc_transaction_pool_primitives::{TransactionPool, TransactionSource}; use crate::core::{self, Path, Mode}; diff --git a/bin/node/cli/Cargo.toml b/bin/node/cli/Cargo.toml index 9fcd0875e8dca..a25ad24506d3a 100644 --- a/bin/node/cli/Cargo.toml +++ b/bin/node/cli/Cargo.toml @@ -56,13 +56,13 @@ sp-keyring = { version = "3.0.0", path = "../../../primitives/keyring" } sp-keystore = { version = "0.9.0", path = "../../../primitives/keystore" } sp-io = { version = "3.0.0", path = "../../../primitives/io" } sp-consensus = { version = "0.9.0", path = "../../../primitives/consensus/common" } -sp-transaction-pool = { version = "3.0.0", path = "../../../primitives/transaction-pool" } # client dependencies sc-client-api = { version = "3.0.0", path = "../../../client/api" } sc-chain-spec = { version = "3.0.0", path = "../../../client/chain-spec" } sc-consensus = { version = "0.9.0", path = "../../../client/consensus/common" } sc-transaction-pool = { version = "3.0.0", path = "../../../client/transaction-pool" } +sc-transaction-pool-primitives = { version = "3.0.0", path = "../../../client/transaction-pool/primitives" } sc-network = { version = "0.9.0", path = "../../../client/network" } sc-consensus-slots = { version = "0.9.0", path = "../../../client/consensus/slots" } sc-consensus-babe = { version = "0.9.0", path = "../../../client/consensus/babe" } diff --git a/bin/node/cli/src/service.rs b/bin/node/cli/src/service.rs index 8fa3d2ed77ceb..1c78af081037a 100644 --- a/bin/node/cli/src/service.rs +++ b/bin/node/cli/src/service.rs @@ -628,7 +628,7 @@ mod tests { use sc_service_test::TestNetNode; use crate::service::{new_full_base, new_light_base, NewFullBase}; use sp_runtime::{key_types::BABE, traits::IdentifyAccount, RuntimeAppPublic}; - use sp_transaction_pool::{MaintainedTransactionPool, ChainEvent}; + use sc_transaction_pool_primitives::{MaintainedTransactionPool, ChainEvent}; use sc_client_api::BlockBackend; use sc_keystore::LocalKeystore; use sp_inherents::InherentDataProvider; diff --git a/bin/node/rpc/Cargo.toml b/bin/node/rpc/Cargo.toml index fc1701d1856f8..9cb58818c4bb5 100644 --- a/bin/node/rpc/Cargo.toml +++ b/bin/node/rpc/Cargo.toml @@ -34,5 +34,5 @@ sp-keystore = { version = "0.9.0", path = "../../../primitives/keystore" } sp-consensus = { version = "0.9.0", path = "../../../primitives/consensus/common" } sp-consensus-babe = { version = "0.9.0", path = "../../../primitives/consensus/babe" } sp-runtime = { version = "3.0.0", path = "../../../primitives/runtime" } -sp-transaction-pool = { version = "3.0.0", path = "../../../primitives/transaction-pool" } +sc-transaction-pool-primitives = { version = "3.0.0", path = "../../../client/transaction-pool/primitives" } substrate-frame-rpc-system = { version = "3.0.0", path = "../../../utils/frame/rpc/system" } diff --git a/bin/node/rpc/src/lib.rs b/bin/node/rpc/src/lib.rs index 885ecdd42f111..43a5df0bb38c2 100644 --- a/bin/node/rpc/src/lib.rs +++ b/bin/node/rpc/src/lib.rs @@ -48,7 +48,7 @@ use sp_blockchain::{Error as BlockChainError, HeaderMetadata, HeaderBackend}; use sp_consensus::SelectChain; use sp_consensus_babe::BabeApi; use sc_rpc::SubscriptionTaskExecutor; -use sp_transaction_pool::TransactionPool; +use sc_transaction_pool_primitives::TransactionPool; use sc_client_api::AuxStore; /// Light client extra dependencies. diff --git a/client/api/Cargo.toml b/client/api/Cargo.toml index 637dae4a29abd..e8d8fd6634f0b 100644 --- a/client/api/Cargo.toml +++ b/client/api/Cargo.toml @@ -39,7 +39,7 @@ sp-runtime = { version = "3.0.0", default-features = false, path = "../../primit sp-state-machine = { version = "0.9.0", path = "../../primitives/state-machine" } sp-trie = { version = "3.0.0", path = "../../primitives/trie" } sp-storage = { version = "3.0.0", path = "../../primitives/storage" } -sp-transaction-pool = { version = "3.0.0", path = "../../primitives/transaction-pool" } +sc-transaction-pool-primitives = { version = "3.0.0", path = "../transaction-pool/primitives" } prometheus-endpoint = { package = "substrate-prometheus-endpoint", version = "0.9.0", path = "../../utils/prometheus" } [dev-dependencies] diff --git a/client/api/src/client.rs b/client/api/src/client.rs index 79fb4f8844319..fb74015af5b45 100644 --- a/client/api/src/client.rs +++ b/client/api/src/client.rs @@ -31,6 +31,7 @@ use crate::blockchain::Info; use crate::notifications::StorageEventStream; use sp_utils::mpsc::TracingUnboundedReceiver; use sp_blockchain; +use sc_transaction_pool_primitives::ChainEvent; /// Type that implements `futures::Stream` of block import events. pub type ImportNotifications = TracingUnboundedReceiver>; @@ -278,7 +279,7 @@ pub struct FinalityNotification { pub header: Block::Header, } -impl TryFrom> for sp_transaction_pool::ChainEvent { +impl TryFrom> for ChainEvent { type Error = (); fn try_from(n: BlockImportNotification) -> Result { @@ -293,7 +294,7 @@ impl TryFrom> for sp_transaction_pool::Cha } } -impl From> for sp_transaction_pool::ChainEvent { +impl From> for ChainEvent { fn from(n: FinalityNotification) -> Self { Self::Finalized { hash: n.hash, diff --git a/client/api/src/execution_extensions.rs b/client/api/src/execution_extensions.rs index e6a7fb306e77b..6f068a4dae230 100644 --- a/client/api/src/execution_extensions.rs +++ b/client/api/src/execution_extensions.rs @@ -37,6 +37,7 @@ use sp_state_machine::{ExecutionManager, DefaultHandler}; pub use sp_state_machine::ExecutionStrategy; use sp_externalities::Extensions; use parking_lot::RwLock; +use sc_transaction_pool_primitives::OffchainSubmitTransaction; /// Execution strategies settings. #[derive(Debug, Clone)] @@ -104,7 +105,7 @@ pub struct ExecutionExtensions { // extension to be a `Weak` reference. // That's also the reason why it's being registered lazily instead of // during initialization. - transaction_pool: RwLock>>>, + transaction_pool: RwLock>>>, extensions_factory: RwLock>, } @@ -150,7 +151,7 @@ impl ExecutionExtensions { /// Register transaction pool extension. pub fn register_transaction_pool(&self, pool: &Arc) - where T: sp_transaction_pool::OffchainSubmitTransaction + 'static + where T: OffchainSubmitTransaction + 'static { *self.transaction_pool.write() = Some(Arc::downgrade(&pool) as _); } @@ -235,7 +236,7 @@ impl ExecutionExtensions { /// A wrapper type to pass `BlockId` to the actual transaction pool. struct TransactionPoolAdapter { at: BlockId, - pool: Arc>, + pool: Arc>, } impl offchain::TransactionPool for TransactionPoolAdapter { diff --git a/client/basic-authorship/Cargo.toml b/client/basic-authorship/Cargo.toml index 2047c85b0c872..b7439a44735c1 100644 --- a/client/basic-authorship/Cargo.toml +++ b/client/basic-authorship/Cargo.toml @@ -26,7 +26,7 @@ sc-client-api = { version = "3.0.0", path = "../api" } sp-consensus = { version = "0.9.0", path = "../../primitives/consensus/common" } sp-inherents = { version = "3.0.0", path = "../../primitives/inherents" } sc-telemetry = { version = "3.0.0", path = "../telemetry" } -sp-transaction-pool = { version = "3.0.0", path = "../../primitives/transaction-pool" } +sc-transaction-pool-primitives = { version = "3.0.0", path = "../../client/transaction-pool/primitives" } sc-block-builder = { version = "0.9.0", path = "../block-builder" } sc-proposer-metrics = { version = "0.9.0", path = "../proposer-metrics" } diff --git a/client/basic-authorship/src/basic_authorship.rs b/client/basic-authorship/src/basic_authorship.rs index 36e649fb8ed5c..5f06c0a3831ea 100644 --- a/client/basic-authorship/src/basic_authorship.rs +++ b/client/basic-authorship/src/basic_authorship.rs @@ -31,7 +31,7 @@ use sp_runtime::{ generic::BlockId, traits::{Block as BlockT, Hash as HashT, Header as HeaderT, DigestFor, BlakeTwo256}, }; -use sp_transaction_pool::{TransactionPool, InPoolTransaction}; +use sc_transaction_pool_primitives::{TransactionPool, InPoolTransaction}; use sc_telemetry::{telemetry, TelemetryHandle, CONSENSUS_INFO}; use sc_block_builder::{BlockBuilderApi, BlockBuilderProvider}; use sp_api::{ProvideRuntimeApi, ApiExt}; @@ -472,7 +472,7 @@ mod tests { use substrate_test_runtime_client::{ prelude::*, TestClientBuilder, runtime::{Extrinsic, Transfer}, TestClientBuilderExt, }; - use sp_transaction_pool::{ChainEvent, MaintainedTransactionPool, TransactionSource}; + use sc_transaction_pool_primitives::{ChainEvent, MaintainedTransactionPool, TransactionSource}; use sc_transaction_pool::BasicPool; use sp_api::Core; use sp_blockchain::HeaderBackend; diff --git a/client/consensus/manual-seal/Cargo.toml b/client/consensus/manual-seal/Cargo.toml index 32cc89034fb1d..4892349f9e217 100644 --- a/client/consensus/manual-seal/Cargo.toml +++ b/client/consensus/manual-seal/Cargo.toml @@ -40,7 +40,7 @@ sp-core = { path = "../../../primitives/core", version = "3.0.0"} sp-keystore = { path = "../../../primitives/keystore", version = "0.9.0"} sp-keyring = { path = "../../../primitives/keyring", version = "3.0.0"} sp-api = { path = "../../../primitives/api", version = "3.0.0"} -sp-transaction-pool = { path = "../../../primitives/transaction-pool", version = "3.0.0"} +sc-transaction-pool-primitives = { path = "../../../client/transaction-pool/primitives", version = "3.0.0"} sp-timestamp = { path = "../../../primitives/timestamp", version = "3.0.0"} prometheus-endpoint = { package = "substrate-prometheus-endpoint", path = "../../../utils/prometheus", version = "0.9.0"} diff --git a/client/consensus/manual-seal/src/lib.rs b/client/consensus/manual-seal/src/lib.rs index f2958e74eb96d..3f2b15e86bfe6 100644 --- a/client/consensus/manual-seal/src/lib.rs +++ b/client/consensus/manual-seal/src/lib.rs @@ -47,7 +47,7 @@ pub use self::{ rpc::{EngineCommand, CreatedBlock}, }; use sp_api::{ProvideRuntimeApi, TransactionFor}; -use sp_transaction_pool::TransactionPool; +use sc_transaction_pool_primitives::TransactionPool; /// The `ConsensusEngineId` of Manual Seal. pub const MANUAL_SEAL_ENGINE_ID: ConsensusEngineId = [b'm', b'a', b'n', b'l']; @@ -276,7 +276,7 @@ mod tests { }; use sc_transaction_pool::{BasicPool, RevalidationType, Options}; use substrate_test_runtime_transaction_pool::{TestApi, uxt}; - use sp_transaction_pool::{TransactionPool, MaintainedTransactionPool, TransactionSource}; + use sc_transaction_pool_primitives::{TransactionPool, MaintainedTransactionPool, TransactionSource}; use sp_runtime::generic::BlockId; use sp_consensus::ImportedAux; use sc_basic_authorship::ProposerFactory; @@ -521,7 +521,7 @@ mod tests { assert!(pool.submit_one(&BlockId::Number(1), SOURCE, uxt(Alice, 1)).await.is_ok()); let header = client.header(&BlockId::Number(1)).expect("db error").expect("imported above"); - pool.maintain(sp_transaction_pool::ChainEvent::NewBestBlock { + pool.maintain(sc_transaction_pool_primitives::ChainEvent::NewBestBlock { hash: header.hash(), tree_route: None, }).await; diff --git a/client/consensus/manual-seal/src/seal_block.rs b/client/consensus/manual-seal/src/seal_block.rs index 20099902e2c77..cb826be5ec0d9 100644 --- a/client/consensus/manual-seal/src/seal_block.rs +++ b/client/consensus/manual-seal/src/seal_block.rs @@ -34,7 +34,7 @@ use std::collections::HashMap; use std::time::Duration; use sp_inherents::{CreateInherentDataProviders, InherentDataProvider}; use sp_api::{ProvideRuntimeApi, TransactionFor}; -use sp_transaction_pool::TransactionPool; +use sc_transaction_pool_primitives::TransactionPool; /// max duration for creating a proposal in secs pub const MAX_PROPOSAL_DURATION: u64 = 10; diff --git a/client/informant/Cargo.toml b/client/informant/Cargo.toml index 139a5ce19a000..dc2e848383f68 100644 --- a/client/informant/Cargo.toml +++ b/client/informant/Cargo.toml @@ -22,5 +22,5 @@ sc-client-api = { version = "3.0.0", path = "../api" } sc-network = { version = "0.9.0", path = "../network" } sp-blockchain = { version = "3.0.0", path = "../../primitives/blockchain" } sp-runtime = { version = "3.0.0", path = "../../primitives/runtime" } -sp-transaction-pool = { version = "3.0.0", path = "../../primitives/transaction-pool" } +sc-transaction-pool-primitives = { version = "3.0.0", path = "../transaction-pool/primitives" } wasm-timer = "0.2" diff --git a/client/informant/src/lib.rs b/client/informant/src/lib.rs index ef1533fb49f76..bed29a33a637b 100644 --- a/client/informant/src/lib.rs +++ b/client/informant/src/lib.rs @@ -27,7 +27,7 @@ use sc_client_api::{BlockchainEvents, UsageProvider}; use sc_network::NetworkService; use sp_blockchain::HeaderMetadata; use sp_runtime::traits::{Block as BlockT, Header}; -use sp_transaction_pool::TransactionPool; +use sc_transaction_pool_primitives::TransactionPool; use std::{fmt::Display, sync::Arc, time::Duration, collections::VecDeque}; mod display; diff --git a/client/offchain/Cargo.toml b/client/offchain/Cargo.toml index 9aca829c70d66..c3b68cb71be7a 100644 --- a/client/offchain/Cargo.toml +++ b/client/offchain/Cargo.toml @@ -41,7 +41,7 @@ hyper-rustls = "0.21.0" sc-client-db = { version = "0.9.0", default-features = true, path = "../db" } sc-block-builder = { version = "0.9.0", path = "../block-builder" } sc-transaction-pool = { version = "3.0.0", path = "../transaction-pool" } -sp-transaction-pool = { version = "3.0.0", path = "../../primitives/transaction-pool" } +sc-transaction-pool-primitives = { version = "3.0.0", path = "../transaction-pool/primitives" } sp-tracing = { version = "3.0.0", path = "../../primitives/tracing" } sp-consensus = { version = "0.9.0", path = "../../primitives/consensus/common" } substrate-test-runtime-client = { version = "2.0.0", path = "../../test-utils/runtime/client" } diff --git a/client/offchain/src/lib.rs b/client/offchain/src/lib.rs index 9879b857283a5..cfc15a9bcc40a 100644 --- a/client/offchain/src/lib.rs +++ b/client/offchain/src/lib.rs @@ -236,7 +236,7 @@ mod tests { DefaultTestClientBuilderExt, ClientBlockImportExt, }; use sc_transaction_pool::{BasicPool, FullChainApi}; - use sp_transaction_pool::{TransactionPool, InPoolTransaction}; + use sc_transaction_pool_primitives::{TransactionPool, InPoolTransaction}; use sp_consensus::BlockOrigin; use sc_client_api::Backend as _; use sc_block_builder::BlockBuilderProvider as _; @@ -268,13 +268,13 @@ mod tests { Arc, Block>> ); - impl sp_transaction_pool::OffchainSubmitTransaction for TestPool { + impl sc_transaction_pool_primitives::OffchainSubmitTransaction for TestPool { fn submit_at( &self, at: &BlockId, extrinsic: ::Extrinsic, ) -> Result<(), ()> { - let source = sp_transaction_pool::TransactionSource::Local; + let source = sc_transaction_pool_primitives::TransactionSource::Local; futures::executor::block_on(self.0.submit_one(&at, source, extrinsic)) .map(|_| ()) .map_err(|_| ()) diff --git a/client/rpc-api/Cargo.toml b/client/rpc-api/Cargo.toml index 662f4bd16fd4c..510fe68814e91 100644 --- a/client/rpc-api/Cargo.toml +++ b/client/rpc-api/Cargo.toml @@ -28,6 +28,6 @@ sp-runtime = { path = "../../primitives/runtime" , version = "3.0.0"} sp-chain-spec = { path = "../../primitives/chain-spec" , version = "3.0.0"} serde = { version = "1.0.101", features = ["derive"] } serde_json = "1.0.41" -sp-transaction-pool = { version = "3.0.0", path = "../../primitives/transaction-pool" } +sc-transaction-pool-primitives = { version = "3.0.0", path = "../transaction-pool/primitives" } sp-rpc = { version = "3.0.0", path = "../../primitives/rpc" } sp-tracing = { version = "3.0.0", path = "../../primitives/tracing" } diff --git a/client/rpc-api/src/author/error.rs b/client/rpc-api/src/author/error.rs index 7c1086ab67d1b..836e9e0ce2fb8 100644 --- a/client/rpc-api/src/author/error.rs +++ b/client/rpc-api/src/author/error.rs @@ -37,7 +37,7 @@ pub enum Error { Client(Box), /// Transaction pool error, #[display(fmt="Transaction pool error: {}", _0)] - Pool(sp_transaction_pool::error::Error), + Pool(sc_transaction_pool_primitives::error::Error), /// Verification error #[display(fmt="Extrinsic verification error: {}", _0)] #[from(ignore)] @@ -105,7 +105,7 @@ const POOL_UNACTIONABLE: i64 = POOL_INVALID_TX + 8; impl From for rpc::Error { fn from(e: Error) -> Self { - use sp_transaction_pool::error::{Error as PoolError}; + use sc_transaction_pool_primitives::error::{Error as PoolError}; match e { Error::BadFormat(e) => rpc::Error { diff --git a/client/rpc-api/src/author/mod.rs b/client/rpc-api/src/author/mod.rs index 6ccf1ebab375a..70c467f8f73d2 100644 --- a/client/rpc-api/src/author/mod.rs +++ b/client/rpc-api/src/author/mod.rs @@ -24,7 +24,7 @@ pub mod hash; use jsonrpc_derive::rpc; use jsonrpc_pubsub::{typed::Subscriber, SubscriptionId}; use sp_core::Bytes; -use sp_transaction_pool::TransactionStatus; +use sc_transaction_pool_primitives::TransactionStatus; use self::error::{FutureResult, Result}; pub use self::gen_client::Client as AuthorClient; @@ -78,7 +78,7 @@ pub trait AuthorApi { /// Submit an extrinsic to watch. /// - /// See [`TransactionStatus`](sp_transaction_pool::TransactionStatus) for details on transaction + /// See [`TransactionStatus`](sc_transaction_pool_primitives::TransactionStatus) for details on transaction /// life cycle. #[pubsub( subscription = "author_extrinsicUpdate", diff --git a/client/rpc/Cargo.toml b/client/rpc/Cargo.toml index a352e5fc387bd..663fc0365156c 100644 --- a/client/rpc/Cargo.toml +++ b/client/rpc/Cargo.toml @@ -35,13 +35,13 @@ sp-chain-spec = { version = "3.0.0", path = "../../primitives/chain-spec" } sc-executor = { version = "0.9.0", path = "../executor" } sc-block-builder = { version = "0.9.0", path = "../block-builder" } sc-keystore = { version = "3.0.0", path = "../keystore" } -sp-transaction-pool = { version = "3.0.0", path = "../../primitives/transaction-pool" } sp-blockchain = { version = "3.0.0", path = "../../primitives/blockchain" } sc-tracing = { version = "3.0.0", path = "../tracing" } hash-db = { version = "0.15.2", default-features = false } parking_lot = "0.11.1" lazy_static = { version = "1.4.0", optional = true } sp-tracing = { version = "3.0.0", path = "../../primitives/tracing" } +sc-transaction-pool-primitives = { version = "3.0.0", path = "../transaction-pool/primitives" } [dev-dependencies] assert_matches = "1.3.0" diff --git a/client/rpc/src/author/mod.rs b/client/rpc/src/author/mod.rs index 4181206fdd0a7..f0ad3d2115b49 100644 --- a/client/rpc/src/author/mod.rs +++ b/client/rpc/src/author/mod.rs @@ -36,7 +36,7 @@ use sp_core::Bytes; use sp_keystore::{SyncCryptoStorePtr, SyncCryptoStore}; use sp_api::ProvideRuntimeApi; use sp_runtime::generic; -use sp_transaction_pool::{ +use sc_transaction_pool_primitives::{ TransactionPool, InPoolTransaction, TransactionStatus, TransactionSource, BlockHash, TxHash, TransactionFor, error::IntoPoolError, }; diff --git a/client/service/Cargo.toml b/client/service/Cargo.toml index a90efb02dc5f2..ae50916ba64ae 100644 --- a/client/service/Cargo.toml +++ b/client/service/Cargo.toml @@ -66,6 +66,7 @@ codec = { package = "parity-scale-codec", version = "2.0.0" } sc-executor = { version = "0.9.0", path = "../executor" } sc-transaction-pool = { version = "3.0.0", path = "../transaction-pool" } sp-transaction-pool = { version = "3.0.0", path = "../../primitives/transaction-pool" } +sc-transaction-pool-primitives = { version = "3.0.0", path = "../transaction-pool/primitives" } sp-transaction-storage-proof = { version = "3.0.0", path = "../../primitives/transaction-storage-proof" } sc-rpc-server = { version = "3.0.0", path = "../rpc-servers" } sc-rpc = { version = "3.0.0", path = "../rpc" } diff --git a/client/service/src/builder.rs b/client/service/src/builder.rs index b0bffc3c4e12d..d8ed8ac78fe2c 100644 --- a/client/service/src/builder.rs +++ b/client/service/src/builder.rs @@ -60,7 +60,7 @@ use sc_telemetry::{ TelemetryHandle, SUBSTRATE_INFO, }; -use sp_transaction_pool::MaintainedTransactionPool; +use sc_transaction_pool_primitives::MaintainedTransactionPool; use prometheus_endpoint::Registry; use sc_client_db::{Backend, DatabaseSettings}; use sp_core::traits::{ diff --git a/client/service/src/lib.rs b/client/service/src/lib.rs index cb0f6c023372f..25e4577309251 100644 --- a/client/service/src/lib.rs +++ b/client/service/src/lib.rs @@ -64,7 +64,7 @@ pub use sc_chain_spec::{ ChainSpec, GenericChainSpec, Properties, RuntimeGenesis, Extension as ChainSpecExtension, NoExtension, ChainType, }; -pub use sp_transaction_pool::{TransactionPool, InPoolTransaction, error::IntoPoolError}; +pub use sc_transaction_pool_primitives::{TransactionPool, InPoolTransaction, error::IntoPoolError}; pub use sc_transaction_pool::Options as TransactionPoolOptions; pub use sc_rpc::Metadata as RpcMetadata; pub use sc_executor::NativeExecutionDispatch; @@ -456,7 +456,7 @@ where Pool: TransactionPool, B: BlockT, H: std::hash::Hash + Eq + sp_runtime::traits::Member + sp_runtime::traits::MaybeSerialize, - E: IntoPoolError + From, + E: IntoPoolError + From, { pool.ready() .filter(|t| t.is_propagable()) @@ -475,7 +475,7 @@ where Pool: 'static + TransactionPool, B: BlockT, H: std::hash::Hash + Eq + sp_runtime::traits::Member + sp_runtime::traits::MaybeSerialize, - E: 'static + IntoPoolError + From, + E: 'static + IntoPoolError + From, { fn transactions(&self) -> Vec<(H, B::Extrinsic)> { transactions_to_propagate(&*self.pool) @@ -505,12 +505,12 @@ where let best_block_id = BlockId::hash(self.client.info().best_hash); - let import_future = self.pool.submit_one(&best_block_id, sp_transaction_pool::TransactionSource::External, uxt); + let import_future = self.pool.submit_one(&best_block_id, sc_transaction_pool_primitives::TransactionSource::External, uxt); Box::pin(async move { match import_future.await { Ok(_) => TransactionImport::NewGood, Err(e) => match e.into_pool_error() { - Ok(sp_transaction_pool::error::Error::AlreadyImported(_)) => TransactionImport::KnownGood, + Ok(sc_transaction_pool_primitives::error::Error::AlreadyImported(_)) => TransactionImport::KnownGood, Ok(e) => { debug!("Error adding transaction to the pool: {:?}", e); TransactionImport::Bad diff --git a/client/service/src/metrics.rs b/client/service/src/metrics.rs index 8fc48ccf8c863..0c0f4ae653949 100644 --- a/client/service/src/metrics.rs +++ b/client/service/src/metrics.rs @@ -24,7 +24,7 @@ use prometheus_endpoint::{register, Gauge, U64, Registry, PrometheusError, Opts, use sc_telemetry::{telemetry, TelemetryHandle, SUBSTRATE_INFO}; use sp_api::ProvideRuntimeApi; use sp_runtime::traits::{NumberFor, Block, SaturatedConversion, UniqueSaturatedInto}; -use sp_transaction_pool::{PoolStatus, MaintainedTransactionPool}; +use sc_transaction_pool_primitives::{PoolStatus, MaintainedTransactionPool}; use sp_utils::metrics::register_globals; use sc_client_api::{ClientInfo, UsageProvider}; use sc_network::{config::Role, NetworkStatus, NetworkService}; diff --git a/client/service/test/Cargo.toml b/client/service/test/Cargo.toml index 2108d7e26fa83..ff1bf262ae90b 100644 --- a/client/service/test/Cargo.toml +++ b/client/service/test/Cargo.toml @@ -33,7 +33,7 @@ sc-network = { version = "0.9.0", path = "../../network" } sp-consensus = { version = "0.9.0", path = "../../../primitives/consensus/common" } sp-runtime = { version = "3.0.0", path = "../../../primitives/runtime" } sp-core = { version = "3.0.0", path = "../../../primitives/core" } -sp-transaction-pool = { version = "3.0.0", path = "../../../primitives/transaction-pool" } +sc-transaction-pool-primitives = { version = "3.0.0", path = "../../../client/transaction-pool/primitives" } substrate-test-runtime = { version = "2.0.0", path = "../../../test-utils/runtime" } substrate-test-runtime-client = { version = "2.0.0", path = "../../../test-utils/runtime/client" } sc-client-api = { version = "3.0.0", path = "../../api" } diff --git a/client/service/test/src/lib.rs b/client/service/test/src/lib.rs index eb437b1aba0af..a973ac48fb97a 100644 --- a/client/service/test/src/lib.rs +++ b/client/service/test/src/lib.rs @@ -47,7 +47,7 @@ use sp_blockchain::HeaderBackend; use sc_network::{multiaddr, Multiaddr}; use sc_network::config::{NetworkConfiguration, TransportConfig}; use sp_runtime::{generic::BlockId, traits::Block as BlockT}; -use sp_transaction_pool::TransactionPool; +use sc_transaction_pool_primitives::TransactionPool; use sc_client_api::{Backend, CallExecutor}; use parking_lot::Mutex; @@ -575,7 +575,7 @@ pub fn sync( let first_user_data = &network.full_nodes[0].2; let best_block = BlockId::number(first_service.client().info().best_number); let extrinsic = extrinsic_factory(&first_service, first_user_data); - let source = sp_transaction_pool::TransactionSource::External; + let source = sc_transaction_pool_primitives::TransactionSource::External; futures::executor::block_on( first_service.transaction_pool().submit_one(&best_block, source, extrinsic) diff --git a/client/transaction-pool/Cargo.toml b/client/transaction-pool/Cargo.toml index 6b105520baec5..3bd2ca7c13f01 100644 --- a/client/transaction-pool/Cargo.toml +++ b/client/transaction-pool/Cargo.toml @@ -28,6 +28,7 @@ sp-core = { version = "3.0.0", path = "../../primitives/core" } sp-runtime = { version = "3.0.0", path = "../../primitives/runtime" } sp-tracing = { version = "3.0.0", path = "../../primitives/tracing" } sp-transaction-pool = { version = "3.0.0", path = "../../primitives/transaction-pool" } +sc-transaction-pool-primitives = { version = "3.0.0", path = "./primitives" } sp-blockchain = { version = "3.0.0", path = "../../primitives/blockchain" } sp-utils = { version = "3.0.0", path = "../../primitives/utils" } wasm-timer = "0.2" diff --git a/client/transaction-pool/graph/Cargo.toml b/client/transaction-pool/graph/Cargo.toml index 4b134c7080963..78c3690082825 100644 --- a/client/transaction-pool/graph/Cargo.toml +++ b/client/transaction-pool/graph/Cargo.toml @@ -24,7 +24,7 @@ sp-blockchain = { version = "3.0.0", path = "../../../primitives/blockchain" } sp-utils = { version = "3.0.0", path = "../../../primitives/utils" } sp-core = { version = "3.0.0", path = "../../../primitives/core" } sp-runtime = { version = "3.0.0", path = "../../../primitives/runtime" } -sp-transaction-pool = { version = "3.0.0", path = "../../../primitives/transaction-pool" } +sc-transaction-pool-primitives = { version = "3.0.0", path = "../primitives" } parity-util-mem = { version = "0.9.0", default-features = false, features = ["primitive-types"] } linked-hash-map = "0.5.2" retain_mut = "0.1.3" diff --git a/client/transaction-pool/graph/benches/basics.rs b/client/transaction-pool/graph/benches/basics.rs index 0c55c931eb212..ef764aab4ab59 100644 --- a/client/transaction-pool/graph/benches/basics.rs +++ b/client/transaction-pool/graph/benches/basics.rs @@ -51,9 +51,9 @@ fn to_tag(nonce: u64, from: AccountId) -> Tag { impl ChainApi for TestApi { type Block = Block; - type Error = sp_transaction_pool::error::Error; - type ValidationFuture = Ready>; - type BodyFuture = Ready>>>; + type Error = sc_transaction_pool_primitives::error::Error; + type ValidationFuture = Ready>; + type BodyFuture = Ready>>>; fn validate_transaction( &self, diff --git a/client/transaction-pool/graph/src/base_pool.rs b/client/transaction-pool/graph/src/base_pool.rs index 9b644bbdb3b67..3b147f6869132 100644 --- a/client/transaction-pool/graph/src/base_pool.rs +++ b/client/transaction-pool/graph/src/base_pool.rs @@ -37,7 +37,7 @@ use sp_runtime::transaction_validity::{ TransactionPriority as Priority, TransactionSource as Source, }; -use sp_transaction_pool::{error, PoolStatus, InPoolTransaction}; +use sc_transaction_pool_primitives::{error, PoolStatus, InPoolTransaction}; use crate::future::{FutureTransactions, WaitingTransaction}; use crate::ready::ReadyTransactions; diff --git a/client/transaction-pool/graph/src/pool.rs b/client/transaction-pool/graph/src/pool.rs index 4f132550d7036..86517567de3b5 100644 --- a/client/transaction-pool/graph/src/pool.rs +++ b/client/transaction-pool/graph/src/pool.rs @@ -29,7 +29,7 @@ use sp_runtime::{ TransactionValidity, TransactionTag as Tag, TransactionValidityError, TransactionSource, }, }; -use sp_transaction_pool::error; +use sc_transaction_pool_primitives::error; use wasm_timer::Instant; use futures::channel::mpsc::Receiver; @@ -462,7 +462,7 @@ mod tests { use parking_lot::Mutex; use futures::executor::block_on; use super::*; - use sp_transaction_pool::TransactionStatus; + use sc_transaction_pool_primitives::TransactionStatus; use sp_runtime::{ traits::Hash, transaction_validity::{ValidTransaction, InvalidTransaction, TransactionSource}, diff --git a/client/transaction-pool/graph/src/ready.rs b/client/transaction-pool/graph/src/ready.rs index ba6ca97dc6753..3a20d24c573fe 100644 --- a/client/transaction-pool/graph/src/ready.rs +++ b/client/transaction-pool/graph/src/ready.rs @@ -29,7 +29,7 @@ use sp_runtime::traits::Member; use sp_runtime::transaction_validity::{ TransactionTag as Tag, }; -use sp_transaction_pool::error; +use sc_transaction_pool_primitives::error; use crate::{ base_pool::Transaction, diff --git a/client/transaction-pool/graph/src/validated_pool.rs b/client/transaction-pool/graph/src/validated_pool.rs index ec05106896f2c..04242885b5698 100644 --- a/client/transaction-pool/graph/src/validated_pool.rs +++ b/client/transaction-pool/graph/src/validated_pool.rs @@ -29,7 +29,7 @@ use sp_runtime::{ traits::{self, SaturatedConversion}, transaction_validity::{TransactionTag as Tag, ValidTransaction, TransactionSource}, }; -use sp_transaction_pool::{error, PoolStatus}; +use sc_transaction_pool_primitives::{error, PoolStatus}; use wasm_timer::Instant; use futures::channel::mpsc::{channel, Sender}; use retain_mut::RetainMut; diff --git a/client/transaction-pool/graph/src/watcher.rs b/client/transaction-pool/graph/src/watcher.rs index 6f8eb7c6e5668..eb9b126086054 100644 --- a/client/transaction-pool/graph/src/watcher.rs +++ b/client/transaction-pool/graph/src/watcher.rs @@ -19,7 +19,7 @@ //! Extrinsics status updates. use futures::Stream; -use sp_transaction_pool::TransactionStatus; +use sc_transaction_pool_primitives::TransactionStatus; use sp_utils::mpsc::{tracing_unbounded, TracingUnboundedSender, TracingUnboundedReceiver}; /// Extrinsic watcher. diff --git a/client/transaction-pool/primitives/Cargo.toml b/client/transaction-pool/primitives/Cargo.toml new file mode 100644 index 0000000000000..bf8a80fc888dc --- /dev/null +++ b/client/transaction-pool/primitives/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "sc-transaction-pool-primitives" +version = "3.0.0" +authors = ["Parity Technologies "] +edition = "2018" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" +homepage = "https://substrate.dev" +repository = "https://github.com/paritytech/substrate/" +description = "Substrate transaction pool primitives." +readme = "README.md" + +[dependencies] +futures = { version = "0.3.1" } +log = { version = "0.4.8" } +serde = { version = "1.0.101", features = ["derive"] } +thiserror = { version = "1.0.21" } +sp-runtime = { version = "3.0.0", default-features = false, path = "../../../primitives/runtime" } + +codec = { package = "parity-scale-codec", version = "2.0.0" } +derive_more = { version = "0.99.11" } +sp-blockchain = { version = "3.0.0", path = "../../../primitives/blockchain" } diff --git a/primitives/transaction-pool/src/error.rs b/client/transaction-pool/primitives/src/error.rs similarity index 100% rename from primitives/transaction-pool/src/error.rs rename to client/transaction-pool/primitives/src/error.rs diff --git a/primitives/transaction-pool/src/pool.rs b/client/transaction-pool/primitives/src/lib.rs similarity index 98% rename from primitives/transaction-pool/src/pool.rs rename to client/transaction-pool/primitives/src/lib.rs index b0964cab2d18e..9916954f4120b 100644 --- a/primitives/transaction-pool/src/pool.rs +++ b/client/transaction-pool/primitives/src/lib.rs @@ -17,6 +17,8 @@ //! Transaction pool primitives types & Runtime API. +pub mod error; + use std::{ collections::HashMap, hash::Hash, @@ -28,9 +30,9 @@ use serde::{Deserialize, Serialize}; use sp_runtime::{ generic::BlockId, traits::{Block as BlockT, Member, NumberFor}, - transaction_validity::{ - TransactionLongevity, TransactionPriority, TransactionTag, TransactionSource, - }, +}; +pub use sp_runtime::transaction_validity::{ + TransactionLongevity, TransactionPriority, TransactionTag, TransactionSource, }; /// Transaction pool status. diff --git a/client/transaction-pool/src/error.rs b/client/transaction-pool/src/error.rs index 62c812d14704a..701f1b69351ad 100644 --- a/client/transaction-pool/src/error.rs +++ b/client/transaction-pool/src/error.rs @@ -18,7 +18,7 @@ //! Transaction pool error. -use sp_transaction_pool::error::Error as TxPoolError; +use sc_transaction_pool_primitives::error::Error as TxPoolError; /// Transaction pool result. pub type Result = std::result::Result; @@ -41,7 +41,7 @@ pub enum Error { } -impl sp_transaction_pool::error::IntoPoolError for Error { +impl sc_transaction_pool_primitives::error::IntoPoolError for Error { fn into_pool_error(self) -> std::result::Result { match self { Error::Pool(e) => Ok(e), diff --git a/client/transaction-pool/src/lib.rs b/client/transaction-pool/src/lib.rs index 7dd9414e9f7fc..8f0436e75c763 100644 --- a/client/transaction-pool/src/lib.rs +++ b/client/transaction-pool/src/lib.rs @@ -43,7 +43,7 @@ use sp_runtime::{ traits::{Block as BlockT, NumberFor, AtLeast32Bit, Extrinsic, Zero, Header as HeaderT}, }; use sp_core::traits::SpawnEssentialNamed; -use sp_transaction_pool::{ +use sc_transaction_pool_primitives::{ TransactionPool, PoolStatus, ImportNotificationStream, TxHash, TransactionFor, TransactionStatusStreamFor, MaintainedTransactionPool, PoolFuture, ChainEvent, TransactionSource, @@ -420,7 +420,7 @@ where } } -impl sp_transaction_pool::LocalTransactionPool +impl sc_transaction_pool_primitives::LocalTransactionPool for BasicPool, Block> where Block: BlockT, @@ -438,7 +438,7 @@ where fn submit_local( &self, at: &BlockId, - xt: sp_transaction_pool::LocalTransactionFor, + xt: sc_transaction_pool_primitives::LocalTransactionFor, ) -> Result { use sc_transaction_graph::ValidatedTransaction; use sp_runtime::traits::SaturatedConversion; diff --git a/client/transaction-pool/src/revalidation.rs b/client/transaction-pool/src/revalidation.rs index fc18b0694d6ee..e34d0437d9a74 100644 --- a/client/transaction-pool/src/revalidation.rs +++ b/client/transaction-pool/src/revalidation.rs @@ -363,7 +363,7 @@ where mod tests { use super::*; use sc_transaction_graph::Pool; - use sp_transaction_pool::TransactionSource; + use sc_transaction_pool_primitives::TransactionSource; use substrate_test_runtime_transaction_pool::{TestApi, uxt}; use futures::executor::block_on; use substrate_test_runtime_client::AccountKeyring::*; diff --git a/client/transaction-pool/src/testing/pool.rs b/client/transaction-pool/src/testing/pool.rs index 9232a1d13ad24..fcd6a2e2a9b89 100644 --- a/client/transaction-pool/src/testing/pool.rs +++ b/client/transaction-pool/src/testing/pool.rs @@ -17,7 +17,7 @@ // along with this program. If not, see . use crate::*; -use sp_transaction_pool::TransactionStatus; +use sc_transaction_pool_primitives::TransactionStatus; use futures::executor::{block_on, block_on_stream}; use sp_runtime::{ generic::BlockId, @@ -938,7 +938,7 @@ fn should_not_accept_old_signatures() { assert_matches::assert_matches!( block_on(pool.submit_one(&BlockId::number(0), SOURCE, xt.clone())), Err(error::Error::Pool( - sp_transaction_pool::error::Error::InvalidTransaction(InvalidTransaction::BadProof) + sc_transaction_pool_primitives::error::Error::InvalidTransaction(InvalidTransaction::BadProof) )), "Should be invalid transaction with bad proof", ); diff --git a/docs/Upgrading-2.0-to-3.0.md b/docs/Upgrading-2.0-to-3.0.md index 46f01ab7824cd..65bf669c2f0a1 100644 --- a/docs/Upgrading-2.0-to-3.0.md +++ b/docs/Upgrading-2.0-to-3.0.md @@ -353,7 +353,7 @@ As said, we've added a new optional RPC service for improved light client suppor @@ -49,6 +49,7 @@ use sp_consensus::SelectChain; use sp_consensus_babe::BabeApi; use sc_rpc::SubscriptionTaskExecutor; - use sp_transaction_pool::TransactionPool; + use sc_transaction_pool_primitives::TransactionPool; +use sc_client_api::AuxStore; /// Light client extra dependencies. @@ -1003,7 +1003,7 @@ Altogether this accumulates to the following diff for `node/cli/src/service.rs`. use crate::service::{new_full_base, new_light_base, NewFullBase}; - use sp_runtime::traits::IdentifyAccount; + use sp_runtime::{key_types::BABE, traits::IdentifyAccount, RuntimeAppPublic}; - use sp_transaction_pool::{MaintainedTransactionPool, ChainEvent}; + use sc_transaction_pool_primitives::{MaintainedTransactionPool, ChainEvent}; use sc_client_api::BlockBackend; + use sc_keystore::LocalKeystore; diff --git a/primitives/transaction-pool/Cargo.toml b/primitives/transaction-pool/Cargo.toml index d431e444d457e..a742194743f46 100644 --- a/primitives/transaction-pool/Cargo.toml +++ b/primitives/transaction-pool/Cargo.toml @@ -14,26 +14,12 @@ readme = "README.md" targets = ["x86_64-unknown-linux-gnu"] [dependencies] -thiserror = { version = "1.0.21", optional = true } -codec = { package = "parity-scale-codec", version = "2.0.0", optional = true } -derive_more = { version = "0.99.11", optional = true } -futures = { version = "0.3.1", optional = true } -log = { version = "0.4.8", optional = true } -serde = { version = "1.0.101", features = ["derive"], optional = true} sp-api = { version = "3.0.0", default-features = false, path = "../api" } -sp-blockchain = { version = "3.0.0", optional = true, path = "../blockchain" } sp-runtime = { version = "3.0.0", default-features = false, path = "../runtime" } [features] default = [ "std" ] std = [ - "codec", - "derive_more", - "futures", - "log", - "serde", - "thiserror", "sp-api/std", - "sp-blockchain", "sp-runtime/std", ] diff --git a/primitives/transaction-pool/src/lib.rs b/primitives/transaction-pool/src/lib.rs index 276c53443eb71..dca073e977581 100644 --- a/primitives/transaction-pool/src/lib.rs +++ b/primitives/transaction-pool/src/lib.rs @@ -21,13 +21,6 @@ #![cfg_attr(not(feature = "std"), no_std)] pub mod runtime_api; -#[cfg(feature = "std")] -pub mod error; -#[cfg(feature = "std")] -mod pool; - -#[cfg(feature = "std")] -pub use pool::*; pub use sp_runtime::transaction_validity::{ TransactionLongevity, TransactionPriority, TransactionTag, TransactionSource, diff --git a/test-utils/runtime/transaction-pool/Cargo.toml b/test-utils/runtime/transaction-pool/Cargo.toml index 6e4e6524c3699..5b60e911fb1e3 100644 --- a/test-utils/runtime/transaction-pool/Cargo.toml +++ b/test-utils/runtime/transaction-pool/Cargo.toml @@ -17,7 +17,7 @@ parking_lot = "0.11.1" codec = { package = "parity-scale-codec", version = "2.0.0" } sp-blockchain = { version = "3.0.0", path = "../../../primitives/blockchain" } sp-runtime = { version = "3.0.0", path = "../../../primitives/runtime" } -sp-transaction-pool = { version = "3.0.0", path = "../../../primitives/transaction-pool" } sc-transaction-graph = { version = "3.0.0", path = "../../../client/transaction-pool/graph" } +sc-transaction-pool-primitives = { version = "3.0.0", path = "../../../client/transaction-pool/primitives" } futures = { version = "0.3.1", features = ["compat"] } derive_more = "0.99.2" diff --git a/test-utils/runtime/transaction-pool/src/lib.rs b/test-utils/runtime/transaction-pool/src/lib.rs index 91f26b1921cec..d7dcf8b64c2dd 100644 --- a/test-utils/runtime/transaction-pool/src/lib.rs +++ b/test-utils/runtime/transaction-pool/src/lib.rs @@ -39,10 +39,10 @@ use futures::future::ready; /// Error type used by [`TestApi`]. #[derive(Debug, derive_more::From, derive_more::Display)] -pub struct Error(sp_transaction_pool::error::Error); +pub struct Error(sc_transaction_pool_primitives::error::Error); -impl sp_transaction_pool::error::IntoPoolError for Error { - fn into_pool_error(self) -> Result { +impl sc_transaction_pool_primitives::error::IntoPoolError for Error { + fn into_pool_error(self) -> Result { Ok(self.0) } } diff --git a/test-utils/test-runner/Cargo.toml b/test-utils/test-runner/Cargo.toml index 9e1f9fee02189..685a7f78d8cc2 100644 --- a/test-utils/test-runner/Cargo.toml +++ b/test-utils/test-runner/Cargo.toml @@ -15,6 +15,7 @@ sc-cli = { version = "0.9.0", path = "../../client/cli" } sc-basic-authorship = { version = "0.9.0", path = "../../client/basic-authorship" } sc-rpc = { version = "3.0.0", path = "../../client/rpc" } sc-transaction-pool = { version = "3.0.0", path = "../../client/transaction-pool" } +sc-transaction-pool-primitives = { version = "3.0.0", path = "../../client/transaction-pool/primitives" } sc-transaction-graph = { version = "3.0.0", path = "../../client/transaction-pool/graph" } sc-client-api = { version = "3.0.0", path = "../../client/api" } sc-rpc-server = { version = "3.0.0", path = "../../client/rpc-servers" } diff --git a/test-utils/test-runner/src/node.rs b/test-utils/test-runner/src/node.rs index 28a0f07294c70..65d104c4928cb 100644 --- a/test-utils/test-runner/src/node.rs +++ b/test-utils/test-runner/src/node.rs @@ -41,7 +41,7 @@ use sp_runtime::{generic::UncheckedExtrinsic, traits::NumberFor}; use sp_session::SessionKeys; use sp_state_machine::Ext; use sp_transaction_pool::runtime_api::TaggedTransactionQueue; -use sp_transaction_pool::TransactionPool; +use sc_transaction_pool_primitives::TransactionPool; use crate::{ChainInfo, utils::logger}; use log::LevelFilter; diff --git a/utils/frame/rpc/system/Cargo.toml b/utils/frame/rpc/system/Cargo.toml index ea8d97a82ad34..4681c65d66240 100644 --- a/utils/frame/rpc/system/Cargo.toml +++ b/utils/frame/rpc/system/Cargo.toml @@ -26,7 +26,7 @@ sp-api = { version = "3.0.0", path = "../../../../primitives/api" } frame-system-rpc-runtime-api = { version = "3.0.0", path = "../../../../frame/system/rpc/runtime-api" } sp-core = { version = "3.0.0", path = "../../../../primitives/core" } sp-blockchain = { version = "3.0.0", path = "../../../../primitives/blockchain" } -sp-transaction-pool = { version = "3.0.0", path = "../../../../primitives/transaction-pool" } +sc-transaction-pool-primitives = { version = "3.0.0", path = "../../../../client/transaction-pool/primitives" } sp-block-builder = { version = "3.0.0", path = "../../../../primitives/block-builder" } sc-rpc-api = { version = "0.9.0", path = "../../../../client/rpc-api" } diff --git a/utils/frame/rpc/system/src/lib.rs b/utils/frame/rpc/system/src/lib.rs index bbc51a28a59cd..dbc43a3400334 100644 --- a/utils/frame/rpc/system/src/lib.rs +++ b/utils/frame/rpc/system/src/lib.rs @@ -36,7 +36,7 @@ use sp_runtime::{ traits, }; use sp_core::{hexdisplay::HexDisplay, Bytes}; -use sp_transaction_pool::{TransactionPool, InPoolTransaction}; +use sc_transaction_pool_primitives::{TransactionPool, InPoolTransaction}; use sp_block_builder::BlockBuilder; use sc_rpc_api::DenyUnsafe; From fbc1c6f172f328b405bcefa3110626beb1fb8f64 Mon Sep 17 00:00:00 2001 From: Seun Lanlege Date: Thu, 1 Jul 2021 12:22:24 +0100 Subject: [PATCH 03/11] sc-transaction-pool-api --- Cargo.lock | 38 +++++++++---------- Cargo.toml | 2 +- bin/node-template/node/Cargo.toml | 2 +- bin/node-template/node/src/rpc.rs | 2 +- bin/node/bench/Cargo.toml | 2 +- bin/node/bench/src/construct.rs | 8 ++-- bin/node/bench/src/txpool.rs | 2 +- bin/node/cli/Cargo.toml | 2 +- bin/node/cli/src/service.rs | 2 +- bin/node/rpc/Cargo.toml | 2 +- bin/node/rpc/src/lib.rs | 2 +- client/api/Cargo.toml | 2 +- client/api/src/client.rs | 2 +- client/api/src/execution_extensions.rs | 2 +- client/basic-authorship/Cargo.toml | 2 +- .../basic-authorship/src/basic_authorship.rs | 4 +- client/consensus/manual-seal/Cargo.toml | 2 +- client/consensus/manual-seal/src/lib.rs | 6 +-- .../consensus/manual-seal/src/seal_block.rs | 2 +- client/informant/Cargo.toml | 2 +- client/informant/src/lib.rs | 2 +- client/offchain/Cargo.toml | 2 +- client/offchain/src/lib.rs | 6 +-- client/rpc-api/Cargo.toml | 2 +- client/rpc-api/src/author/error.rs | 4 +- client/rpc-api/src/author/mod.rs | 4 +- client/rpc/Cargo.toml | 2 +- client/rpc/src/author/mod.rs | 2 +- client/service/Cargo.toml | 2 +- client/service/src/builder.rs | 2 +- client/service/src/lib.rs | 10 ++--- client/service/src/metrics.rs | 2 +- client/service/test/Cargo.toml | 2 +- client/service/test/src/lib.rs | 4 +- client/transaction-pool/Cargo.toml | 2 +- .../{primitives => api}/Cargo.toml | 2 +- .../{primitives => api}/src/error.rs | 0 .../{primitives => api}/src/lib.rs | 0 client/transaction-pool/graph/Cargo.toml | 2 +- .../transaction-pool/graph/benches/basics.rs | 6 +-- .../transaction-pool/graph/src/base_pool.rs | 2 +- client/transaction-pool/graph/src/pool.rs | 4 +- client/transaction-pool/graph/src/ready.rs | 2 +- .../graph/src/validated_pool.rs | 2 +- client/transaction-pool/graph/src/watcher.rs | 2 +- client/transaction-pool/src/error.rs | 4 +- client/transaction-pool/src/lib.rs | 6 +-- client/transaction-pool/src/revalidation.rs | 2 +- client/transaction-pool/src/testing/pool.rs | 4 +- docs/Upgrading-2.0-to-3.0.md | 4 +- .../runtime/transaction-pool/Cargo.toml | 2 +- .../runtime/transaction-pool/src/lib.rs | 6 +-- test-utils/test-runner/Cargo.toml | 2 +- test-utils/test-runner/src/node.rs | 2 +- utils/frame/rpc/system/Cargo.toml | 2 +- utils/frame/rpc/system/src/lib.rs | 2 +- 56 files changed, 97 insertions(+), 97 deletions(-) rename client/transaction-pool/{primitives => api}/Cargo.toml (95%) rename client/transaction-pool/{primitives => api}/src/error.rs (100%) rename client/transaction-pool/{primitives => api}/src/lib.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index 7d82448e05119..6ccdcfc5fa2b6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4131,7 +4131,7 @@ dependencies = [ "sc-cli", "sc-client-api", "sc-transaction-pool", - "sc-transaction-pool-primitives", + "sc-transaction-pool-api", "serde", "serde_json", "sp-consensus", @@ -4218,7 +4218,7 @@ dependencies = [ "sc-telemetry", "sc-tracing", "sc-transaction-pool", - "sc-transaction-pool-primitives", + "sc-transaction-pool-api", "serde", "serde_json", "soketto 0.4.2", @@ -4331,7 +4331,7 @@ dependencies = [ "sc-rpc", "sc-rpc-api", "sc-sync-state-rpc", - "sc-transaction-pool-primitives", + "sc-transaction-pool-api", "sp-api", "sp-block-builder", "sp-blockchain", @@ -4457,7 +4457,7 @@ dependencies = [ "sc-service", "sc-telemetry", "sc-transaction-pool", - "sc-transaction-pool-primitives", + "sc-transaction-pool-api", "sp-api", "sp-block-builder", "sp-blockchain", @@ -7037,7 +7037,7 @@ dependencies = [ "sc-proposer-metrics", "sc-telemetry", "sc-transaction-pool", - "sc-transaction-pool-primitives", + "sc-transaction-pool-api", "sp-api", "sp-blockchain", "sp-consensus", @@ -7148,7 +7148,7 @@ dependencies = [ "parity-scale-codec", "parking_lot 0.11.1", "sc-executor", - "sc-transaction-pool-primitives", + "sc-transaction-pool-api", "sp-api", "sp-blockchain", "sp-consensus", @@ -7374,7 +7374,7 @@ dependencies = [ "sc-consensus-babe", "sc-consensus-epochs", "sc-transaction-pool", - "sc-transaction-pool-primitives", + "sc-transaction-pool-api", "serde", "sp-api", "sp-blockchain", @@ -7661,7 +7661,7 @@ dependencies = [ "parity-util-mem", "sc-client-api", "sc-network", - "sc-transaction-pool-primitives", + "sc-transaction-pool-api", "sp-blockchain", "sp-runtime", "wasm-timer", @@ -7836,7 +7836,7 @@ dependencies = [ "sc-keystore", "sc-network", "sc-transaction-pool", - "sc-transaction-pool-primitives", + "sc-transaction-pool-api", "sp-api", "sp-consensus", "sp-core", @@ -7893,7 +7893,7 @@ dependencies = [ "sc-rpc-api", "sc-tracing", "sc-transaction-pool", - "sc-transaction-pool-primitives", + "sc-transaction-pool-api", "serde_json", "sp-api", "sp-blockchain", @@ -7926,7 +7926,7 @@ dependencies = [ "log", "parity-scale-codec", "parking_lot 0.11.1", - "sc-transaction-pool-primitives", + "sc-transaction-pool-api", "serde", "serde_json", "sp-chain-spec", @@ -8005,7 +8005,7 @@ dependencies = [ "sc-telemetry", "sc-tracing", "sc-transaction-pool", - "sc-transaction-pool-primitives", + "sc-transaction-pool-api", "serde", "serde_json", "sp-api", @@ -8059,7 +8059,7 @@ dependencies = [ "sc-light", "sc-network", "sc-service", - "sc-transaction-pool-primitives", + "sc-transaction-pool-api", "sp-api", "sp-blockchain", "sp-consensus", @@ -8189,7 +8189,7 @@ dependencies = [ "parity-util-mem", "parking_lot 0.11.1", "retain_mut", - "sc-transaction-pool-primitives", + "sc-transaction-pool-api", "serde", "sp-blockchain", "sp-core", @@ -8215,7 +8215,7 @@ dependencies = [ "sc-block-builder", "sc-client-api", "sc-transaction-graph", - "sc-transaction-pool-primitives", + "sc-transaction-pool-api", "sp-api", "sp-blockchain", "sp-consensus", @@ -8233,7 +8233,7 @@ dependencies = [ ] [[package]] -name = "sc-transaction-pool-primitives" +name = "sc-transaction-pool-api" version = "3.0.0" dependencies = [ "derive_more", @@ -9702,7 +9702,7 @@ dependencies = [ "sc-client-api", "sc-rpc-api", "sc-transaction-pool", - "sc-transaction-pool-primitives", + "sc-transaction-pool-api", "serde", "sp-api", "sp-block-builder", @@ -9827,7 +9827,7 @@ dependencies = [ "parity-scale-codec", "parking_lot 0.11.1", "sc-transaction-graph", - "sc-transaction-pool-primitives", + "sc-transaction-pool-api", "sp-blockchain", "sp-runtime", "substrate-test-runtime-client", @@ -9974,7 +9974,7 @@ dependencies = [ "sc-service", "sc-transaction-graph", "sc-transaction-pool", - "sc-transaction-pool-primitives", + "sc-transaction-pool-api", "sp-api", "sp-block-builder", "sp-blockchain", diff --git a/Cargo.toml b/Cargo.toml index f86e78ff56dc6..44c99f294e8fe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -62,7 +62,7 @@ members = [ "client/tracing/proc-macro", "client/transaction-pool", "client/transaction-pool/graph", - "client/transaction-pool/primitives", + "client/transaction-pool/api", "frame/assets", "frame/atomic-swap", "frame/aura", diff --git a/bin/node-template/node/Cargo.toml b/bin/node-template/node/Cargo.toml index 435d3d9eaf9a4..88657934b1d07 100644 --- a/bin/node-template/node/Cargo.toml +++ b/bin/node-template/node/Cargo.toml @@ -26,7 +26,7 @@ sc-telemetry = { version = "3.0.0", path = "../../../client/telemetry" } sc-keystore = { version = "3.0.0", path = "../../../client/keystore" } sp-inherents = { version = "3.0.0", path = "../../../primitives/inherents" } sc-transaction-pool = { version = "3.0.0", path = "../../../client/transaction-pool" } -sc-transaction-pool-primitives = { version = "3.0.0", path = "../../../client/transaction-pool/primitives" } +sc-transaction-pool-api = { version = "3.0.0", path = "../../../client/transaction-pool/api" } sc-consensus-aura = { version = "0.9.0", path = "../../../client/consensus/aura" } sp-consensus-aura = { version = "0.9.0", path = "../../../primitives/consensus/aura" } sp-consensus = { version = "0.9.0", path = "../../../primitives/consensus/common" } diff --git a/bin/node-template/node/src/rpc.rs b/bin/node-template/node/src/rpc.rs index 0a195f627cc53..a03d1aad2a883 100644 --- a/bin/node-template/node/src/rpc.rs +++ b/bin/node-template/node/src/rpc.rs @@ -12,7 +12,7 @@ use sp_api::ProvideRuntimeApi; use sp_blockchain::{Error as BlockChainError, HeaderMetadata, HeaderBackend}; use sp_block_builder::BlockBuilder; pub use sc_rpc_api::DenyUnsafe; -use sc_transaction_pool_primitives::TransactionPool; +use sc_transaction_pool_api::TransactionPool; /// Full client dependencies. diff --git a/bin/node/bench/Cargo.toml b/bin/node/bench/Cargo.toml index 24c6d48ad5f82..35adc8d8b57a3 100644 --- a/bin/node/bench/Cargo.toml +++ b/bin/node/bench/Cargo.toml @@ -39,5 +39,5 @@ lazy_static = "1.4.0" parity-util-mem = { version = "0.9.0", default-features = false, features = ["primitive-types"] } parity-db = { version = "0.2.4" } sc-transaction-pool = { version = "3.0.0", path = "../../../client/transaction-pool" } -sc-transaction-pool-primitives = { version = "3.0.0", path = "../../../client/transaction-pool/primitives" } +sc-transaction-pool-api = { version = "3.0.0", path = "../../../client/transaction-pool/api" } futures = { version = "0.3.4", features = ["thread-pool"] } diff --git a/bin/node/bench/src/construct.rs b/bin/node/bench/src/construct.rs index f431a29e998d5..491b261518a4f 100644 --- a/bin/node/bench/src/construct.rs +++ b/bin/node/bench/src/construct.rs @@ -39,7 +39,7 @@ use sp_runtime::{ traits::NumberFor, OpaqueExtrinsic, }; -use sc_transaction_pool_primitives::{ +use sc_transaction_pool_api::{ ImportNotificationStream, PoolFuture, PoolStatus, @@ -198,7 +198,7 @@ impl From for PoolTransaction { } } -impl sc_transaction_pool_primitives::InPoolTransaction for PoolTransaction { +impl sc_transaction_pool_api::InPoolTransaction for PoolTransaction { type Transaction = OpaqueExtrinsic; type Hash = node_primitives::Hash; @@ -224,11 +224,11 @@ impl sc_transaction_pool_primitives::InPoolTransaction for PoolTransaction { #[derive(Clone, Debug)] pub struct Transactions(Vec>); -impl sc_transaction_pool_primitives::TransactionPool for Transactions { +impl sc_transaction_pool_api::TransactionPool for Transactions { type Block = Block; type Hash = node_primitives::Hash; type InPoolTransaction = PoolTransaction; - type Error = sc_transaction_pool_primitives::error::Error; + type Error = sc_transaction_pool_api::error::Error; /// Returns a future that imports a bunch of unverified transactions to the pool. fn submit_at( diff --git a/bin/node/bench/src/txpool.rs b/bin/node/bench/src/txpool.rs index 51aaebf035457..ef1c816109c8d 100644 --- a/bin/node/bench/src/txpool.rs +++ b/bin/node/bench/src/txpool.rs @@ -27,7 +27,7 @@ use node_testing::bench::{BenchDb, Profile, BlockType, KeyTypes, DatabaseType}; use sc_transaction_pool::BasicPool; use sp_runtime::generic::BlockId; -use sc_transaction_pool_primitives::{TransactionPool, TransactionSource}; +use sc_transaction_pool_api::{TransactionPool, TransactionSource}; use crate::core::{self, Path, Mode}; diff --git a/bin/node/cli/Cargo.toml b/bin/node/cli/Cargo.toml index a25ad24506d3a..c8d7d4728b03d 100644 --- a/bin/node/cli/Cargo.toml +++ b/bin/node/cli/Cargo.toml @@ -62,7 +62,7 @@ sc-client-api = { version = "3.0.0", path = "../../../client/api" } sc-chain-spec = { version = "3.0.0", path = "../../../client/chain-spec" } sc-consensus = { version = "0.9.0", path = "../../../client/consensus/common" } sc-transaction-pool = { version = "3.0.0", path = "../../../client/transaction-pool" } -sc-transaction-pool-primitives = { version = "3.0.0", path = "../../../client/transaction-pool/primitives" } +sc-transaction-pool-api = { version = "3.0.0", path = "../../../client/transaction-pool/api" } sc-network = { version = "0.9.0", path = "../../../client/network" } sc-consensus-slots = { version = "0.9.0", path = "../../../client/consensus/slots" } sc-consensus-babe = { version = "0.9.0", path = "../../../client/consensus/babe" } diff --git a/bin/node/cli/src/service.rs b/bin/node/cli/src/service.rs index 1c78af081037a..4886b798b050c 100644 --- a/bin/node/cli/src/service.rs +++ b/bin/node/cli/src/service.rs @@ -628,7 +628,7 @@ mod tests { use sc_service_test::TestNetNode; use crate::service::{new_full_base, new_light_base, NewFullBase}; use sp_runtime::{key_types::BABE, traits::IdentifyAccount, RuntimeAppPublic}; - use sc_transaction_pool_primitives::{MaintainedTransactionPool, ChainEvent}; + use sc_transaction_pool_api::{MaintainedTransactionPool, ChainEvent}; use sc_client_api::BlockBackend; use sc_keystore::LocalKeystore; use sp_inherents::InherentDataProvider; diff --git a/bin/node/rpc/Cargo.toml b/bin/node/rpc/Cargo.toml index 9cb58818c4bb5..1c9f33d7c2272 100644 --- a/bin/node/rpc/Cargo.toml +++ b/bin/node/rpc/Cargo.toml @@ -34,5 +34,5 @@ sp-keystore = { version = "0.9.0", path = "../../../primitives/keystore" } sp-consensus = { version = "0.9.0", path = "../../../primitives/consensus/common" } sp-consensus-babe = { version = "0.9.0", path = "../../../primitives/consensus/babe" } sp-runtime = { version = "3.0.0", path = "../../../primitives/runtime" } -sc-transaction-pool-primitives = { version = "3.0.0", path = "../../../client/transaction-pool/primitives" } +sc-transaction-pool-api = { version = "3.0.0", path = "../../../client/transaction-pool/api" } substrate-frame-rpc-system = { version = "3.0.0", path = "../../../utils/frame/rpc/system" } diff --git a/bin/node/rpc/src/lib.rs b/bin/node/rpc/src/lib.rs index 43a5df0bb38c2..ba17bf7d2c50d 100644 --- a/bin/node/rpc/src/lib.rs +++ b/bin/node/rpc/src/lib.rs @@ -48,7 +48,7 @@ use sp_blockchain::{Error as BlockChainError, HeaderMetadata, HeaderBackend}; use sp_consensus::SelectChain; use sp_consensus_babe::BabeApi; use sc_rpc::SubscriptionTaskExecutor; -use sc_transaction_pool_primitives::TransactionPool; +use sc_transaction_pool_api::TransactionPool; use sc_client_api::AuxStore; /// Light client extra dependencies. diff --git a/client/api/Cargo.toml b/client/api/Cargo.toml index e8d8fd6634f0b..b5faca22b67cb 100644 --- a/client/api/Cargo.toml +++ b/client/api/Cargo.toml @@ -39,7 +39,7 @@ sp-runtime = { version = "3.0.0", default-features = false, path = "../../primit sp-state-machine = { version = "0.9.0", path = "../../primitives/state-machine" } sp-trie = { version = "3.0.0", path = "../../primitives/trie" } sp-storage = { version = "3.0.0", path = "../../primitives/storage" } -sc-transaction-pool-primitives = { version = "3.0.0", path = "../transaction-pool/primitives" } +sc-transaction-pool-api = { version = "3.0.0", path = "../transaction-pool/api" } prometheus-endpoint = { package = "substrate-prometheus-endpoint", version = "0.9.0", path = "../../utils/prometheus" } [dev-dependencies] diff --git a/client/api/src/client.rs b/client/api/src/client.rs index fb74015af5b45..3f4dfc8f35be1 100644 --- a/client/api/src/client.rs +++ b/client/api/src/client.rs @@ -31,7 +31,7 @@ use crate::blockchain::Info; use crate::notifications::StorageEventStream; use sp_utils::mpsc::TracingUnboundedReceiver; use sp_blockchain; -use sc_transaction_pool_primitives::ChainEvent; +use sc_transaction_pool_api::ChainEvent; /// Type that implements `futures::Stream` of block import events. pub type ImportNotifications = TracingUnboundedReceiver>; diff --git a/client/api/src/execution_extensions.rs b/client/api/src/execution_extensions.rs index 6f068a4dae230..fbde16afc7952 100644 --- a/client/api/src/execution_extensions.rs +++ b/client/api/src/execution_extensions.rs @@ -37,7 +37,7 @@ use sp_state_machine::{ExecutionManager, DefaultHandler}; pub use sp_state_machine::ExecutionStrategy; use sp_externalities::Extensions; use parking_lot::RwLock; -use sc_transaction_pool_primitives::OffchainSubmitTransaction; +use sc_transaction_pool_api::OffchainSubmitTransaction; /// Execution strategies settings. #[derive(Debug, Clone)] diff --git a/client/basic-authorship/Cargo.toml b/client/basic-authorship/Cargo.toml index b7439a44735c1..47dc04a37868e 100644 --- a/client/basic-authorship/Cargo.toml +++ b/client/basic-authorship/Cargo.toml @@ -26,7 +26,7 @@ sc-client-api = { version = "3.0.0", path = "../api" } sp-consensus = { version = "0.9.0", path = "../../primitives/consensus/common" } sp-inherents = { version = "3.0.0", path = "../../primitives/inherents" } sc-telemetry = { version = "3.0.0", path = "../telemetry" } -sc-transaction-pool-primitives = { version = "3.0.0", path = "../../client/transaction-pool/primitives" } +sc-transaction-pool-api = { version = "3.0.0", path = "../../client/transaction-pool/api" } sc-block-builder = { version = "0.9.0", path = "../block-builder" } sc-proposer-metrics = { version = "0.9.0", path = "../proposer-metrics" } diff --git a/client/basic-authorship/src/basic_authorship.rs b/client/basic-authorship/src/basic_authorship.rs index 5f06c0a3831ea..590f4275bf760 100644 --- a/client/basic-authorship/src/basic_authorship.rs +++ b/client/basic-authorship/src/basic_authorship.rs @@ -31,7 +31,7 @@ use sp_runtime::{ generic::BlockId, traits::{Block as BlockT, Hash as HashT, Header as HeaderT, DigestFor, BlakeTwo256}, }; -use sc_transaction_pool_primitives::{TransactionPool, InPoolTransaction}; +use sc_transaction_pool_api::{TransactionPool, InPoolTransaction}; use sc_telemetry::{telemetry, TelemetryHandle, CONSENSUS_INFO}; use sc_block_builder::{BlockBuilderApi, BlockBuilderProvider}; use sp_api::{ProvideRuntimeApi, ApiExt}; @@ -472,7 +472,7 @@ mod tests { use substrate_test_runtime_client::{ prelude::*, TestClientBuilder, runtime::{Extrinsic, Transfer}, TestClientBuilderExt, }; - use sc_transaction_pool_primitives::{ChainEvent, MaintainedTransactionPool, TransactionSource}; + use sc_transaction_pool_api::{ChainEvent, MaintainedTransactionPool, TransactionSource}; use sc_transaction_pool::BasicPool; use sp_api::Core; use sp_blockchain::HeaderBackend; diff --git a/client/consensus/manual-seal/Cargo.toml b/client/consensus/manual-seal/Cargo.toml index 4892349f9e217..f7c2e98656c1b 100644 --- a/client/consensus/manual-seal/Cargo.toml +++ b/client/consensus/manual-seal/Cargo.toml @@ -40,7 +40,7 @@ sp-core = { path = "../../../primitives/core", version = "3.0.0"} sp-keystore = { path = "../../../primitives/keystore", version = "0.9.0"} sp-keyring = { path = "../../../primitives/keyring", version = "3.0.0"} sp-api = { path = "../../../primitives/api", version = "3.0.0"} -sc-transaction-pool-primitives = { path = "../../../client/transaction-pool/primitives", version = "3.0.0"} +sc-transaction-pool-api = { path = "../../../client/transaction-pool/api", version = "3.0.0"} sp-timestamp = { path = "../../../primitives/timestamp", version = "3.0.0"} prometheus-endpoint = { package = "substrate-prometheus-endpoint", path = "../../../utils/prometheus", version = "0.9.0"} diff --git a/client/consensus/manual-seal/src/lib.rs b/client/consensus/manual-seal/src/lib.rs index 3f2b15e86bfe6..bf466111c9a9c 100644 --- a/client/consensus/manual-seal/src/lib.rs +++ b/client/consensus/manual-seal/src/lib.rs @@ -47,7 +47,7 @@ pub use self::{ rpc::{EngineCommand, CreatedBlock}, }; use sp_api::{ProvideRuntimeApi, TransactionFor}; -use sc_transaction_pool_primitives::TransactionPool; +use sc_transaction_pool_api::TransactionPool; /// The `ConsensusEngineId` of Manual Seal. pub const MANUAL_SEAL_ENGINE_ID: ConsensusEngineId = [b'm', b'a', b'n', b'l']; @@ -276,7 +276,7 @@ mod tests { }; use sc_transaction_pool::{BasicPool, RevalidationType, Options}; use substrate_test_runtime_transaction_pool::{TestApi, uxt}; - use sc_transaction_pool_primitives::{TransactionPool, MaintainedTransactionPool, TransactionSource}; + use sc_transaction_pool_api::{TransactionPool, MaintainedTransactionPool, TransactionSource}; use sp_runtime::generic::BlockId; use sp_consensus::ImportedAux; use sc_basic_authorship::ProposerFactory; @@ -521,7 +521,7 @@ mod tests { assert!(pool.submit_one(&BlockId::Number(1), SOURCE, uxt(Alice, 1)).await.is_ok()); let header = client.header(&BlockId::Number(1)).expect("db error").expect("imported above"); - pool.maintain(sc_transaction_pool_primitives::ChainEvent::NewBestBlock { + pool.maintain(sc_transaction_pool_api::ChainEvent::NewBestBlock { hash: header.hash(), tree_route: None, }).await; diff --git a/client/consensus/manual-seal/src/seal_block.rs b/client/consensus/manual-seal/src/seal_block.rs index cb826be5ec0d9..dde041a46733f 100644 --- a/client/consensus/manual-seal/src/seal_block.rs +++ b/client/consensus/manual-seal/src/seal_block.rs @@ -34,7 +34,7 @@ use std::collections::HashMap; use std::time::Duration; use sp_inherents::{CreateInherentDataProviders, InherentDataProvider}; use sp_api::{ProvideRuntimeApi, TransactionFor}; -use sc_transaction_pool_primitives::TransactionPool; +use sc_transaction_pool_api::TransactionPool; /// max duration for creating a proposal in secs pub const MAX_PROPOSAL_DURATION: u64 = 10; diff --git a/client/informant/Cargo.toml b/client/informant/Cargo.toml index dc2e848383f68..95a1e4a02f850 100644 --- a/client/informant/Cargo.toml +++ b/client/informant/Cargo.toml @@ -22,5 +22,5 @@ sc-client-api = { version = "3.0.0", path = "../api" } sc-network = { version = "0.9.0", path = "../network" } sp-blockchain = { version = "3.0.0", path = "../../primitives/blockchain" } sp-runtime = { version = "3.0.0", path = "../../primitives/runtime" } -sc-transaction-pool-primitives = { version = "3.0.0", path = "../transaction-pool/primitives" } +sc-transaction-pool-api = { version = "3.0.0", path = "../transaction-pool/api" } wasm-timer = "0.2" diff --git a/client/informant/src/lib.rs b/client/informant/src/lib.rs index bed29a33a637b..a05ab368e3ed7 100644 --- a/client/informant/src/lib.rs +++ b/client/informant/src/lib.rs @@ -27,7 +27,7 @@ use sc_client_api::{BlockchainEvents, UsageProvider}; use sc_network::NetworkService; use sp_blockchain::HeaderMetadata; use sp_runtime::traits::{Block as BlockT, Header}; -use sc_transaction_pool_primitives::TransactionPool; +use sc_transaction_pool_api::TransactionPool; use std::{fmt::Display, sync::Arc, time::Duration, collections::VecDeque}; mod display; diff --git a/client/offchain/Cargo.toml b/client/offchain/Cargo.toml index c3b68cb71be7a..9f0fbdb64dccf 100644 --- a/client/offchain/Cargo.toml +++ b/client/offchain/Cargo.toml @@ -41,7 +41,7 @@ hyper-rustls = "0.21.0" sc-client-db = { version = "0.9.0", default-features = true, path = "../db" } sc-block-builder = { version = "0.9.0", path = "../block-builder" } sc-transaction-pool = { version = "3.0.0", path = "../transaction-pool" } -sc-transaction-pool-primitives = { version = "3.0.0", path = "../transaction-pool/primitives" } +sc-transaction-pool-api = { version = "3.0.0", path = "../transaction-pool/api" } sp-tracing = { version = "3.0.0", path = "../../primitives/tracing" } sp-consensus = { version = "0.9.0", path = "../../primitives/consensus/common" } substrate-test-runtime-client = { version = "2.0.0", path = "../../test-utils/runtime/client" } diff --git a/client/offchain/src/lib.rs b/client/offchain/src/lib.rs index cfc15a9bcc40a..21b1b7b7d21ca 100644 --- a/client/offchain/src/lib.rs +++ b/client/offchain/src/lib.rs @@ -236,7 +236,7 @@ mod tests { DefaultTestClientBuilderExt, ClientBlockImportExt, }; use sc_transaction_pool::{BasicPool, FullChainApi}; - use sc_transaction_pool_primitives::{TransactionPool, InPoolTransaction}; + use sc_transaction_pool_api::{TransactionPool, InPoolTransaction}; use sp_consensus::BlockOrigin; use sc_client_api::Backend as _; use sc_block_builder::BlockBuilderProvider as _; @@ -268,13 +268,13 @@ mod tests { Arc, Block>> ); - impl sc_transaction_pool_primitives::OffchainSubmitTransaction for TestPool { + impl sc_transaction_pool_api::OffchainSubmitTransaction for TestPool { fn submit_at( &self, at: &BlockId, extrinsic: ::Extrinsic, ) -> Result<(), ()> { - let source = sc_transaction_pool_primitives::TransactionSource::Local; + let source = sc_transaction_pool_api::TransactionSource::Local; futures::executor::block_on(self.0.submit_one(&at, source, extrinsic)) .map(|_| ()) .map_err(|_| ()) diff --git a/client/rpc-api/Cargo.toml b/client/rpc-api/Cargo.toml index 510fe68814e91..3f88f46d5202c 100644 --- a/client/rpc-api/Cargo.toml +++ b/client/rpc-api/Cargo.toml @@ -28,6 +28,6 @@ sp-runtime = { path = "../../primitives/runtime" , version = "3.0.0"} sp-chain-spec = { path = "../../primitives/chain-spec" , version = "3.0.0"} serde = { version = "1.0.101", features = ["derive"] } serde_json = "1.0.41" -sc-transaction-pool-primitives = { version = "3.0.0", path = "../transaction-pool/primitives" } +sc-transaction-pool-api = { version = "3.0.0", path = "../transaction-pool/api" } sp-rpc = { version = "3.0.0", path = "../../primitives/rpc" } sp-tracing = { version = "3.0.0", path = "../../primitives/tracing" } diff --git a/client/rpc-api/src/author/error.rs b/client/rpc-api/src/author/error.rs index 836e9e0ce2fb8..009a0a290d6ba 100644 --- a/client/rpc-api/src/author/error.rs +++ b/client/rpc-api/src/author/error.rs @@ -37,7 +37,7 @@ pub enum Error { Client(Box), /// Transaction pool error, #[display(fmt="Transaction pool error: {}", _0)] - Pool(sc_transaction_pool_primitives::error::Error), + Pool(sc_transaction_pool_api::error::Error), /// Verification error #[display(fmt="Extrinsic verification error: {}", _0)] #[from(ignore)] @@ -105,7 +105,7 @@ const POOL_UNACTIONABLE: i64 = POOL_INVALID_TX + 8; impl From for rpc::Error { fn from(e: Error) -> Self { - use sc_transaction_pool_primitives::error::{Error as PoolError}; + use sc_transaction_pool_api::error::{Error as PoolError}; match e { Error::BadFormat(e) => rpc::Error { diff --git a/client/rpc-api/src/author/mod.rs b/client/rpc-api/src/author/mod.rs index 70c467f8f73d2..70da73ee8a00e 100644 --- a/client/rpc-api/src/author/mod.rs +++ b/client/rpc-api/src/author/mod.rs @@ -24,7 +24,7 @@ pub mod hash; use jsonrpc_derive::rpc; use jsonrpc_pubsub::{typed::Subscriber, SubscriptionId}; use sp_core::Bytes; -use sc_transaction_pool_primitives::TransactionStatus; +use sc_transaction_pool_api::TransactionStatus; use self::error::{FutureResult, Result}; pub use self::gen_client::Client as AuthorClient; @@ -78,7 +78,7 @@ pub trait AuthorApi { /// Submit an extrinsic to watch. /// - /// See [`TransactionStatus`](sc_transaction_pool_primitives::TransactionStatus) for details on transaction + /// See [`TransactionStatus`](sc_transaction_pool_api::TransactionStatus) for details on transaction /// life cycle. #[pubsub( subscription = "author_extrinsicUpdate", diff --git a/client/rpc/Cargo.toml b/client/rpc/Cargo.toml index 663fc0365156c..19d8ff6216e9a 100644 --- a/client/rpc/Cargo.toml +++ b/client/rpc/Cargo.toml @@ -41,7 +41,7 @@ hash-db = { version = "0.15.2", default-features = false } parking_lot = "0.11.1" lazy_static = { version = "1.4.0", optional = true } sp-tracing = { version = "3.0.0", path = "../../primitives/tracing" } -sc-transaction-pool-primitives = { version = "3.0.0", path = "../transaction-pool/primitives" } +sc-transaction-pool-api = { version = "3.0.0", path = "../transaction-pool/api" } [dev-dependencies] assert_matches = "1.3.0" diff --git a/client/rpc/src/author/mod.rs b/client/rpc/src/author/mod.rs index f0ad3d2115b49..ed7899d524801 100644 --- a/client/rpc/src/author/mod.rs +++ b/client/rpc/src/author/mod.rs @@ -36,7 +36,7 @@ use sp_core::Bytes; use sp_keystore::{SyncCryptoStorePtr, SyncCryptoStore}; use sp_api::ProvideRuntimeApi; use sp_runtime::generic; -use sc_transaction_pool_primitives::{ +use sc_transaction_pool_api::{ TransactionPool, InPoolTransaction, TransactionStatus, TransactionSource, BlockHash, TxHash, TransactionFor, error::IntoPoolError, }; diff --git a/client/service/Cargo.toml b/client/service/Cargo.toml index ae50916ba64ae..23077328b8512 100644 --- a/client/service/Cargo.toml +++ b/client/service/Cargo.toml @@ -66,7 +66,7 @@ codec = { package = "parity-scale-codec", version = "2.0.0" } sc-executor = { version = "0.9.0", path = "../executor" } sc-transaction-pool = { version = "3.0.0", path = "../transaction-pool" } sp-transaction-pool = { version = "3.0.0", path = "../../primitives/transaction-pool" } -sc-transaction-pool-primitives = { version = "3.0.0", path = "../transaction-pool/primitives" } +sc-transaction-pool-api = { version = "3.0.0", path = "../transaction-pool/api" } sp-transaction-storage-proof = { version = "3.0.0", path = "../../primitives/transaction-storage-proof" } sc-rpc-server = { version = "3.0.0", path = "../rpc-servers" } sc-rpc = { version = "3.0.0", path = "../rpc" } diff --git a/client/service/src/builder.rs b/client/service/src/builder.rs index d8ed8ac78fe2c..6318469a7f0bc 100644 --- a/client/service/src/builder.rs +++ b/client/service/src/builder.rs @@ -60,7 +60,7 @@ use sc_telemetry::{ TelemetryHandle, SUBSTRATE_INFO, }; -use sc_transaction_pool_primitives::MaintainedTransactionPool; +use sc_transaction_pool_api::MaintainedTransactionPool; use prometheus_endpoint::Registry; use sc_client_db::{Backend, DatabaseSettings}; use sp_core::traits::{ diff --git a/client/service/src/lib.rs b/client/service/src/lib.rs index 25e4577309251..40cb1aeea6a9e 100644 --- a/client/service/src/lib.rs +++ b/client/service/src/lib.rs @@ -64,7 +64,7 @@ pub use sc_chain_spec::{ ChainSpec, GenericChainSpec, Properties, RuntimeGenesis, Extension as ChainSpecExtension, NoExtension, ChainType, }; -pub use sc_transaction_pool_primitives::{TransactionPool, InPoolTransaction, error::IntoPoolError}; +pub use sc_transaction_pool_api::{TransactionPool, InPoolTransaction, error::IntoPoolError}; pub use sc_transaction_pool::Options as TransactionPoolOptions; pub use sc_rpc::Metadata as RpcMetadata; pub use sc_executor::NativeExecutionDispatch; @@ -456,7 +456,7 @@ where Pool: TransactionPool, B: BlockT, H: std::hash::Hash + Eq + sp_runtime::traits::Member + sp_runtime::traits::MaybeSerialize, - E: IntoPoolError + From, + E: IntoPoolError + From, { pool.ready() .filter(|t| t.is_propagable()) @@ -475,7 +475,7 @@ where Pool: 'static + TransactionPool, B: BlockT, H: std::hash::Hash + Eq + sp_runtime::traits::Member + sp_runtime::traits::MaybeSerialize, - E: 'static + IntoPoolError + From, + E: 'static + IntoPoolError + From, { fn transactions(&self) -> Vec<(H, B::Extrinsic)> { transactions_to_propagate(&*self.pool) @@ -505,12 +505,12 @@ where let best_block_id = BlockId::hash(self.client.info().best_hash); - let import_future = self.pool.submit_one(&best_block_id, sc_transaction_pool_primitives::TransactionSource::External, uxt); + let import_future = self.pool.submit_one(&best_block_id, sc_transaction_pool_api::TransactionSource::External, uxt); Box::pin(async move { match import_future.await { Ok(_) => TransactionImport::NewGood, Err(e) => match e.into_pool_error() { - Ok(sc_transaction_pool_primitives::error::Error::AlreadyImported(_)) => TransactionImport::KnownGood, + Ok(sc_transaction_pool_api::error::Error::AlreadyImported(_)) => TransactionImport::KnownGood, Ok(e) => { debug!("Error adding transaction to the pool: {:?}", e); TransactionImport::Bad diff --git a/client/service/src/metrics.rs b/client/service/src/metrics.rs index 0c0f4ae653949..7c74b327ea260 100644 --- a/client/service/src/metrics.rs +++ b/client/service/src/metrics.rs @@ -24,7 +24,7 @@ use prometheus_endpoint::{register, Gauge, U64, Registry, PrometheusError, Opts, use sc_telemetry::{telemetry, TelemetryHandle, SUBSTRATE_INFO}; use sp_api::ProvideRuntimeApi; use sp_runtime::traits::{NumberFor, Block, SaturatedConversion, UniqueSaturatedInto}; -use sc_transaction_pool_primitives::{PoolStatus, MaintainedTransactionPool}; +use sc_transaction_pool_api::{PoolStatus, MaintainedTransactionPool}; use sp_utils::metrics::register_globals; use sc_client_api::{ClientInfo, UsageProvider}; use sc_network::{config::Role, NetworkStatus, NetworkService}; diff --git a/client/service/test/Cargo.toml b/client/service/test/Cargo.toml index ff1bf262ae90b..27aa14b0d2bc1 100644 --- a/client/service/test/Cargo.toml +++ b/client/service/test/Cargo.toml @@ -33,7 +33,7 @@ sc-network = { version = "0.9.0", path = "../../network" } sp-consensus = { version = "0.9.0", path = "../../../primitives/consensus/common" } sp-runtime = { version = "3.0.0", path = "../../../primitives/runtime" } sp-core = { version = "3.0.0", path = "../../../primitives/core" } -sc-transaction-pool-primitives = { version = "3.0.0", path = "../../../client/transaction-pool/primitives" } +sc-transaction-pool-api = { version = "3.0.0", path = "../../../client/transaction-pool/api" } substrate-test-runtime = { version = "2.0.0", path = "../../../test-utils/runtime" } substrate-test-runtime-client = { version = "2.0.0", path = "../../../test-utils/runtime/client" } sc-client-api = { version = "3.0.0", path = "../../api" } diff --git a/client/service/test/src/lib.rs b/client/service/test/src/lib.rs index a973ac48fb97a..44228d1575cc2 100644 --- a/client/service/test/src/lib.rs +++ b/client/service/test/src/lib.rs @@ -47,7 +47,7 @@ use sp_blockchain::HeaderBackend; use sc_network::{multiaddr, Multiaddr}; use sc_network::config::{NetworkConfiguration, TransportConfig}; use sp_runtime::{generic::BlockId, traits::Block as BlockT}; -use sc_transaction_pool_primitives::TransactionPool; +use sc_transaction_pool_api::TransactionPool; use sc_client_api::{Backend, CallExecutor}; use parking_lot::Mutex; @@ -575,7 +575,7 @@ pub fn sync( let first_user_data = &network.full_nodes[0].2; let best_block = BlockId::number(first_service.client().info().best_number); let extrinsic = extrinsic_factory(&first_service, first_user_data); - let source = sc_transaction_pool_primitives::TransactionSource::External; + let source = sc_transaction_pool_api::TransactionSource::External; futures::executor::block_on( first_service.transaction_pool().submit_one(&best_block, source, extrinsic) diff --git a/client/transaction-pool/Cargo.toml b/client/transaction-pool/Cargo.toml index 3bd2ca7c13f01..633a61cd761c9 100644 --- a/client/transaction-pool/Cargo.toml +++ b/client/transaction-pool/Cargo.toml @@ -28,7 +28,7 @@ sp-core = { version = "3.0.0", path = "../../primitives/core" } sp-runtime = { version = "3.0.0", path = "../../primitives/runtime" } sp-tracing = { version = "3.0.0", path = "../../primitives/tracing" } sp-transaction-pool = { version = "3.0.0", path = "../../primitives/transaction-pool" } -sc-transaction-pool-primitives = { version = "3.0.0", path = "./primitives" } +sc-transaction-pool-api = { version = "3.0.0", path = "./api" } sp-blockchain = { version = "3.0.0", path = "../../primitives/blockchain" } sp-utils = { version = "3.0.0", path = "../../primitives/utils" } wasm-timer = "0.2" diff --git a/client/transaction-pool/primitives/Cargo.toml b/client/transaction-pool/api/Cargo.toml similarity index 95% rename from client/transaction-pool/primitives/Cargo.toml rename to client/transaction-pool/api/Cargo.toml index bf8a80fc888dc..ec7b5e5361cb2 100644 --- a/client/transaction-pool/primitives/Cargo.toml +++ b/client/transaction-pool/api/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "sc-transaction-pool-primitives" +name = "sc-transaction-pool-api" version = "3.0.0" authors = ["Parity Technologies "] edition = "2018" diff --git a/client/transaction-pool/primitives/src/error.rs b/client/transaction-pool/api/src/error.rs similarity index 100% rename from client/transaction-pool/primitives/src/error.rs rename to client/transaction-pool/api/src/error.rs diff --git a/client/transaction-pool/primitives/src/lib.rs b/client/transaction-pool/api/src/lib.rs similarity index 100% rename from client/transaction-pool/primitives/src/lib.rs rename to client/transaction-pool/api/src/lib.rs diff --git a/client/transaction-pool/graph/Cargo.toml b/client/transaction-pool/graph/Cargo.toml index 78c3690082825..b272b6b4f49a7 100644 --- a/client/transaction-pool/graph/Cargo.toml +++ b/client/transaction-pool/graph/Cargo.toml @@ -24,7 +24,7 @@ sp-blockchain = { version = "3.0.0", path = "../../../primitives/blockchain" } sp-utils = { version = "3.0.0", path = "../../../primitives/utils" } sp-core = { version = "3.0.0", path = "../../../primitives/core" } sp-runtime = { version = "3.0.0", path = "../../../primitives/runtime" } -sc-transaction-pool-primitives = { version = "3.0.0", path = "../primitives" } +sc-transaction-pool-api = { version = "3.0.0", path = "../api" } parity-util-mem = { version = "0.9.0", default-features = false, features = ["primitive-types"] } linked-hash-map = "0.5.2" retain_mut = "0.1.3" diff --git a/client/transaction-pool/graph/benches/basics.rs b/client/transaction-pool/graph/benches/basics.rs index ef764aab4ab59..aefdf26e4d18c 100644 --- a/client/transaction-pool/graph/benches/basics.rs +++ b/client/transaction-pool/graph/benches/basics.rs @@ -51,9 +51,9 @@ fn to_tag(nonce: u64, from: AccountId) -> Tag { impl ChainApi for TestApi { type Block = Block; - type Error = sc_transaction_pool_primitives::error::Error; - type ValidationFuture = Ready>; - type BodyFuture = Ready>>>; + type Error = sc_transaction_pool_api::error::Error; + type ValidationFuture = Ready>; + type BodyFuture = Ready>>>; fn validate_transaction( &self, diff --git a/client/transaction-pool/graph/src/base_pool.rs b/client/transaction-pool/graph/src/base_pool.rs index 3b147f6869132..aded4b6344f82 100644 --- a/client/transaction-pool/graph/src/base_pool.rs +++ b/client/transaction-pool/graph/src/base_pool.rs @@ -37,7 +37,7 @@ use sp_runtime::transaction_validity::{ TransactionPriority as Priority, TransactionSource as Source, }; -use sc_transaction_pool_primitives::{error, PoolStatus, InPoolTransaction}; +use sc_transaction_pool_api::{error, PoolStatus, InPoolTransaction}; use crate::future::{FutureTransactions, WaitingTransaction}; use crate::ready::ReadyTransactions; diff --git a/client/transaction-pool/graph/src/pool.rs b/client/transaction-pool/graph/src/pool.rs index 86517567de3b5..54b42d62b66ae 100644 --- a/client/transaction-pool/graph/src/pool.rs +++ b/client/transaction-pool/graph/src/pool.rs @@ -29,7 +29,7 @@ use sp_runtime::{ TransactionValidity, TransactionTag as Tag, TransactionValidityError, TransactionSource, }, }; -use sc_transaction_pool_primitives::error; +use sc_transaction_pool_api::error; use wasm_timer::Instant; use futures::channel::mpsc::Receiver; @@ -462,7 +462,7 @@ mod tests { use parking_lot::Mutex; use futures::executor::block_on; use super::*; - use sc_transaction_pool_primitives::TransactionStatus; + use sc_transaction_pool_api::TransactionStatus; use sp_runtime::{ traits::Hash, transaction_validity::{ValidTransaction, InvalidTransaction, TransactionSource}, diff --git a/client/transaction-pool/graph/src/ready.rs b/client/transaction-pool/graph/src/ready.rs index 3a20d24c573fe..07453808631f2 100644 --- a/client/transaction-pool/graph/src/ready.rs +++ b/client/transaction-pool/graph/src/ready.rs @@ -29,7 +29,7 @@ use sp_runtime::traits::Member; use sp_runtime::transaction_validity::{ TransactionTag as Tag, }; -use sc_transaction_pool_primitives::error; +use sc_transaction_pool_api::error; use crate::{ base_pool::Transaction, diff --git a/client/transaction-pool/graph/src/validated_pool.rs b/client/transaction-pool/graph/src/validated_pool.rs index 04242885b5698..6be65650d35f0 100644 --- a/client/transaction-pool/graph/src/validated_pool.rs +++ b/client/transaction-pool/graph/src/validated_pool.rs @@ -29,7 +29,7 @@ use sp_runtime::{ traits::{self, SaturatedConversion}, transaction_validity::{TransactionTag as Tag, ValidTransaction, TransactionSource}, }; -use sc_transaction_pool_primitives::{error, PoolStatus}; +use sc_transaction_pool_api::{error, PoolStatus}; use wasm_timer::Instant; use futures::channel::mpsc::{channel, Sender}; use retain_mut::RetainMut; diff --git a/client/transaction-pool/graph/src/watcher.rs b/client/transaction-pool/graph/src/watcher.rs index eb9b126086054..433ade3dbdd87 100644 --- a/client/transaction-pool/graph/src/watcher.rs +++ b/client/transaction-pool/graph/src/watcher.rs @@ -19,7 +19,7 @@ //! Extrinsics status updates. use futures::Stream; -use sc_transaction_pool_primitives::TransactionStatus; +use sc_transaction_pool_api::TransactionStatus; use sp_utils::mpsc::{tracing_unbounded, TracingUnboundedSender, TracingUnboundedReceiver}; /// Extrinsic watcher. diff --git a/client/transaction-pool/src/error.rs b/client/transaction-pool/src/error.rs index 701f1b69351ad..23afab0c74a7b 100644 --- a/client/transaction-pool/src/error.rs +++ b/client/transaction-pool/src/error.rs @@ -18,7 +18,7 @@ //! Transaction pool error. -use sc_transaction_pool_primitives::error::Error as TxPoolError; +use sc_transaction_pool_api::error::Error as TxPoolError; /// Transaction pool result. pub type Result = std::result::Result; @@ -41,7 +41,7 @@ pub enum Error { } -impl sc_transaction_pool_primitives::error::IntoPoolError for Error { +impl sc_transaction_pool_api::error::IntoPoolError for Error { fn into_pool_error(self) -> std::result::Result { match self { Error::Pool(e) => Ok(e), diff --git a/client/transaction-pool/src/lib.rs b/client/transaction-pool/src/lib.rs index 8f0436e75c763..16150e94866b5 100644 --- a/client/transaction-pool/src/lib.rs +++ b/client/transaction-pool/src/lib.rs @@ -43,7 +43,7 @@ use sp_runtime::{ traits::{Block as BlockT, NumberFor, AtLeast32Bit, Extrinsic, Zero, Header as HeaderT}, }; use sp_core::traits::SpawnEssentialNamed; -use sc_transaction_pool_primitives::{ +use sc_transaction_pool_api::{ TransactionPool, PoolStatus, ImportNotificationStream, TxHash, TransactionFor, TransactionStatusStreamFor, MaintainedTransactionPool, PoolFuture, ChainEvent, TransactionSource, @@ -420,7 +420,7 @@ where } } -impl sc_transaction_pool_primitives::LocalTransactionPool +impl sc_transaction_pool_api::LocalTransactionPool for BasicPool, Block> where Block: BlockT, @@ -438,7 +438,7 @@ where fn submit_local( &self, at: &BlockId, - xt: sc_transaction_pool_primitives::LocalTransactionFor, + xt: sc_transaction_pool_api::LocalTransactionFor, ) -> Result { use sc_transaction_graph::ValidatedTransaction; use sp_runtime::traits::SaturatedConversion; diff --git a/client/transaction-pool/src/revalidation.rs b/client/transaction-pool/src/revalidation.rs index e34d0437d9a74..13ab199d64498 100644 --- a/client/transaction-pool/src/revalidation.rs +++ b/client/transaction-pool/src/revalidation.rs @@ -363,7 +363,7 @@ where mod tests { use super::*; use sc_transaction_graph::Pool; - use sc_transaction_pool_primitives::TransactionSource; + use sc_transaction_pool_api::TransactionSource; use substrate_test_runtime_transaction_pool::{TestApi, uxt}; use futures::executor::block_on; use substrate_test_runtime_client::AccountKeyring::*; diff --git a/client/transaction-pool/src/testing/pool.rs b/client/transaction-pool/src/testing/pool.rs index fcd6a2e2a9b89..d64075efead03 100644 --- a/client/transaction-pool/src/testing/pool.rs +++ b/client/transaction-pool/src/testing/pool.rs @@ -17,7 +17,7 @@ // along with this program. If not, see . use crate::*; -use sc_transaction_pool_primitives::TransactionStatus; +use sc_transaction_pool_api::TransactionStatus; use futures::executor::{block_on, block_on_stream}; use sp_runtime::{ generic::BlockId, @@ -938,7 +938,7 @@ fn should_not_accept_old_signatures() { assert_matches::assert_matches!( block_on(pool.submit_one(&BlockId::number(0), SOURCE, xt.clone())), Err(error::Error::Pool( - sc_transaction_pool_primitives::error::Error::InvalidTransaction(InvalidTransaction::BadProof) + sc_transaction_pool_api::error::Error::InvalidTransaction(InvalidTransaction::BadProof) )), "Should be invalid transaction with bad proof", ); diff --git a/docs/Upgrading-2.0-to-3.0.md b/docs/Upgrading-2.0-to-3.0.md index 65bf669c2f0a1..b5d35567a095f 100644 --- a/docs/Upgrading-2.0-to-3.0.md +++ b/docs/Upgrading-2.0-to-3.0.md @@ -353,7 +353,7 @@ As said, we've added a new optional RPC service for improved light client suppor @@ -49,6 +49,7 @@ use sp_consensus::SelectChain; use sp_consensus_babe::BabeApi; use sc_rpc::SubscriptionTaskExecutor; - use sc_transaction_pool_primitives::TransactionPool; + use sc_transaction_pool_api::TransactionPool; +use sc_client_api::AuxStore; /// Light client extra dependencies. @@ -1003,7 +1003,7 @@ Altogether this accumulates to the following diff for `node/cli/src/service.rs`. use crate::service::{new_full_base, new_light_base, NewFullBase}; - use sp_runtime::traits::IdentifyAccount; + use sp_runtime::{key_types::BABE, traits::IdentifyAccount, RuntimeAppPublic}; - use sc_transaction_pool_primitives::{MaintainedTransactionPool, ChainEvent}; + use sc_transaction_pool_api::{MaintainedTransactionPool, ChainEvent}; use sc_client_api::BlockBackend; + use sc_keystore::LocalKeystore; diff --git a/test-utils/runtime/transaction-pool/Cargo.toml b/test-utils/runtime/transaction-pool/Cargo.toml index 5b60e911fb1e3..5946154ba28c7 100644 --- a/test-utils/runtime/transaction-pool/Cargo.toml +++ b/test-utils/runtime/transaction-pool/Cargo.toml @@ -18,6 +18,6 @@ codec = { package = "parity-scale-codec", version = "2.0.0" } sp-blockchain = { version = "3.0.0", path = "../../../primitives/blockchain" } sp-runtime = { version = "3.0.0", path = "../../../primitives/runtime" } sc-transaction-graph = { version = "3.0.0", path = "../../../client/transaction-pool/graph" } -sc-transaction-pool-primitives = { version = "3.0.0", path = "../../../client/transaction-pool/primitives" } +sc-transaction-pool-api = { version = "3.0.0", path = "../../../client/transaction-pool/api" } futures = { version = "0.3.1", features = ["compat"] } derive_more = "0.99.2" diff --git a/test-utils/runtime/transaction-pool/src/lib.rs b/test-utils/runtime/transaction-pool/src/lib.rs index d7dcf8b64c2dd..297e6ce32871e 100644 --- a/test-utils/runtime/transaction-pool/src/lib.rs +++ b/test-utils/runtime/transaction-pool/src/lib.rs @@ -39,10 +39,10 @@ use futures::future::ready; /// Error type used by [`TestApi`]. #[derive(Debug, derive_more::From, derive_more::Display)] -pub struct Error(sc_transaction_pool_primitives::error::Error); +pub struct Error(sc_transaction_pool_api::error::Error); -impl sc_transaction_pool_primitives::error::IntoPoolError for Error { - fn into_pool_error(self) -> Result { +impl sc_transaction_pool_api::error::IntoPoolError for Error { + fn into_pool_error(self) -> Result { Ok(self.0) } } diff --git a/test-utils/test-runner/Cargo.toml b/test-utils/test-runner/Cargo.toml index 685a7f78d8cc2..36bfdb29e9461 100644 --- a/test-utils/test-runner/Cargo.toml +++ b/test-utils/test-runner/Cargo.toml @@ -15,7 +15,7 @@ sc-cli = { version = "0.9.0", path = "../../client/cli" } sc-basic-authorship = { version = "0.9.0", path = "../../client/basic-authorship" } sc-rpc = { version = "3.0.0", path = "../../client/rpc" } sc-transaction-pool = { version = "3.0.0", path = "../../client/transaction-pool" } -sc-transaction-pool-primitives = { version = "3.0.0", path = "../../client/transaction-pool/primitives" } +sc-transaction-pool-api = { version = "3.0.0", path = "../../client/transaction-pool/api" } sc-transaction-graph = { version = "3.0.0", path = "../../client/transaction-pool/graph" } sc-client-api = { version = "3.0.0", path = "../../client/api" } sc-rpc-server = { version = "3.0.0", path = "../../client/rpc-servers" } diff --git a/test-utils/test-runner/src/node.rs b/test-utils/test-runner/src/node.rs index 65d104c4928cb..f41466db583f8 100644 --- a/test-utils/test-runner/src/node.rs +++ b/test-utils/test-runner/src/node.rs @@ -41,7 +41,7 @@ use sp_runtime::{generic::UncheckedExtrinsic, traits::NumberFor}; use sp_session::SessionKeys; use sp_state_machine::Ext; use sp_transaction_pool::runtime_api::TaggedTransactionQueue; -use sc_transaction_pool_primitives::TransactionPool; +use sc_transaction_pool_api::TransactionPool; use crate::{ChainInfo, utils::logger}; use log::LevelFilter; diff --git a/utils/frame/rpc/system/Cargo.toml b/utils/frame/rpc/system/Cargo.toml index 4681c65d66240..3572400cee527 100644 --- a/utils/frame/rpc/system/Cargo.toml +++ b/utils/frame/rpc/system/Cargo.toml @@ -26,7 +26,7 @@ sp-api = { version = "3.0.0", path = "../../../../primitives/api" } frame-system-rpc-runtime-api = { version = "3.0.0", path = "../../../../frame/system/rpc/runtime-api" } sp-core = { version = "3.0.0", path = "../../../../primitives/core" } sp-blockchain = { version = "3.0.0", path = "../../../../primitives/blockchain" } -sc-transaction-pool-primitives = { version = "3.0.0", path = "../../../../client/transaction-pool/primitives" } +sc-transaction-pool-api = { version = "3.0.0", path = "../../../../client/transaction-pool/api" } sp-block-builder = { version = "3.0.0", path = "../../../../primitives/block-builder" } sc-rpc-api = { version = "0.9.0", path = "../../../../client/rpc-api" } diff --git a/utils/frame/rpc/system/src/lib.rs b/utils/frame/rpc/system/src/lib.rs index dbc43a3400334..e80d457de98dd 100644 --- a/utils/frame/rpc/system/src/lib.rs +++ b/utils/frame/rpc/system/src/lib.rs @@ -36,7 +36,7 @@ use sp_runtime::{ traits, }; use sp_core::{hexdisplay::HexDisplay, Bytes}; -use sc_transaction_pool_primitives::{TransactionPool, InPoolTransaction}; +use sc_transaction_pool_api::{TransactionPool, InPoolTransaction}; use sp_block_builder::BlockBuilder; use sc_rpc_api::DenyUnsafe; From 62939f986f44c638ac61a34438b8147685298fa5 Mon Sep 17 00:00:00 2001 From: Seun Lanlege Date: Thu, 1 Jul 2021 12:37:01 +0100 Subject: [PATCH 04/11] TP --- client/consensus/manual-seal/src/lib.rs | 20 +++++++++---------- .../consensus/manual-seal/src/seal_block.rs | 10 +++++----- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/client/consensus/manual-seal/src/lib.rs b/client/consensus/manual-seal/src/lib.rs index bf466111c9a9c..5d93f6724ee9f 100644 --- a/client/consensus/manual-seal/src/lib.rs +++ b/client/consensus/manual-seal/src/lib.rs @@ -94,7 +94,7 @@ pub fn import_queue( } /// Params required to start the instant sealing authorship task. -pub struct ManualSealParams, P, SC, CS, CIDP> { +pub struct ManualSealParams, TP, SC, CS, CIDP> { /// Block import instance for well. importing blocks. pub block_import: BI, @@ -105,7 +105,7 @@ pub struct ManualSealParams, P, SC, CS pub client: Arc, /// Shared reference to the transaction pool. - pub pool: Arc

, + pub pool: Arc, /// Stream, Basically the receiving end of a channel for sending commands to /// the authorship task. @@ -122,7 +122,7 @@ pub struct ManualSealParams, P, SC, CS } /// Params required to start the manual sealing authorship task. -pub struct InstantSealParams, P, SC, CIDP> { +pub struct InstantSealParams, TP, SC, CIDP> { /// Block import instance for well. importing blocks. pub block_import: BI, @@ -133,7 +133,7 @@ pub struct InstantSealParams, P, SC, C pub client: Arc, /// Shared reference to the transaction pool. - pub pool: Arc

, + pub pool: Arc, /// SelectChain strategy. pub select_chain: SC, @@ -146,7 +146,7 @@ pub struct InstantSealParams, P, SC, C } /// Creates the background authorship task for the manual seal engine. -pub async fn run_manual_seal( +pub async fn run_manual_seal( ManualSealParams { mut block_import, mut env, @@ -156,7 +156,7 @@ pub async fn run_manual_seal( select_chain, consensus_data_provider, create_inherent_data_providers, - }: ManualSealParams + }: ManualSealParams ) where B: BlockT + 'static, @@ -169,7 +169,7 @@ pub async fn run_manual_seal( CS: Stream::Hash>> + Unpin + 'static, SC: SelectChain + 'static, TransactionFor: 'static, - P: TransactionPool, + TP: TransactionPool, CIDP: CreateInherentDataProviders, { while let Some(command) = commands_stream.next().await { @@ -215,7 +215,7 @@ pub async fn run_manual_seal( /// runs the background authorship task for the instant seal engine. /// instant-seal creates a new block for every transaction imported into /// the transaction pool. -pub async fn run_instant_seal( +pub async fn run_instant_seal( InstantSealParams { block_import, env, @@ -224,7 +224,7 @@ pub async fn run_instant_seal( select_chain, consensus_data_provider, create_inherent_data_providers, - }: InstantSealParams + }: InstantSealParams ) where B: BlockT + 'static, @@ -236,7 +236,7 @@ pub async fn run_instant_seal( E::Proposer: Proposer>, SC: SelectChain + 'static, TransactionFor: 'static, - P: TransactionPool, + TP: TransactionPool, CIDP: CreateInherentDataProviders, { // instant-seal creates blocks as soon as transactions are imported diff --git a/client/consensus/manual-seal/src/seal_block.rs b/client/consensus/manual-seal/src/seal_block.rs index dde041a46733f..450a7bff4cd40 100644 --- a/client/consensus/manual-seal/src/seal_block.rs +++ b/client/consensus/manual-seal/src/seal_block.rs @@ -40,7 +40,7 @@ use sc_transaction_pool_api::TransactionPool; pub const MAX_PROPOSAL_DURATION: u64 = 10; /// params for sealing a new block -pub struct SealBlockParams<'a, B: BlockT, BI, SC, C: ProvideRuntimeApi, E, P, CIDP> { +pub struct SealBlockParams<'a, B: BlockT, BI, SC, C: ProvideRuntimeApi, E, TP, CIDP> { /// if true, empty blocks(without extrinsics) will be created. /// otherwise, will return Error::EmptyTransactionPool. pub create_empty: bool, @@ -51,7 +51,7 @@ pub struct SealBlockParams<'a, B: BlockT, BI, SC, C: ProvideRuntimeApi, E, P, /// sender to report errors/success to the rpc. pub sender: rpc::Sender::Hash>>, /// transaction pool - pub pool: Arc

, + pub pool: Arc, /// header backend pub client: Arc, /// Environment trait object for creating a proposer @@ -67,7 +67,7 @@ pub struct SealBlockParams<'a, B: BlockT, BI, SC, C: ProvideRuntimeApi, E, P, } /// seals a new block with the given params -pub async fn seal_block( +pub async fn seal_block( SealBlockParams { create_empty, finalize, @@ -80,7 +80,7 @@ pub async fn seal_block( create_inherent_data_providers, consensus_data_provider: digest_provider, mut sender, - }: SealBlockParams<'_, B, BI, SC, C, E, P, CIDP>, + }: SealBlockParams<'_, B, BI, SC, C, E, TP, CIDP>, ) where B: BlockT, BI: BlockImport> @@ -90,7 +90,7 @@ pub async fn seal_block( C: HeaderBackend + ProvideRuntimeApi, E: Environment, E::Proposer: Proposer>, - P: TransactionPool, + TP: TransactionPool, SC: SelectChain, TransactionFor: 'static, CIDP: CreateInherentDataProviders, From 2ebf779aa939cf544c27ba9f932fddbba024d03b Mon Sep 17 00:00:00 2001 From: Seun Lanlege Date: Mon, 5 Jul 2021 13:11:41 +0100 Subject: [PATCH 05/11] bye sc_transaction_graph --- Cargo.lock | 33 +--- Cargo.toml | 1 - client/transaction-pool/Cargo.toml | 15 +- client/transaction-pool/api/Cargo.toml | 3 +- client/transaction-pool/api/src/lib.rs | 3 +- .../{graph => }/benches/basics.rs | 10 +- client/transaction-pool/graph/Cargo.toml | 40 ----- client/transaction-pool/graph/README.md | 8 - client/transaction-pool/src/api.rs | 30 ++-- .../{graph/src => src/graph}/base_pool.rs | 6 +- .../{graph/src => src/graph}/future.rs | 2 +- .../{graph/src => src/graph}/listener.rs | 2 +- .../{graph/src/lib.rs => src/graph/mod.rs} | 5 +- .../{graph/src => src/graph}/pool.rs | 9 +- .../{graph/src => src/graph}/ready.rs | 2 +- .../{graph/src => src/graph}/rotator.rs | 2 +- .../{graph/src => src/graph}/tracked_map.rs | 0 .../src => src/graph}/validated_pool.rs | 12 +- .../{graph/src => src/graph}/watcher.rs | 0 client/transaction-pool/src/lib.rs | 51 ++++--- client/transaction-pool/src/revalidation.rs | 41 +---- client/transaction-pool/src/testing/mod.rs | 21 --- .../{src/testing => tests}/pool.rs | 143 +++++++++--------- client/transaction-pool/tests/revalidation.rs | 32 ++++ docs/Upgrading-2.0-to-3.0.md | 2 +- primitives/transaction-pool/Cargo.toml | 2 +- primitives/transaction-pool/src/lib.rs | 6 +- .../runtime/transaction-pool/Cargo.toml | 2 +- .../runtime/transaction-pool/src/lib.rs | 10 +- test-utils/test-runner/Cargo.toml | 1 - test-utils/test-runner/src/node.rs | 2 +- 31 files changed, 215 insertions(+), 281 deletions(-) rename client/transaction-pool/{graph => }/benches/basics.rs (94%) delete mode 100644 client/transaction-pool/graph/Cargo.toml delete mode 100644 client/transaction-pool/graph/README.md rename client/transaction-pool/{graph/src => src/graph}/base_pool.rs (99%) rename client/transaction-pool/{graph/src => src/graph}/future.rs (99%) rename client/transaction-pool/{graph/src => src/graph}/listener.rs (98%) rename client/transaction-pool/{graph/src/lib.rs => src/graph/mod.rs} (88%) rename client/transaction-pool/{graph/src => src/graph}/pool.rs (99%) rename client/transaction-pool/{graph/src => src/graph}/ready.rs (99%) rename client/transaction-pool/{graph/src => src/graph}/rotator.rs (99%) rename client/transaction-pool/{graph/src => src/graph}/tracked_map.rs (100%) rename client/transaction-pool/{graph/src => src/graph}/validated_pool.rs (98%) rename client/transaction-pool/{graph/src => src/graph}/watcher.rs (100%) delete mode 100644 client/transaction-pool/src/testing/mod.rs rename client/transaction-pool/{src/testing => tests}/pool.rs (88%) create mode 100644 client/transaction-pool/tests/revalidation.rs diff --git a/Cargo.lock b/Cargo.lock index f4671bee7f662..557db32c432d5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8186,46 +8186,25 @@ dependencies = [ ] [[package]] -name = "sc-transaction-graph" +name = "sc-transaction-pool" version = "3.0.0" dependencies = [ "assert_matches", "criterion", "derive_more", "futures 0.3.15", - "linked-hash-map", - "log", - "parity-scale-codec", - "parity-util-mem", - "parking_lot 0.11.1", - "retain_mut", - "sc-transaction-pool-api", - "serde", - "sp-blockchain", - "sp-core", - "sp-runtime", - "sp-utils", - "substrate-test-runtime", - "thiserror", - "wasm-timer", -] - -[[package]] -name = "sc-transaction-pool" -version = "3.0.0" -dependencies = [ - "assert_matches", - "futures 0.3.15", "hex", "intervalier", + "linked-hash-map", "log", "parity-scale-codec", "parity-util-mem", "parking_lot 0.11.1", + "retain_mut", "sc-block-builder", "sc-client-api", - "sc-transaction-graph", "sc-transaction-pool-api", + "serde", "sp-api", "sp-blockchain", "sp-consensus", @@ -8236,6 +8215,7 @@ dependencies = [ "sp-transaction-pool", "sp-utils", "substrate-prometheus-endpoint", + "substrate-test-runtime", "substrate-test-runtime-client", "substrate-test-runtime-transaction-pool", "thiserror", @@ -9817,7 +9797,7 @@ dependencies = [ "futures 0.3.15", "parity-scale-codec", "parking_lot 0.11.1", - "sc-transaction-graph", + "sc-transaction-pool", "sc-transaction-pool-api", "sp-blockchain", "sp-runtime", @@ -9963,7 +9943,6 @@ dependencies = [ "sc-rpc", "sc-rpc-server", "sc-service", - "sc-transaction-graph", "sc-transaction-pool", "sc-transaction-pool-api", "sp-api", diff --git a/Cargo.toml b/Cargo.toml index da760b963a565..de40376032211 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -62,7 +62,6 @@ members = [ "client/tracing", "client/tracing/proc-macro", "client/transaction-pool", - "client/transaction-pool/graph", "client/transaction-pool/api", "frame/assets", "frame/atomic-swap", diff --git a/client/transaction-pool/Cargo.toml b/client/transaction-pool/Cargo.toml index 633a61cd761c9..5364b29461ddc 100644 --- a/client/transaction-pool/Cargo.toml +++ b/client/transaction-pool/Cargo.toml @@ -22,7 +22,6 @@ parity-util-mem = { version = "0.9.0", default-features = false, features = ["pr parking_lot = "0.11.1" prometheus-endpoint = { package = "substrate-prometheus-endpoint", path = "../../utils/prometheus", version = "0.9.0"} sc-client-api = { version = "3.0.0", path = "../api" } -sc-transaction-graph = { version = "3.0.0", path = "./graph" } sp-api = { version = "3.0.0", path = "../../primitives/api" } sp-core = { version = "3.0.0", path = "../../primitives/core" } sp-runtime = { version = "3.0.0", path = "../../primitives/runtime" } @@ -32,6 +31,10 @@ sc-transaction-pool-api = { version = "3.0.0", path = "./api" } sp-blockchain = { version = "3.0.0", path = "../../primitives/blockchain" } sp-utils = { version = "3.0.0", path = "../../primitives/utils" } wasm-timer = "0.2" +derive_more = "0.99.2" +serde = { version = "1.0.101", features = ["derive"] } +linked-hash-map = "0.5.2" +retain_mut = "0.1.3" [dev-dependencies] assert_matches = "1.3.0" @@ -41,3 +44,13 @@ sp-consensus = { version = "0.9.0", path = "../../primitives/consensus/common" } substrate-test-runtime-transaction-pool = { version = "2.0.0", path = "../../test-utils/runtime/transaction-pool" } substrate-test-runtime-client = { version = "2.0.0", path = "../../test-utils/runtime/client" } sc-block-builder = { version = "0.9.0", path = "../block-builder" } +codec = { package = "parity-scale-codec", version = "2.0.0" } +substrate-test-runtime = { version = "2.0.0", path = "../../test-utils/runtime" } +criterion = "0.3" + +[[bench]] +name = "basics" +harness = false + +[features] +test-helpers = [] \ No newline at end of file diff --git a/client/transaction-pool/api/Cargo.toml b/client/transaction-pool/api/Cargo.toml index ec7b5e5361cb2..8ec74b17b6e96 100644 --- a/client/transaction-pool/api/Cargo.toml +++ b/client/transaction-pool/api/Cargo.toml @@ -6,8 +6,7 @@ edition = "2018" license = "GPL-3.0-or-later WITH Classpath-exception-2.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" -description = "Substrate transaction pool primitives." -readme = "README.md" +description = "Transaction pool client facing API." [dependencies] futures = { version = "0.3.1" } diff --git a/client/transaction-pool/api/src/lib.rs b/client/transaction-pool/api/src/lib.rs index 9916954f4120b..198d67f71d1b5 100644 --- a/client/transaction-pool/api/src/lib.rs +++ b/client/transaction-pool/api/src/lib.rs @@ -15,7 +15,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -//! Transaction pool primitives types & Runtime API. +//! Transaction pool client facing API. +#![warn(missing_docs)] pub mod error; diff --git a/client/transaction-pool/graph/benches/basics.rs b/client/transaction-pool/benches/basics.rs similarity index 94% rename from client/transaction-pool/graph/benches/basics.rs rename to client/transaction-pool/benches/basics.rs index aefdf26e4d18c..8941905c2ecec 100644 --- a/client/transaction-pool/graph/benches/basics.rs +++ b/client/transaction-pool/benches/basics.rs @@ -19,7 +19,7 @@ use criterion::{criterion_group, criterion_main, Criterion}; use futures::{future::{ready, Ready}, executor::block_on}; -use sc_transaction_graph::*; +use sc_transaction_pool::*; use codec::Encode; use substrate_test_runtime::{Block, Extrinsic, Transfer, H256, AccountId}; use sp_runtime::{ @@ -59,7 +59,7 @@ impl ChainApi for TestApi { &self, at: &BlockId, _source: TransactionSource, - uxt: ExtrinsicFor, + uxt: types::ExtrinsicFor, ) -> Self::ValidationFuture { let nonce = uxt.transfer().nonce; let from = uxt.transfer().from.clone(); @@ -89,7 +89,7 @@ impl ChainApi for TestApi { fn block_id_to_number( &self, at: &BlockId, - ) -> Result>, Self::Error> { + ) -> Result>, Self::Error> { Ok(match at { BlockId::Number(num) => Some(*num), BlockId::Hash(_) => None, @@ -99,14 +99,14 @@ impl ChainApi for TestApi { fn block_id_to_hash( &self, at: &BlockId, - ) -> Result>, Self::Error> { + ) -> Result>, Self::Error> { Ok(match at { BlockId::Number(num) => Some(H256::from_low_u64_be(*num)).into(), BlockId::Hash(_) => None, }) } - fn hash_and_length(&self, uxt: &ExtrinsicFor) -> (H256, usize) { + fn hash_and_length(&self, uxt: &types::ExtrinsicFor) -> (H256, usize) { let encoded = uxt.encode(); (blake2_256(&encoded).into(), encoded.len()) } diff --git a/client/transaction-pool/graph/Cargo.toml b/client/transaction-pool/graph/Cargo.toml deleted file mode 100644 index b272b6b4f49a7..0000000000000 --- a/client/transaction-pool/graph/Cargo.toml +++ /dev/null @@ -1,40 +0,0 @@ -[package] -name = "sc-transaction-graph" -version = "3.0.0" -authors = ["Parity Technologies "] -edition = "2018" -license = "GPL-3.0-or-later WITH Classpath-exception-2.0" -homepage = "https://substrate.dev" -repository = "https://github.com/paritytech/substrate/" -description = "Generic Transaction Pool" -readme = "README.md" - -[package.metadata.docs.rs] -targets = ["x86_64-unknown-linux-gnu"] - -[dependencies] -derive_more = "0.99.2" -thiserror = "1.0.21" -futures = "0.3.9" -log = "0.4.8" -parking_lot = "0.11.1" -serde = { version = "1.0.101", features = ["derive"] } -wasm-timer = "0.2" -sp-blockchain = { version = "3.0.0", path = "../../../primitives/blockchain" } -sp-utils = { version = "3.0.0", path = "../../../primitives/utils" } -sp-core = { version = "3.0.0", path = "../../../primitives/core" } -sp-runtime = { version = "3.0.0", path = "../../../primitives/runtime" } -sc-transaction-pool-api = { version = "3.0.0", path = "../api" } -parity-util-mem = { version = "0.9.0", default-features = false, features = ["primitive-types"] } -linked-hash-map = "0.5.2" -retain_mut = "0.1.3" - -[dev-dependencies] -assert_matches = "1.3.0" -codec = { package = "parity-scale-codec", version = "2.0.0" } -substrate-test-runtime = { version = "2.0.0", path = "../../../test-utils/runtime" } -criterion = "0.3" - -[[bench]] -name = "basics" -harness = false diff --git a/client/transaction-pool/graph/README.md b/client/transaction-pool/graph/README.md deleted file mode 100644 index bc9cd929122f1..0000000000000 --- a/client/transaction-pool/graph/README.md +++ /dev/null @@ -1,8 +0,0 @@ -Generic Transaction Pool - -The pool is based on dependency graph between transactions -and their priority. -The pool is able to return an iterator that traverses transaction -graph in the correct order taking into account priorities and dependencies. - -License: GPL-3.0-or-later WITH Classpath-exception-2.0 \ No newline at end of file diff --git a/client/transaction-pool/src/api.rs b/client/transaction-pool/src/api.rs index 74e08c3aa0589..b100d5164287b 100644 --- a/client/transaction-pool/src/api.rs +++ b/client/transaction-pool/src/api.rs @@ -37,7 +37,7 @@ use sp_api::{ProvideRuntimeApi, ApiExt}; use prometheus_endpoint::Registry as PrometheusRegistry; use sp_core::traits::SpawnEssentialNamed; -use crate::{metrics::{ApiMetrics, ApiMetricsExt}, error::{self, Error}}; +use crate::{metrics::{ApiMetrics, ApiMetricsExt}, error::{self, Error}, graph}; /// The transaction pool logic for full client. pub struct FullChainApi { @@ -103,7 +103,7 @@ impl FullChainApi { } } -impl sc_transaction_graph::ChainApi for FullChainApi +impl graph::ChainApi for FullChainApi where Block: BlockT, Client: ProvideRuntimeApi + BlockBackend + BlockIdTo + HeaderBackend, @@ -125,7 +125,7 @@ where &self, at: &BlockId, source: TransactionSource, - uxt: sc_transaction_graph::ExtrinsicFor, + uxt: graph::ExtrinsicFor, ) -> Self::ValidationFuture { let (tx, rx) = oneshot::channel(); let client = self.client.clone(); @@ -158,21 +158,21 @@ where fn block_id_to_number( &self, at: &BlockId, - ) -> error::Result>> { + ) -> error::Result>> { self.client.to_number(at).map_err(|e| Error::BlockIdConversion(format!("{:?}", e))) } fn block_id_to_hash( &self, at: &BlockId, - ) -> error::Result>> { + ) -> error::Result>> { self.client.to_hash(at).map_err(|e| Error::BlockIdConversion(format!("{:?}", e))) } fn hash_and_length( &self, - ex: &sc_transaction_graph::ExtrinsicFor, - ) -> (sc_transaction_graph::ExtrinsicHash, usize) { + ex: &graph::ExtrinsicFor, + ) -> (graph::ExtrinsicHash, usize) { ex.using_encoded(|x| { ( as traits::Hash>::hash(x), x.len()) }) @@ -192,7 +192,7 @@ fn validate_transaction_blocking( client: &Client, at: &BlockId, source: TransactionSource, - uxt: sc_transaction_graph::ExtrinsicFor>, + uxt: graph::ExtrinsicFor>, ) -> error::Result where Block: BlockT, @@ -239,7 +239,7 @@ where &self, at: &BlockId, source: TransactionSource, - uxt: sc_transaction_graph::ExtrinsicFor, + uxt: graph::ExtrinsicFor, ) -> error::Result { validate_transaction_blocking(&*self.client, at, source, uxt) } @@ -263,7 +263,7 @@ impl LightChainApi { } } -impl sc_transaction_graph::ChainApi for +impl graph::ChainApi for LightChainApi where Block: BlockT, Client: HeaderBackend + 'static, @@ -285,7 +285,7 @@ impl sc_transaction_graph::ChainApi for &self, at: &BlockId, source: TransactionSource, - uxt: sc_transaction_graph::ExtrinsicFor, + uxt: graph::ExtrinsicFor, ) -> Self::ValidationFuture { let header_hash = self.client.expect_block_hash_from_id(at); let header_and_hash = header_hash @@ -319,21 +319,21 @@ impl sc_transaction_graph::ChainApi for fn block_id_to_number( &self, at: &BlockId, - ) -> error::Result>> { + ) -> error::Result>> { Ok(self.client.block_number_from_id(at)?) } fn block_id_to_hash( &self, at: &BlockId, - ) -> error::Result>> { + ) -> error::Result>> { Ok(self.client.block_hash_from_id(at)?) } fn hash_and_length( &self, - ex: &sc_transaction_graph::ExtrinsicFor, - ) -> (sc_transaction_graph::ExtrinsicHash, usize) { + ex: &graph::ExtrinsicFor, + ) -> (graph::ExtrinsicHash, usize) { ex.using_encoded(|x| { (<::Hashing as HashT>::hash(x), x.len()) }) diff --git a/client/transaction-pool/graph/src/base_pool.rs b/client/transaction-pool/src/graph/base_pool.rs similarity index 99% rename from client/transaction-pool/graph/src/base_pool.rs rename to client/transaction-pool/src/graph/base_pool.rs index aded4b6344f82..9c1a4f5b55f7c 100644 --- a/client/transaction-pool/graph/src/base_pool.rs +++ b/client/transaction-pool/src/graph/base_pool.rs @@ -39,8 +39,10 @@ use sp_runtime::transaction_validity::{ }; use sc_transaction_pool_api::{error, PoolStatus, InPoolTransaction}; -use crate::future::{FutureTransactions, WaitingTransaction}; -use crate::ready::ReadyTransactions; +use super::{ + future::{FutureTransactions, WaitingTransaction}, + ready::ReadyTransactions, +}; /// Successful import result. #[derive(Debug, PartialEq, Eq)] diff --git a/client/transaction-pool/graph/src/future.rs b/client/transaction-pool/src/graph/future.rs similarity index 99% rename from client/transaction-pool/graph/src/future.rs rename to client/transaction-pool/src/graph/future.rs index 9dcfd13808d9b..083d3c7ec0613 100644 --- a/client/transaction-pool/graph/src/future.rs +++ b/client/transaction-pool/src/graph/future.rs @@ -29,7 +29,7 @@ use sp_runtime::transaction_validity::{ }; use wasm_timer::Instant; -use crate::base_pool::Transaction; +use super::base_pool::Transaction; #[cfg_attr(not(target_os = "unknown"), derive(parity_util_mem::MallocSizeOf))] /// Transaction with partially satisfied dependencies. diff --git a/client/transaction-pool/graph/src/listener.rs b/client/transaction-pool/src/graph/listener.rs similarity index 98% rename from client/transaction-pool/graph/src/listener.rs rename to client/transaction-pool/src/graph/listener.rs index e81c286600274..a6987711f1dfb 100644 --- a/client/transaction-pool/graph/src/listener.rs +++ b/client/transaction-pool/src/graph/listener.rs @@ -26,7 +26,7 @@ use serde::Serialize; use log::{debug, trace}; use sp_runtime::traits; -use crate::{watcher, ChainApi, ExtrinsicHash, BlockHash}; +use super::{watcher, ChainApi, ExtrinsicHash, BlockHash}; /// Extrinsic pool default listener. pub struct Listener { diff --git a/client/transaction-pool/graph/src/lib.rs b/client/transaction-pool/src/graph/mod.rs similarity index 88% rename from client/transaction-pool/graph/src/lib.rs rename to client/transaction-pool/src/graph/mod.rs index c61b05befa12f..92e76b3ecf90b 100644 --- a/client/transaction-pool/graph/src/lib.rs +++ b/client/transaction-pool/src/graph/mod.rs @@ -38,7 +38,8 @@ pub mod base_pool; pub mod watcher; pub use self::base_pool::Transaction; +pub use validated_pool::{IsValidator, ValidatedTransaction}; pub use self::pool::{ - BlockHash, ChainApi, EventStream, ExtrinsicFor, ExtrinsicHash, IsValidator, NumberFor, Options, - Pool, TransactionFor, ValidatedTransaction, + BlockHash, ChainApi, EventStream, ExtrinsicFor, ExtrinsicHash, + NumberFor, Options, Pool, TransactionFor, }; diff --git a/client/transaction-pool/graph/src/pool.rs b/client/transaction-pool/src/graph/pool.rs similarity index 99% rename from client/transaction-pool/graph/src/pool.rs rename to client/transaction-pool/src/graph/pool.rs index 54b42d62b66ae..2c24f3779f0e9 100644 --- a/client/transaction-pool/graph/src/pool.rs +++ b/client/transaction-pool/src/graph/pool.rs @@ -33,9 +33,10 @@ use sc_transaction_pool_api::error; use wasm_timer::Instant; use futures::channel::mpsc::Receiver; -use crate::{base_pool as base, watcher::Watcher}; -use crate::validated_pool::ValidatedPool; -pub use crate::validated_pool::{IsValidator, ValidatedTransaction}; +use super::{ + base_pool as base, watcher::Watcher, + validated_pool::{IsValidator, ValidatedTransaction, ValidatedPool}, +}; /// Modification notification event stream type; pub type EventStream = Receiver; @@ -471,7 +472,7 @@ mod tests { use substrate_test_runtime::{Block, Extrinsic, Transfer, H256, AccountId, Hashing}; use assert_matches::assert_matches; use wasm_timer::Instant; - use crate::base_pool::Limit; + use super::super::base_pool::Limit; const INVALID_NONCE: u64 = 254; const SOURCE: TransactionSource = TransactionSource::External; diff --git a/client/transaction-pool/graph/src/ready.rs b/client/transaction-pool/src/graph/ready.rs similarity index 99% rename from client/transaction-pool/graph/src/ready.rs rename to client/transaction-pool/src/graph/ready.rs index 07453808631f2..eb6838b90c62c 100644 --- a/client/transaction-pool/graph/src/ready.rs +++ b/client/transaction-pool/src/graph/ready.rs @@ -31,7 +31,7 @@ use sp_runtime::transaction_validity::{ }; use sc_transaction_pool_api::error; -use crate::{ +use super::{ base_pool::Transaction, future::WaitingTransaction, tracked_map::{self, ReadOnlyTrackedMap, TrackedMap}, diff --git a/client/transaction-pool/graph/src/rotator.rs b/client/transaction-pool/src/graph/rotator.rs similarity index 99% rename from client/transaction-pool/graph/src/rotator.rs rename to client/transaction-pool/src/graph/rotator.rs index 4c800c767183a..0e4fd0abf2974 100644 --- a/client/transaction-pool/graph/src/rotator.rs +++ b/client/transaction-pool/src/graph/rotator.rs @@ -30,7 +30,7 @@ use std::{ use parking_lot::RwLock; use wasm_timer::Instant; -use crate::base_pool::Transaction; +use super::base_pool::Transaction; /// Expected size of the banned extrinsics cache. const EXPECTED_SIZE: usize = 2048; diff --git a/client/transaction-pool/graph/src/tracked_map.rs b/client/transaction-pool/src/graph/tracked_map.rs similarity index 100% rename from client/transaction-pool/graph/src/tracked_map.rs rename to client/transaction-pool/src/graph/tracked_map.rs diff --git a/client/transaction-pool/graph/src/validated_pool.rs b/client/transaction-pool/src/graph/validated_pool.rs similarity index 98% rename from client/transaction-pool/graph/src/validated_pool.rs rename to client/transaction-pool/src/graph/validated_pool.rs index 6be65650d35f0..60d8ab1babd5c 100644 --- a/client/transaction-pool/graph/src/validated_pool.rs +++ b/client/transaction-pool/src/graph/validated_pool.rs @@ -34,12 +34,10 @@ use wasm_timer::Instant; use futures::channel::mpsc::{channel, Sender}; use retain_mut::RetainMut; -use crate::base_pool::{self as base, PruneStatus}; -use crate::listener::Listener; -use crate::rotator::PoolRotator; -use crate::watcher::Watcher; -use crate::pool::{ - EventStream, Options, ChainApi, BlockHash, ExtrinsicHash, ExtrinsicFor, TransactionFor, +use super::{ + base_pool::{self as base, PruneStatus}, watcher::Watcher, + listener::Listener, rotator::PoolRotator, + pool::{EventStream, Options, ChainApi, BlockHash, ExtrinsicHash, ExtrinsicFor, TransactionFor}, }; /// Pre-validated transaction. Validated pool only accepts transactions wrapped in this enum. @@ -548,7 +546,7 @@ impl ValidatedPool { } /// Get rotator reference. - #[cfg(test)] + #[cfg(feature = "test-helpers")] pub fn rotator(&self) -> &PoolRotator> { &self.rotator } diff --git a/client/transaction-pool/graph/src/watcher.rs b/client/transaction-pool/src/graph/watcher.rs similarity index 100% rename from client/transaction-pool/graph/src/watcher.rs rename to client/transaction-pool/src/graph/watcher.rs diff --git a/client/transaction-pool/src/lib.rs b/client/transaction-pool/src/lib.rs index 16150e94866b5..510f5bf8bf7eb 100644 --- a/client/transaction-pool/src/lib.rs +++ b/client/transaction-pool/src/lib.rs @@ -23,17 +23,22 @@ #![warn(unused_extern_crates)] mod api; +mod graph; mod revalidation; mod metrics; pub mod error; -#[cfg(test)] -pub mod testing; +#[cfg(feature = "test-helpers")] +pub use self::{graph::{ChainApi, Pool}, revalidation::RevalidationQueue}; +/// Common types for working with the transaction pool +#[cfg(feature = "test-helpers")] +pub mod types { + pub use super::graph::{NumberFor, BlockHash, ExtrinsicFor}; +} -pub use sc_transaction_graph::{ChainApi, Options, Pool}; +pub use graph::{Options, Transaction}; pub use crate::api::{FullChainApi, LightChainApi}; - use std::{collections::{HashMap, HashSet}, sync::Arc, pin::Pin, convert::TryInto}; use futures::{prelude::*, future::{self, ready}, channel::oneshot}; use parking_lot::Mutex; @@ -48,18 +53,18 @@ use sc_transaction_pool_api::{ TransactionStatusStreamFor, MaintainedTransactionPool, PoolFuture, ChainEvent, TransactionSource, }; -use sc_transaction_graph::{IsValidator, ExtrinsicHash}; +use graph::{IsValidator, ExtrinsicHash}; use wasm_timer::Instant; use prometheus_endpoint::Registry as PrometheusRegistry; use crate::metrics::MetricsLink as PrometheusMetrics; type BoxedReadyIterator = Box< - dyn Iterator>> + Send + dyn Iterator>> + Send >; type ReadyIteratorFor = BoxedReadyIterator< - sc_transaction_graph::ExtrinsicHash, sc_transaction_graph::ExtrinsicFor + graph::ExtrinsicHash, graph::ExtrinsicFor >; type PolledIterator = Pin> + Send>>; @@ -75,7 +80,7 @@ pub struct BasicPool Block: BlockT, PoolApi: ChainApi, { - pool: Arc>, + pool: Arc>, api: Arc, revalidation_strategy: Arc>>>, revalidation_queue: Arc>, @@ -166,11 +171,11 @@ impl BasicPool PoolApi: ChainApi + 'static, { /// Create new basic transaction pool with provided api, for tests. - #[cfg(test)] + #[cfg(feature = "test-helpers")] pub fn new_test( pool_api: Arc, ) -> (Self, Pin + Send>>, intervalier::BackSignalControl) { - let pool = Arc::new(sc_transaction_graph::Pool::new(Default::default(), true.into(), pool_api.clone())); + let pool = Arc::new(graph::Pool::new(Default::default(), true.into(), pool_api.clone())); let (revalidation_queue, background_task, notifier) = revalidation::RevalidationQueue::new_test(pool_api.clone(), pool.clone()); ( @@ -190,7 +195,7 @@ impl BasicPool /// Create new basic transaction pool with provided api and custom /// revalidation type. pub fn with_revalidation_type( - options: sc_transaction_graph::Options, + options: graph::Options, is_validator: IsValidator, pool_api: Arc, prometheus: Option<&PrometheusRegistry>, @@ -198,7 +203,7 @@ impl BasicPool spawner: impl SpawnEssentialNamed, best_block_number: NumberFor, ) -> Self { - let pool = Arc::new(sc_transaction_graph::Pool::new(options, is_validator, pool_api.clone())); + let pool = Arc::new(graph::Pool::new(options, is_validator, pool_api.clone())); let (revalidation_queue, background_task) = match revalidation_type { RevalidationType::Light => ( revalidation::RevalidationQueue::new(pool_api.clone(), pool.clone()), @@ -233,9 +238,15 @@ impl BasicPool } /// Gets shared reference to the underlying pool. - pub fn pool(&self) -> &Arc> { + pub fn pool(&self) -> &Arc> { &self.pool } + + /// Get access to the underlying api + #[cfg(feature = "test-helpers")] + pub fn api(&self) -> &PoolApi { + &self.api + } } impl TransactionPool for BasicPool @@ -244,8 +255,8 @@ impl TransactionPool for BasicPool PoolApi: 'static + ChainApi, { type Block = PoolApi::Block; - type Hash = sc_transaction_graph::ExtrinsicHash; - type InPoolTransaction = sc_transaction_graph::base_pool::Transaction< + type Hash = graph::ExtrinsicHash; + type InPoolTransaction = graph::base_pool::Transaction< TxHash, TransactionFor >; type Error = PoolApi::Error; @@ -361,7 +372,7 @@ where { /// Create new basic transaction pool for a light node with the provided api. pub fn new_light( - options: sc_transaction_graph::Options, + options: graph::Options, prometheus: Option<&PrometheusRegistry>, spawner: impl SpawnEssentialNamed, client: Arc, @@ -396,7 +407,7 @@ where { /// Create new basic transaction pool for a full node with the provided api. pub fn new_full( - options: sc_transaction_graph::Options, + options: graph::Options, is_validator: IsValidator, prometheus: Option<&PrometheusRegistry>, spawner: impl SpawnEssentialNamed, @@ -432,7 +443,7 @@ where Client::Api: sp_transaction_pool::runtime_api::TaggedTransactionQueue, { type Block = Block; - type Hash = sc_transaction_graph::ExtrinsicHash>; + type Hash = graph::ExtrinsicHash>; type Error = as ChainApi>::Error; fn submit_local( @@ -440,7 +451,7 @@ where at: &BlockId, xt: sc_transaction_pool_api::LocalTransactionFor, ) -> Result { - use sc_transaction_graph::ValidatedTransaction; + use graph::ValidatedTransaction; use sp_runtime::traits::SaturatedConversion; use sp_runtime::transaction_validity::TransactionValidityError; @@ -561,7 +572,7 @@ impl RevalidationStatus { async fn prune_known_txs_for_block>( block_id: BlockId, api: &Api, - pool: &sc_transaction_graph::Pool, + pool: &graph::Pool, ) -> Vec> { let extrinsics = api.block_body(&block_id).await .unwrap_or_else(|e| { diff --git a/client/transaction-pool/src/revalidation.rs b/client/transaction-pool/src/revalidation.rs index 13ab199d64498..ffc82bf619ccc 100644 --- a/client/transaction-pool/src/revalidation.rs +++ b/client/transaction-pool/src/revalidation.rs @@ -20,7 +20,7 @@ use std::{sync::Arc, pin::Pin, collections::{HashMap, HashSet, BTreeMap}}; -use sc_transaction_graph::{ChainApi, Pool, ExtrinsicHash, NumberFor, ValidatedTransaction}; +use crate::graph::{ChainApi, Pool, ExtrinsicHash, NumberFor, ValidatedTransaction}; use sp_runtime::traits::{Zero, SaturatedConversion}; use sp_runtime::generic::BlockId; use sp_runtime::transaction_validity::TransactionValidityError; @@ -29,9 +29,9 @@ use sp_utils::mpsc::{tracing_unbounded, TracingUnboundedSender, TracingUnbounded use futures::prelude::*; use std::time::Duration; -#[cfg(not(test))] +#[cfg(not(feature = "test-helpers"))] const BACKGROUND_REVALIDATION_INTERVAL: Duration = Duration::from_millis(200); -#[cfg(test)] +#[cfg(feature = "test-helpers")] pub const BACKGROUND_REVALIDATION_INTERVAL: Duration = Duration::from_millis(1); const MIN_BACKGROUND_REVALIDATION_BATCH_SIZE: usize = 20; @@ -225,7 +225,7 @@ impl RevalidationWorker { batch_revalidate(this.pool.clone(), this.api.clone(), this.best_block, next_batch).await; - #[cfg(test)] + #[cfg(feature = "test-helpers")] { use intervalier::Guard; // only trigger test events if something was processed @@ -293,6 +293,7 @@ where } } + /// New revalidation queue with background worker. pub fn new_with_interval( api: Arc, pool: Arc>, @@ -320,7 +321,7 @@ where } /// New revalidation queue with background worker and test signal. - #[cfg(test)] + #[cfg(feature = "test-helpers")] pub fn new_test(api: Arc, pool: Arc>) -> (Self, Pin + Send>>, intervalier::BackSignalControl) { @@ -361,35 +362,5 @@ where #[cfg(test)] mod tests { - use super::*; - use sc_transaction_graph::Pool; - use sc_transaction_pool_api::TransactionSource; - use substrate_test_runtime_transaction_pool::{TestApi, uxt}; - use futures::executor::block_on; - use substrate_test_runtime_client::AccountKeyring::*; - - fn setup() -> (Arc, Pool) { - let test_api = Arc::new(TestApi::empty()); - let pool = Pool::new(Default::default(), true.into(), test_api.clone()); - (test_api, pool) - } - - #[test] - fn smoky() { - let (api, pool) = setup(); - let pool = Arc::new(pool); - let queue = Arc::new(RevalidationQueue::new(api.clone(), pool.clone())); - let uxt = uxt(Alice, 0); - let uxt_hash = block_on( - pool.submit_one(&BlockId::number(0), TransactionSource::External, uxt.clone()) - ).expect("Should be valid"); - - block_on(queue.revalidate_later(0, vec![uxt_hash])); - - // revalidated in sync offload 2nd time - assert_eq!(api.validation_requests().len(), 2); - // number of ready - assert_eq!(pool.validated_pool().status().ready, 1); - } } diff --git a/client/transaction-pool/src/testing/mod.rs b/client/transaction-pool/src/testing/mod.rs deleted file mode 100644 index 9c7f1dfd7f336..0000000000000 --- a/client/transaction-pool/src/testing/mod.rs +++ /dev/null @@ -1,21 +0,0 @@ -// This file is part of Substrate. - -// Copyright (C) 2020-2021 Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -//! Tests for top-level transaction pool api - -mod pool; diff --git a/client/transaction-pool/src/testing/pool.rs b/client/transaction-pool/tests/pool.rs similarity index 88% rename from client/transaction-pool/src/testing/pool.rs rename to client/transaction-pool/tests/pool.rs index d64075efead03..a4b0df66fe3b1 100644 --- a/client/transaction-pool/src/testing/pool.rs +++ b/client/transaction-pool/tests/pool.rs @@ -16,11 +16,11 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -use crate::*; -use sc_transaction_pool_api::TransactionStatus; +//! Tests for top-level transaction pool api +use sc_transaction_pool_api::{TransactionStatus, ChainEvent, MaintainedTransactionPool, TransactionPool}; use futures::executor::{block_on, block_on_stream}; use sp_runtime::{ - generic::BlockId, + generic::BlockId, traits::Block as _, transaction_validity::{ValidTransaction, TransactionSource, InvalidTransaction}, }; use substrate_test_runtime_client::{ @@ -30,10 +30,11 @@ use substrate_test_runtime_client::{ use substrate_test_runtime_transaction_pool::{TestApi, uxt}; use futures::{prelude::*, task::Poll}; use codec::Encode; -use std::collections::BTreeSet; +use std::{collections::BTreeSet, sync::Arc, convert::TryInto}; use sc_client_api::client::BlockchainEvents; use sc_block_builder::BlockBuilderProvider; use sp_consensus::BlockOrigin; +use sc_transaction_pool::*; fn pool() -> Pool { Pool::new(Default::default(), true.into(), TestApi::with_alice_nonce(209).into()) @@ -142,10 +143,10 @@ fn only_prune_on_new_best() { let _ = block_on( pool.submit_and_watch(&BlockId::number(0), SOURCE, uxt.clone()) ).expect("1. Imported"); - pool.api.push_block(1, vec![uxt.clone()], true); + pool.api().push_block(1, vec![uxt.clone()], true); assert_eq!(pool.status().ready, 1); - let header = pool.api.push_block(2, vec![uxt], true); + let header = pool.api().push_block(2, vec![uxt], true); let event = ChainEvent::NewBestBlock { hash: header.hash(), tree_route: None, @@ -220,7 +221,7 @@ fn should_prune_old_during_maintenance() { block_on(pool.submit_one(&BlockId::number(0), SOURCE, xt.clone())).expect("1. Imported"); assert_eq!(pool.status().ready, 1); - let header = pool.api.push_block(1, vec![xt.clone()], true); + let header = pool.api().push_block(1, vec![xt.clone()], true); block_on(pool.maintain(block_event(header))); assert_eq!(pool.status().ready, 0); @@ -235,16 +236,16 @@ fn should_revalidate_during_maintenance() { block_on(pool.submit_one(&BlockId::number(0), SOURCE, xt1.clone())).expect("1. Imported"); block_on(pool.submit_one(&BlockId::number(0), SOURCE, xt2.clone())).expect("2. Imported"); assert_eq!(pool.status().ready, 2); - assert_eq!(pool.api.validation_requests().len(), 2); + assert_eq!(pool.api().validation_requests().len(), 2); - let header = pool.api.push_block(1, vec![xt1.clone()], true); + let header = pool.api().push_block(1, vec![xt1.clone()], true); block_on(pool.maintain(block_event(header))); assert_eq!(pool.status().ready, 1); block_on(notifier.next()); // test that pool revalidated transaction that left ready and not included in the block - assert_eq!(pool.api.validation_requests().len(), 3); + assert_eq!(pool.api().validation_requests().len(), 3); } #[test] @@ -256,10 +257,10 @@ fn should_resubmit_from_retracted_during_maintenance() { block_on(pool.submit_one(&BlockId::number(0), SOURCE, xt.clone())).expect("1. Imported"); assert_eq!(pool.status().ready, 1); - let header = pool.api.push_block(1, vec![], true); - let fork_header = pool.api.push_block(1, vec![], false); + let header = pool.api().push_block(1, vec![], true); + let fork_header = pool.api().push_block(1, vec![], false); - let event = block_event_with_retracted(header, fork_header.hash(), &*pool.api); + let event = block_event_with_retracted(header, fork_header.hash(), &*pool.api()); block_on(pool.maintain(event)); assert_eq!(pool.status().ready, 1); @@ -275,10 +276,10 @@ fn should_not_resubmit_from_retracted_during_maintenance_if_tx_is_also_in_enacte block_on(pool.submit_one(&BlockId::number(0), SOURCE, xt.clone())).expect("1. Imported"); assert_eq!(pool.status().ready, 1); - let header = pool.api.push_block(1, vec![xt.clone()], true); - let fork_header = pool.api.push_block(1, vec![xt], false); + let header = pool.api().push_block(1, vec![xt.clone()], true); + let fork_header = pool.api().push_block(1, vec![xt], false); - let event = block_event_with_retracted(header, fork_header.hash(), &*pool.api); + let event = block_event_with_retracted(header, fork_header.hash(), &*pool.api()); block_on(pool.maintain(event)); assert_eq!(pool.status().ready, 0); @@ -293,11 +294,11 @@ fn should_not_retain_invalid_hashes_from_retracted() { block_on(pool.submit_one(&BlockId::number(0), SOURCE, xt.clone())).expect("1. Imported"); assert_eq!(pool.status().ready, 1); - let header = pool.api.push_block(1, vec![], true); - let fork_header = pool.api.push_block(1, vec![xt.clone()], false); - pool.api.add_invalid(&xt); + let header = pool.api().push_block(1, vec![], true); + let fork_header = pool.api().push_block(1, vec![xt.clone()], false); + pool.api().add_invalid(&xt); - let event = block_event_with_retracted(header, fork_header.hash(), &*pool.api); + let event = block_event_with_retracted(header, fork_header.hash(), &*pool.api()); block_on(pool.maintain(event)); block_on(notifier.next()); @@ -317,20 +318,20 @@ fn should_revalidate_across_many_blocks() { block_on(pool.submit_one(&BlockId::number(0), SOURCE, xt2.clone())).expect("1. Imported"); assert_eq!(pool.status().ready, 2); - let header = pool.api.push_block(1, vec![], true); + let header = pool.api().push_block(1, vec![], true); block_on(pool.maintain(block_event(header))); block_on(notifier.next()); block_on(pool.submit_one(&BlockId::number(1), SOURCE, xt3.clone())).expect("1. Imported"); assert_eq!(pool.status().ready, 3); - let header = pool.api.push_block(2, vec![xt1.clone()], true); + let header = pool.api().push_block(2, vec![xt1.clone()], true); block_on(pool.maintain(block_event(header))); block_on(notifier.next()); assert_eq!(pool.status().ready, 2); // xt1 and xt2 validated twice, then xt3 once, then xt2 and xt3 again - assert_eq!(pool.api.validation_requests().len(), 7); + assert_eq!(pool.api().validation_requests().len(), 7); } @@ -366,11 +367,11 @@ fn should_push_watchers_during_maintenance() { assert_eq!(pool.status().ready, 5); // when - pool.api.add_invalid(&tx3); - pool.api.add_invalid(&tx4); + pool.api().add_invalid(&tx3); + pool.api().add_invalid(&tx4); // clear timer events if any - let header = pool.api.push_block(1, vec![], true); + let header = pool.api().push_block(1, vec![], true); block_on(pool.maintain(block_event(header))); block_on(notifier.next()); @@ -388,7 +389,7 @@ fn should_push_watchers_during_maintenance() { ); // when - let header = pool.api.push_block(2, vec![tx0, tx1, tx2], true); + let header = pool.api().push_block(2, vec![tx0, tx1, tx2], true); let header_hash = header.hash(); block_on(pool.maintain(block_event(header))); @@ -442,9 +443,9 @@ fn finalization() { let watcher = block_on( pool.submit_and_watch(&BlockId::number(1), SOURCE, xt.clone()) ).expect("1. Imported"); - pool.api.push_block(2, vec![xt.clone()], true); + pool.api().push_block(2, vec![xt.clone()], true); - let header = pool.api.chain().read().block_by_number.get(&2).unwrap()[0].0.header().clone(); + let header = pool.api().chain().read().block_by_number.get(&2).unwrap()[0].0.header().clone(); let event = ChainEvent::NewBestBlock { hash: header.hash(), tree_route: None, @@ -474,10 +475,10 @@ fn fork_aware_finalization() { let from_dave = uxt(Dave, 2); let from_bob = uxt(Bob, 1); let from_charlie = uxt(Charlie, 1); - pool.api.increment_nonce(Alice.into()); - pool.api.increment_nonce(Dave.into()); - pool.api.increment_nonce(Charlie.into()); - pool.api.increment_nonce(Bob.into()); + pool.api().increment_nonce(Alice.into()); + pool.api().increment_nonce(Dave.into()); + pool.api().increment_nonce(Charlie.into()); + pool.api().increment_nonce(Bob.into()); let from_dave_watcher; let from_bob_watcher; @@ -491,7 +492,7 @@ fn fork_aware_finalization() { let watcher = block_on( pool.submit_and_watch(&BlockId::number(1), SOURCE, from_alice.clone()) ).expect("1. Imported"); - let header = pool.api.push_block(2, vec![from_alice.clone()], true); + let header = pool.api().push_block(2, vec![from_alice.clone()], true); canon_watchers.push((watcher, header.hash())); assert_eq!(pool.status().ready, 1); @@ -508,7 +509,7 @@ fn fork_aware_finalization() { // block C2 { - let header = pool.api.push_block_with_parent(b1, vec![from_dave.clone()], true); + let header = pool.api().push_block_with_parent(b1, vec![from_dave.clone()], true); from_dave_watcher = block_on( pool.submit_and_watch(&BlockId::number(1), SOURCE, from_dave.clone()) ).expect("1. Imported"); @@ -528,7 +529,7 @@ fn fork_aware_finalization() { pool.submit_and_watch(&BlockId::number(1), SOURCE, from_bob.clone()) ).expect("1. Imported"); assert_eq!(pool.status().ready, 1); - let header = pool.api.push_block_with_parent(c2, vec![from_bob.clone()], true); + let header = pool.api().push_block_with_parent(c2, vec![from_bob.clone()], true); let event = ChainEvent::NewBestBlock { hash: header.hash(), @@ -545,10 +546,10 @@ fn fork_aware_finalization() { pool.submit_and_watch(&BlockId::number(1), SOURCE, from_charlie.clone()) ).expect("1.Imported"); assert_eq!(pool.status().ready, 1); - let header = pool.api.push_block(3, vec![from_charlie.clone()], true); + let header = pool.api().push_block(3, vec![from_charlie.clone()], true); canon_watchers.push((watcher, header.hash())); - let event = block_event_with_retracted(header.clone(), d2, &*pool.api); + let event = block_event_with_retracted(header.clone(), d2, &*pool.api()); block_on(pool.maintain(event)); assert_eq!(pool.status().ready, 2); @@ -563,7 +564,7 @@ fn fork_aware_finalization() { pool.submit_and_watch(&BlockId::number(1), SOURCE, xt.clone()) ).expect("1. Imported"); assert_eq!(pool.status().ready, 3); - let header = pool.api.push_block(4, vec![xt.clone()], true); + let header = pool.api().push_block(4, vec![xt.clone()], true); canon_watchers.push((w, header.hash())); let event = ChainEvent::NewBestBlock { @@ -581,7 +582,7 @@ fn fork_aware_finalization() { // block e1 { - let header = pool.api.push_block(5, vec![from_dave, from_bob], true); + let header = pool.api().push_block(5, vec![from_dave, from_bob], true); e1 = header.hash(); let event = ChainEvent::NewBestBlock { hash: header.hash(), @@ -636,7 +637,7 @@ fn prune_and_retract_tx_at_same_time() { let (pool, _background, _) = BasicPool::new_test(api.into()); let from_alice = uxt(Alice, 1); - pool.api.increment_nonce(Alice.into()); + pool.api().increment_nonce(Alice.into()); let watcher = block_on( pool.submit_and_watch(&BlockId::number(1), SOURCE, from_alice.clone()) @@ -644,7 +645,7 @@ fn prune_and_retract_tx_at_same_time() { // Block B1 let b1 = { - let header = pool.api.push_block(2, vec![from_alice.clone()], true); + let header = pool.api().push_block(2, vec![from_alice.clone()], true); assert_eq!(pool.status().ready, 1); let event = ChainEvent::NewBestBlock { @@ -658,10 +659,10 @@ fn prune_and_retract_tx_at_same_time() { // Block B2 let b2 = { - let header = pool.api.push_block(2, vec![from_alice.clone()], false); + let header = pool.api().push_block(2, vec![from_alice.clone()], false); assert_eq!(pool.status().ready, 0); - let event = block_event_with_retracted(header.clone(), b1, &*pool.api); + let event = block_event_with_retracted(header.clone(), b1, &*pool.api()); block_on(pool.maintain(event)); assert_eq!(pool.status().ready, 0); @@ -708,8 +709,8 @@ fn resubmit_tx_of_fork_that_is_not_part_of_retracted() { let tx0 = uxt(Alice, 1); let tx1 = uxt(Dave, 2); - pool.api.increment_nonce(Alice.into()); - pool.api.increment_nonce(Dave.into()); + pool.api().increment_nonce(Alice.into()); + pool.api().increment_nonce(Dave.into()); let d0; @@ -718,7 +719,7 @@ fn resubmit_tx_of_fork_that_is_not_part_of_retracted() { let _ = block_on( pool.submit_and_watch(&BlockId::number(1), SOURCE, tx0.clone()) ).expect("1. Imported"); - let header = pool.api.push_block(2, vec![tx0.clone()], true); + let header = pool.api().push_block(2, vec![tx0.clone()], true); assert_eq!(pool.status().ready, 1); let event = ChainEvent::NewBestBlock { @@ -735,14 +736,14 @@ fn resubmit_tx_of_fork_that_is_not_part_of_retracted() { let _ = block_on( pool.submit_and_watch(&BlockId::number(1), SOURCE, tx1.clone()) ).expect("1. Imported"); - pool.api.push_block(2, vec![tx1.clone()], false); + pool.api().push_block(2, vec![tx1.clone()], false); assert_eq!(pool.status().ready, 1); } // Block D2 { - let header = pool.api.push_block(2, vec![], false); - let event = block_event_with_retracted(header, d0, &*pool.api); + let header = pool.api().push_block(2, vec![], false); + let event = block_event_with_retracted(header, d0, &*pool.api()); block_on(pool.maintain(event)); assert_eq!(pool.status().ready, 2); } @@ -765,19 +766,19 @@ fn resubmit_from_retracted_fork() { let tx4 = uxt(Ferdie, 2); let tx5 = uxt(One, 3); - pool.api.increment_nonce(Alice.into()); - pool.api.increment_nonce(Dave.into()); - pool.api.increment_nonce(Bob.into()); - pool.api.increment_nonce(Eve.into()); - pool.api.increment_nonce(Ferdie.into()); - pool.api.increment_nonce(One.into()); + pool.api().increment_nonce(Alice.into()); + pool.api().increment_nonce(Dave.into()); + pool.api().increment_nonce(Bob.into()); + pool.api().increment_nonce(Eve.into()); + pool.api().increment_nonce(Ferdie.into()); + pool.api().increment_nonce(One.into()); // Block D0 { let _ = block_on( pool.submit_and_watch(&BlockId::number(1), SOURCE, tx0.clone()) ).expect("1. Imported"); - let header = pool.api.push_block(2, vec![tx0.clone()], true); + let header = pool.api().push_block(2, vec![tx0.clone()], true); assert_eq!(pool.status().ready, 1); block_on(pool.maintain(block_event(header))); @@ -789,7 +790,7 @@ fn resubmit_from_retracted_fork() { let _ = block_on( pool.submit_and_watch(&BlockId::number(1), SOURCE, tx1.clone()) ).expect("1. Imported"); - let header = pool.api.push_block(3, vec![tx1.clone()], true); + let header = pool.api().push_block(3, vec![tx1.clone()], true); block_on(pool.maintain(block_event(header))); assert_eq!(pool.status().ready, 0); } @@ -799,7 +800,7 @@ fn resubmit_from_retracted_fork() { let _ = block_on( pool.submit_and_watch(&BlockId::number(1), SOURCE, tx2.clone()) ).expect("1. Imported"); - let header = pool.api.push_block(4, vec![tx2.clone()], true); + let header = pool.api().push_block(4, vec![tx2.clone()], true); block_on(pool.maintain(block_event(header.clone()))); assert_eq!(pool.status().ready, 0); header.hash() @@ -810,7 +811,7 @@ fn resubmit_from_retracted_fork() { let _ = block_on( pool.submit_and_watch(&BlockId::number(1), SOURCE, tx3.clone()) ).expect("1. Imported"); - let header = pool.api.push_block(2, vec![tx3.clone()], true); + let header = pool.api().push_block(2, vec![tx3.clone()], true); assert_eq!(pool.status().ready, 1); header.hash() }; @@ -820,7 +821,7 @@ fn resubmit_from_retracted_fork() { let _ = block_on( pool.submit_and_watch(&BlockId::number(1), SOURCE, tx4.clone()) ).expect("1. Imported"); - let header = pool.api.push_block_with_parent(d1.clone(), vec![tx4.clone()], true); + let header = pool.api().push_block_with_parent(d1.clone(), vec![tx4.clone()], true); assert_eq!(pool.status().ready, 2); header.hash() }; @@ -830,7 +831,7 @@ fn resubmit_from_retracted_fork() { let _ = block_on( pool.submit_and_watch(&BlockId::number(1), SOURCE, tx5.clone()) ).expect("1. Imported"); - let header = pool.api.push_block_with_parent(e1.clone(), vec![tx5.clone()], true); + let header = pool.api().push_block_with_parent(e1.clone(), vec![tx5.clone()], true); // Don't announce the block event to the pool directly, because we will // re-org to this block. assert_eq!(pool.status().ready, 3); @@ -841,7 +842,7 @@ fn resubmit_from_retracted_fork() { let expected_ready = vec![tx3, tx4, tx5].iter().map(Encode::encode).collect::>(); assert_eq!(expected_ready, ready); - let event = block_event_with_retracted(f1_header, f0, &*pool.api); + let event = block_event_with_retracted(f1_header, f0, &*pool.api()); block_on(pool.maintain(event)); assert_eq!(pool.status().ready, 3); @@ -862,7 +863,7 @@ fn ready_set_should_not_resolve_before_block_update() { #[test] fn ready_set_should_resolve_after_block_update() { let (pool, _guard, _notifier) = maintained_pool(); - let header = pool.api.push_block(1, vec![], true); + let header = pool.api().push_block(1, vec![], true); let xt1 = uxt(Alice, 209); @@ -875,7 +876,7 @@ fn ready_set_should_resolve_after_block_update() { #[test] fn ready_set_should_eventually_resolve_when_block_update_arrives() { let (pool, _guard, _notifier) = maintained_pool(); - let header = pool.api.push_block(1, vec![], true); + let header = pool.api().push_block(1, vec![], true); let xt1 = uxt(Alice, 209); @@ -985,7 +986,7 @@ fn pruning_a_transaction_should_remove_it_from_best_transaction() { block_on(pool.submit_one(&BlockId::number(0), SOURCE, xt1.clone())).expect("1. Imported"); assert_eq!(pool.status().ready, 1); - let header = pool.api.push_block(1, vec![xt1.clone()], true); + let header = pool.api().push_block(1, vec![xt1.clone()], true); // This will prune `xt1`. block_on(pool.maintain(block_event(header))); @@ -1002,10 +1003,10 @@ fn only_revalidate_on_best_block() { block_on(pool.submit_one(&BlockId::number(0), SOURCE, xt.clone())).expect("1. Imported"); assert_eq!(pool.status().ready, 1); - let header = pool.api.push_block(1, vec![], true); + let header = pool.api().push_block(1, vec![], true); - pool.api.push_block(2, vec![], false); - pool.api.push_block(2, vec![], false); + pool.api().push_block(2, vec![], false); + pool.api().push_block(2, vec![], false); block_on(pool.maintain(block_event(header))); block_on(notifier.next()); @@ -1073,7 +1074,7 @@ fn stale_transactions_are_pruned() { ]; // Import block - let header = pool.api.push_block(1, xts, true); + let header = pool.api().push_block(1, xts, true); block_on(pool.maintain(block_event(header))); // The imported transactions have a different hash and should not evict our initial // transactions. @@ -1081,7 +1082,7 @@ fn stale_transactions_are_pruned() { // Import enough blocks to make our transactions stale for n in 1..66 { - let header = pool.api.push_block(n, vec![], true); + let header = pool.api().push_block(n, vec![], true); block_on(pool.maintain(block_event(header))); } diff --git a/client/transaction-pool/tests/revalidation.rs b/client/transaction-pool/tests/revalidation.rs new file mode 100644 index 0000000000000..2d47dc6ccd484 --- /dev/null +++ b/client/transaction-pool/tests/revalidation.rs @@ -0,0 +1,32 @@ +use sc_transaction_pool::{Pool, RevalidationQueue}; +use sc_transaction_pool_api::TransactionSource; +use substrate_test_runtime_transaction_pool::{TestApi, uxt}; +use futures::executor::block_on; +use substrate_test_runtime_client::AccountKeyring::*; +use std::sync::Arc; +use sp_runtime::generic::BlockId; + +fn setup() -> (Arc, Pool) { + let test_api = Arc::new(TestApi::empty()); + let pool = Pool::new(Default::default(), true.into(), test_api.clone()); + (test_api, pool) +} + +#[test] +fn smoky() { + let (api, pool) = setup(); + let pool = Arc::new(pool); + let queue = Arc::new(RevalidationQueue::new(api.clone(), pool.clone())); + + let uxt = uxt(Alice, 0); + let uxt_hash = block_on( + pool.submit_one(&BlockId::number(0), TransactionSource::External, uxt.clone()) + ).expect("Should be valid"); + + block_on(queue.revalidate_later(0, vec![uxt_hash])); + + // revalidated in sync offload 2nd time + assert_eq!(api.validation_requests().len(), 2); + // number of ready + assert_eq!(pool.validated_pool().status().ready, 1); +} \ No newline at end of file diff --git a/docs/Upgrading-2.0-to-3.0.md b/docs/Upgrading-2.0-to-3.0.md index b5d35567a095f..0a2593f287255 100644 --- a/docs/Upgrading-2.0-to-3.0.md +++ b/docs/Upgrading-2.0-to-3.0.md @@ -353,7 +353,7 @@ As said, we've added a new optional RPC service for improved light client suppor @@ -49,6 +49,7 @@ use sp_consensus::SelectChain; use sp_consensus_babe::BabeApi; use sc_rpc::SubscriptionTaskExecutor; - use sc_transaction_pool_api::TransactionPool; + use sc_transaction_pool_primitives::TransactionPool; +use sc_client_api::AuxStore; /// Light client extra dependencies. diff --git a/primitives/transaction-pool/Cargo.toml b/primitives/transaction-pool/Cargo.toml index a742194743f46..d6c2d716ee844 100644 --- a/primitives/transaction-pool/Cargo.toml +++ b/primitives/transaction-pool/Cargo.toml @@ -6,7 +6,7 @@ edition = "2018" license = "Apache-2.0" homepage = "https://substrate.dev" repository = "https://github.com/paritytech/substrate/" -description = "Transaction pool primitives types & Runtime API." +description = "Transaction pool runtime facing API." documentation = "https://docs.rs/sp-transaction-pool" readme = "README.md" diff --git a/primitives/transaction-pool/src/lib.rs b/primitives/transaction-pool/src/lib.rs index dca073e977581..3c71149255ce0 100644 --- a/primitives/transaction-pool/src/lib.rs +++ b/primitives/transaction-pool/src/lib.rs @@ -15,13 +15,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -//! Transaction pool primitives types & Runtime API. +//! Transaction pool runtime facing API. #![warn(missing_docs)] #![cfg_attr(not(feature = "std"), no_std)] pub mod runtime_api; - -pub use sp_runtime::transaction_validity::{ - TransactionLongevity, TransactionPriority, TransactionTag, TransactionSource, -}; diff --git a/test-utils/runtime/transaction-pool/Cargo.toml b/test-utils/runtime/transaction-pool/Cargo.toml index 5946154ba28c7..f0c5a19869df7 100644 --- a/test-utils/runtime/transaction-pool/Cargo.toml +++ b/test-utils/runtime/transaction-pool/Cargo.toml @@ -17,7 +17,7 @@ parking_lot = "0.11.1" codec = { package = "parity-scale-codec", version = "2.0.0" } sp-blockchain = { version = "3.0.0", path = "../../../primitives/blockchain" } sp-runtime = { version = "3.0.0", path = "../../../primitives/runtime" } -sc-transaction-graph = { version = "3.0.0", path = "../../../client/transaction-pool/graph" } +sc-transaction-pool = { version = "3.0.0", path = "../../../client/transaction-pool", features = ["test-helpers"] } sc-transaction-pool-api = { version = "3.0.0", path = "../../../client/transaction-pool/api" } futures = { version = "0.3.1", features = ["compat"] } derive_more = "0.99.2" diff --git a/test-utils/runtime/transaction-pool/src/lib.rs b/test-utils/runtime/transaction-pool/src/lib.rs index 297e6ce32871e..45d960a43d67c 100644 --- a/test-utils/runtime/transaction-pool/src/lib.rs +++ b/test-utils/runtime/transaction-pool/src/lib.rs @@ -226,7 +226,7 @@ impl TestApi { } } -impl sc_transaction_graph::ChainApi for TestApi { +impl sc_transaction_pool::ChainApi for TestApi { type Block = Block; type Error = Error; type ValidationFuture = futures::future::Ready>; @@ -236,7 +236,7 @@ impl sc_transaction_graph::ChainApi for TestApi { &self, at: &BlockId, _source: TransactionSource, - uxt: sc_transaction_graph::ExtrinsicFor, + uxt: sc_transaction_pool::types::ExtrinsicFor, ) -> Self::ValidationFuture { self.validation_requests.write().push(uxt.clone()); @@ -300,7 +300,7 @@ impl sc_transaction_graph::ChainApi for TestApi { fn block_id_to_number( &self, at: &BlockId, - ) -> Result>, Error> { + ) -> Result>, Error> { Ok(match at { generic::BlockId::Hash(x) => self.chain .read() @@ -314,7 +314,7 @@ impl sc_transaction_graph::ChainApi for TestApi { fn block_id_to_hash( &self, at: &BlockId, - ) -> Result>, Error> { + ) -> Result>, Error> { Ok(match at { generic::BlockId::Hash(x) => Some(x.clone()), generic::BlockId::Number(num) => self.chain @@ -327,7 +327,7 @@ impl sc_transaction_graph::ChainApi for TestApi { fn hash_and_length( &self, - ex: &sc_transaction_graph::ExtrinsicFor, + ex: &sc_transaction_pool::types::ExtrinsicFor, ) -> (Hash, usize) { Self::hash_and_length_inner(ex) } diff --git a/test-utils/test-runner/Cargo.toml b/test-utils/test-runner/Cargo.toml index 36bfdb29e9461..cf171b0ea5ef3 100644 --- a/test-utils/test-runner/Cargo.toml +++ b/test-utils/test-runner/Cargo.toml @@ -16,7 +16,6 @@ sc-basic-authorship = { version = "0.9.0", path = "../../client/basic-authorship sc-rpc = { version = "3.0.0", path = "../../client/rpc" } sc-transaction-pool = { version = "3.0.0", path = "../../client/transaction-pool" } sc-transaction-pool-api = { version = "3.0.0", path = "../../client/transaction-pool/api" } -sc-transaction-graph = { version = "3.0.0", path = "../../client/transaction-pool/graph" } sc-client-api = { version = "3.0.0", path = "../../client/api" } sc-rpc-server = { version = "3.0.0", path = "../../client/rpc-servers" } manual-seal = { package = "sc-consensus-manual-seal", version = "0.9.0", path = "../../client/consensus/manual-seal" } diff --git a/test-utils/test-runner/src/node.rs b/test-utils/test-runner/src/node.rs index f41466db583f8..92fc3dbcda475 100644 --- a/test-utils/test-runner/src/node.rs +++ b/test-utils/test-runner/src/node.rs @@ -66,7 +66,7 @@ pub struct Node { Block = T::Block, Hash = ::Hash, Error = sc_transaction_pool::error::Error, - InPoolTransaction = sc_transaction_graph::base_pool::Transaction< + InPoolTransaction = sc_transaction_pool::Transaction< ::Hash, ::Extrinsic, >, From e8b967cdbf2580907c8e00e0a0a846a7544a7cfe Mon Sep 17 00:00:00 2001 From: Seun Lanlege Date: Mon, 5 Jul 2021 13:24:49 +0100 Subject: [PATCH 06/11] fix line widths --- client/transaction-pool/src/graph/ready.rs | 3 ++- client/transaction-pool/src/graph/validated_pool.rs | 6 +++++- client/transaction-pool/tests/pool.rs | 3 ++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/client/transaction-pool/src/graph/ready.rs b/client/transaction-pool/src/graph/ready.rs index eb6838b90c62c..b080947f0db8c 100644 --- a/client/transaction-pool/src/graph/ready.rs +++ b/client/transaction-pool/src/graph/ready.rs @@ -147,7 +147,8 @@ impl ReadyTransactions { /// /// Transactions are returned in order: /// 1. First by the dependencies: - /// - never return transaction that requires a tag, which was not provided by one of the previously returned transactions + /// - never return transaction that requires a tag, which was not provided by one of the previously + /// returned transactions /// 2. Then by priority: /// - If there are two transactions with all requirements satisfied the one with higher priority goes first. /// 3. Then by the ttl that's left diff --git a/client/transaction-pool/src/graph/validated_pool.rs b/client/transaction-pool/src/graph/validated_pool.rs index 60d8ab1babd5c..5feba94dc56b1 100644 --- a/client/transaction-pool/src/graph/validated_pool.rs +++ b/client/transaction-pool/src/graph/validated_pool.rs @@ -209,7 +209,11 @@ impl ValidatedPool { Ok(()) => true, Err(e) => { if e.is_full() { - log::warn!(target: "txpool", "[{:?}] Trying to notify an import but the channel is full", hash); + log::warn!( + target: "txpool", + "[{:?}] Trying to notify an import but the channel is full", + hash, + ); true } else { false diff --git a/client/transaction-pool/tests/pool.rs b/client/transaction-pool/tests/pool.rs index a4b0df66fe3b1..c22ed5baab3cd 100644 --- a/client/transaction-pool/tests/pool.rs +++ b/client/transaction-pool/tests/pool.rs @@ -927,7 +927,8 @@ fn should_not_accept_old_signatures() { // generated with schnorrkel 0.1.1 from `_bytes` let old_singature = sp_core::sr25519::Signature::try_from(&hex::decode( - "c427eb672e8c441c86d31f1a81b22b43102058e9ce237cabe9897ea5099ffd426cd1c6a1f4f2869c3df57901d36bedcb295657adb3a4355add86ed234eb83108" + "c427eb672e8c441c86d31f1a81b22b43102058e9ce237cabe9897ea5099ffd426\ + cd1c6a1f4f2869c3df57901d36bedcb295657adb3a4355add86ed234eb83108" ).expect("hex invalid")[..]).expect("signature construction failed"); let xt = Extrinsic::Transfer { From 7c5f853ccc6e796f1445f93fd2229462c8cc2931 Mon Sep 17 00:00:00 2001 From: Seun Lanlege Date: Mon, 5 Jul 2021 13:46:07 +0100 Subject: [PATCH 07/11] fix import errors --- client/transaction-pool/src/lib.rs | 16 ++++++++-------- docs/Upgrading-2.0-to-3.0.md | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/client/transaction-pool/src/lib.rs b/client/transaction-pool/src/lib.rs index 510f5bf8bf7eb..8e8db4360196d 100644 --- a/client/transaction-pool/src/lib.rs +++ b/client/transaction-pool/src/lib.rs @@ -53,7 +53,7 @@ use sc_transaction_pool_api::{ TransactionStatusStreamFor, MaintainedTransactionPool, PoolFuture, ChainEvent, TransactionSource, }; -use graph::{IsValidator, ExtrinsicHash}; +use graph::{IsValidator, ExtrinsicHash, ChainApi as _}; use wasm_timer::Instant; use prometheus_endpoint::Registry as PrometheusRegistry; @@ -78,7 +78,7 @@ pub type LightPool = BasicPool where Block: BlockT, - PoolApi: ChainApi, + PoolApi: graph::ChainApi, { pool: Arc>, api: Arc, @@ -139,7 +139,7 @@ impl ReadyPoll { #[cfg(not(target_os = "unknown"))] impl parity_util_mem::MallocSizeOf for BasicPool where - PoolApi: ChainApi, + PoolApi: graph::ChainApi, Block: BlockT, { fn size_of(&self, ops: &mut parity_util_mem::MallocSizeOfOps) -> usize { @@ -168,7 +168,7 @@ pub enum RevalidationType { impl BasicPool where Block: BlockT, - PoolApi: ChainApi + 'static, + PoolApi: graph::ChainApi + 'static, { /// Create new basic transaction pool with provided api, for tests. #[cfg(feature = "test-helpers")] @@ -252,7 +252,7 @@ impl BasicPool impl TransactionPool for BasicPool where Block: BlockT, - PoolApi: 'static + ChainApi, + PoolApi: 'static + graph::ChainApi, { type Block = PoolApi::Block; type Hash = graph::ExtrinsicHash; @@ -444,7 +444,7 @@ where { type Block = Block; type Hash = graph::ExtrinsicHash>; - type Error = as ChainApi>::Error; + type Error = as graph::ChainApi>::Error; fn submit_local( &self, @@ -569,7 +569,7 @@ impl RevalidationStatus { } /// Prune the known txs for the given block. -async fn prune_known_txs_for_block>( +async fn prune_known_txs_for_block>( block_id: BlockId, api: &Api, pool: &graph::Pool, @@ -609,7 +609,7 @@ async fn prune_known_txs_for_block>( impl MaintainedTransactionPool for BasicPool where Block: BlockT, - PoolApi: 'static + ChainApi, + PoolApi: 'static + graph::ChainApi, { fn maintain(&self, event: ChainEvent) -> Pin + Send>> { match event { diff --git a/docs/Upgrading-2.0-to-3.0.md b/docs/Upgrading-2.0-to-3.0.md index 0a2593f287255..46f01ab7824cd 100644 --- a/docs/Upgrading-2.0-to-3.0.md +++ b/docs/Upgrading-2.0-to-3.0.md @@ -353,7 +353,7 @@ As said, we've added a new optional RPC service for improved light client suppor @@ -49,6 +49,7 @@ use sp_consensus::SelectChain; use sp_consensus_babe::BabeApi; use sc_rpc::SubscriptionTaskExecutor; - use sc_transaction_pool_primitives::TransactionPool; + use sp_transaction_pool::TransactionPool; +use sc_client_api::AuxStore; /// Light client extra dependencies. @@ -1003,7 +1003,7 @@ Altogether this accumulates to the following diff for `node/cli/src/service.rs`. use crate::service::{new_full_base, new_light_base, NewFullBase}; - use sp_runtime::traits::IdentifyAccount; + use sp_runtime::{key_types::BABE, traits::IdentifyAccount, RuntimeAppPublic}; - use sc_transaction_pool_api::{MaintainedTransactionPool, ChainEvent}; + use sp_transaction_pool::{MaintainedTransactionPool, ChainEvent}; use sc_client_api::BlockBackend; + use sc_keystore::LocalKeystore; From c3de8261a908b8d70a2963fdf2bf9b599ebfabcf Mon Sep 17 00:00:00 2001 From: Seun Lanlege Date: Mon, 5 Jul 2021 14:02:12 +0100 Subject: [PATCH 08/11] fix import errors --- client/transaction-pool/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/transaction-pool/src/lib.rs b/client/transaction-pool/src/lib.rs index 8e8db4360196d..61af367af4ff5 100644 --- a/client/transaction-pool/src/lib.rs +++ b/client/transaction-pool/src/lib.rs @@ -53,7 +53,7 @@ use sc_transaction_pool_api::{ TransactionStatusStreamFor, MaintainedTransactionPool, PoolFuture, ChainEvent, TransactionSource, }; -use graph::{IsValidator, ExtrinsicHash, ChainApi as _}; +use graph::{IsValidator, ExtrinsicHash}; use wasm_timer::Instant; use prometheus_endpoint::Registry as PrometheusRegistry; @@ -451,7 +451,7 @@ where at: &BlockId, xt: sc_transaction_pool_api::LocalTransactionFor, ) -> Result { - use graph::ValidatedTransaction; + use graph::{ValidatedTransaction, ChainApi}; use sp_runtime::traits::SaturatedConversion; use sp_runtime::transaction_validity::TransactionValidityError; From ce97c379330c1f08d0af992965ccd2d74e3f8137 Mon Sep 17 00:00:00 2001 From: Seun Lanlege Date: Mon, 5 Jul 2021 14:46:05 +0100 Subject: [PATCH 09/11] =?UTF-8?q?fix=20import=20errors=20=F0=9F=A4=A6?= =?UTF-8?q?=F0=9F=8F=BE=E2=80=8D=E2=99=82=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/transaction-pool/benches/basics.rs | 8 ++++---- client/transaction-pool/src/lib.rs | 11 ++++++----- client/transaction-pool/tests/pool.rs | 2 +- client/transaction-pool/tests/revalidation.rs | 2 +- test-utils/runtime/transaction-pool/src/lib.rs | 10 +++++----- 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/client/transaction-pool/benches/basics.rs b/client/transaction-pool/benches/basics.rs index 8941905c2ecec..117738bf3ad3f 100644 --- a/client/transaction-pool/benches/basics.rs +++ b/client/transaction-pool/benches/basics.rs @@ -59,7 +59,7 @@ impl ChainApi for TestApi { &self, at: &BlockId, _source: TransactionSource, - uxt: types::ExtrinsicFor, + uxt: test_helpers::ExtrinsicFor, ) -> Self::ValidationFuture { let nonce = uxt.transfer().nonce; let from = uxt.transfer().from.clone(); @@ -89,7 +89,7 @@ impl ChainApi for TestApi { fn block_id_to_number( &self, at: &BlockId, - ) -> Result>, Self::Error> { + ) -> Result>, Self::Error> { Ok(match at { BlockId::Number(num) => Some(*num), BlockId::Hash(_) => None, @@ -99,14 +99,14 @@ impl ChainApi for TestApi { fn block_id_to_hash( &self, at: &BlockId, - ) -> Result>, Self::Error> { + ) -> Result>, Self::Error> { Ok(match at { BlockId::Number(num) => Some(H256::from_low_u64_be(*num)).into(), BlockId::Hash(_) => None, }) } - fn hash_and_length(&self, uxt: &types::ExtrinsicFor) -> (H256, usize) { + fn hash_and_length(&self, uxt: &test_helpers::ExtrinsicFor) -> (H256, usize) { let encoded = uxt.encode(); (blake2_256(&encoded).into(), encoded.len()) } diff --git a/client/transaction-pool/src/lib.rs b/client/transaction-pool/src/lib.rs index 61af367af4ff5..8f89063657c04 100644 --- a/client/transaction-pool/src/lib.rs +++ b/client/transaction-pool/src/lib.rs @@ -29,12 +29,13 @@ mod metrics; pub mod error; +/// Common types for testing the transaction pool #[cfg(feature = "test-helpers")] -pub use self::{graph::{ChainApi, Pool}, revalidation::RevalidationQueue}; -/// Common types for working with the transaction pool -#[cfg(feature = "test-helpers")] -pub mod types { - pub use super::graph::{NumberFor, BlockHash, ExtrinsicFor}; +pub mod test_helpers { + pub use super::{ + graph::{ChainApi, Pool, NumberFor, BlockHash, ExtrinsicFor}, + revalidation::RevalidationQueue, + }; } pub use graph::{Options, Transaction}; diff --git a/client/transaction-pool/tests/pool.rs b/client/transaction-pool/tests/pool.rs index c22ed5baab3cd..9a9d59214d0b9 100644 --- a/client/transaction-pool/tests/pool.rs +++ b/client/transaction-pool/tests/pool.rs @@ -34,7 +34,7 @@ use std::{collections::BTreeSet, sync::Arc, convert::TryInto}; use sc_client_api::client::BlockchainEvents; use sc_block_builder::BlockBuilderProvider; use sp_consensus::BlockOrigin; -use sc_transaction_pool::*; +use sc_transaction_pool::{*, test_helpers::*}; fn pool() -> Pool { Pool::new(Default::default(), true.into(), TestApi::with_alice_nonce(209).into()) diff --git a/client/transaction-pool/tests/revalidation.rs b/client/transaction-pool/tests/revalidation.rs index 2d47dc6ccd484..d720f09a7fce5 100644 --- a/client/transaction-pool/tests/revalidation.rs +++ b/client/transaction-pool/tests/revalidation.rs @@ -1,4 +1,4 @@ -use sc_transaction_pool::{Pool, RevalidationQueue}; +use sc_transaction_pool::test_helpers::{Pool, RevalidationQueue}; use sc_transaction_pool_api::TransactionSource; use substrate_test_runtime_transaction_pool::{TestApi, uxt}; use futures::executor::block_on; diff --git a/test-utils/runtime/transaction-pool/src/lib.rs b/test-utils/runtime/transaction-pool/src/lib.rs index 45d960a43d67c..b3717d22a8bed 100644 --- a/test-utils/runtime/transaction-pool/src/lib.rs +++ b/test-utils/runtime/transaction-pool/src/lib.rs @@ -226,7 +226,7 @@ impl TestApi { } } -impl sc_transaction_pool::ChainApi for TestApi { +impl sc_transaction_pool::test_helpers::ChainApi for TestApi { type Block = Block; type Error = Error; type ValidationFuture = futures::future::Ready>; @@ -236,7 +236,7 @@ impl sc_transaction_pool::ChainApi for TestApi { &self, at: &BlockId, _source: TransactionSource, - uxt: sc_transaction_pool::types::ExtrinsicFor, + uxt: sc_transaction_pool::test_helpers::ExtrinsicFor, ) -> Self::ValidationFuture { self.validation_requests.write().push(uxt.clone()); @@ -300,7 +300,7 @@ impl sc_transaction_pool::ChainApi for TestApi { fn block_id_to_number( &self, at: &BlockId, - ) -> Result>, Error> { + ) -> Result>, Error> { Ok(match at { generic::BlockId::Hash(x) => self.chain .read() @@ -314,7 +314,7 @@ impl sc_transaction_pool::ChainApi for TestApi { fn block_id_to_hash( &self, at: &BlockId, - ) -> Result>, Error> { + ) -> Result>, Error> { Ok(match at { generic::BlockId::Hash(x) => Some(x.clone()), generic::BlockId::Number(num) => self.chain @@ -327,7 +327,7 @@ impl sc_transaction_pool::ChainApi for TestApi { fn hash_and_length( &self, - ex: &sc_transaction_pool::types::ExtrinsicFor, + ex: &sc_transaction_pool::test_helpers::ExtrinsicFor, ) -> (Hash, usize) { Self::hash_and_length_inner(ex) } From f9668ea67c3e9f16e6f8fc02c3244bebdd49ce57 Mon Sep 17 00:00:00 2001 From: Seun Lanlege Date: Mon, 5 Jul 2021 15:27:44 +0100 Subject: [PATCH 10/11] =?UTF-8?q?fix=20import=20errors=20=F0=9F=A4=A6?= =?UTF-8?q?=F0=9F=8F=BE=E2=80=8D=E2=99=82=EF=B8=8F=F0=9F=A4=A6=F0=9F=8F=BE?= =?UTF-8?q?=E2=80=8D=E2=99=82=EF=B8=8F=F0=9F=A4=A6=F0=9F=8F=BE=E2=80=8D?= =?UTF-8?q?=E2=99=82=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/transaction-pool/benches/basics.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/transaction-pool/benches/basics.rs b/client/transaction-pool/benches/basics.rs index 117738bf3ad3f..6995491ea22c4 100644 --- a/client/transaction-pool/benches/basics.rs +++ b/client/transaction-pool/benches/basics.rs @@ -19,7 +19,7 @@ use criterion::{criterion_group, criterion_main, Criterion}; use futures::{future::{ready, Ready}, executor::block_on}; -use sc_transaction_pool::*; +use sc_transaction_pool::{*, test_helpers::*}; use codec::Encode; use substrate_test_runtime::{Block, Extrinsic, Transfer, H256, AccountId}; use sp_runtime::{ From d459ed260fdf2432a0eb1d52416a155fbb5e7c8b Mon Sep 17 00:00:00 2001 From: Seun Lanlege Date: Tue, 6 Jul 2021 17:08:26 +0100 Subject: [PATCH 11/11] remove sp-keyring --- Cargo.lock | 1 - client/transaction-pool/Cargo.toml | 1 - 2 files changed, 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8060e514084b5..c89fd95123450 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8198,7 +8198,6 @@ dependencies = [ "sp-blockchain", "sp-consensus", "sp-core", - "sp-keyring", "sp-runtime", "sp-tracing", "sp-transaction-pool", diff --git a/client/transaction-pool/Cargo.toml b/client/transaction-pool/Cargo.toml index 140da607f3466..988f252a63430 100644 --- a/client/transaction-pool/Cargo.toml +++ b/client/transaction-pool/Cargo.toml @@ -39,7 +39,6 @@ retain_mut = "0.1.3" [dev-dependencies] assert_matches = "1.3.0" hex = "0.4" -sp-keyring = { version = "3.0.0", path = "../../primitives/keyring" } sp-consensus = { version = "0.9.0", path = "../../primitives/consensus/common" } substrate-test-runtime-transaction-pool = { version = "2.0.0", path = "../../test-utils/runtime/transaction-pool" } substrate-test-runtime-client = { version = "2.0.0", path = "../../test-utils/runtime/client" }