mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 05:51:02 +00:00
Companion PR for Various small improvements to service construction.. (#1472)
* Initial commit Forked at:1ed17cd467Parent branch: origin/master * Refactor * Refactor * Remove macro * WIP Forked at:1ed17cd467Parent branch: origin/master * CLEANUP Forked at:1ed17cd467Parent branch: origin/master * small fix * fix for browser * Switch branch * Rewrite service builds * Update branch * Fix sp-core branch * Switch branch back and update Co-authored-by: Cecile Tonglet <cecile.tonglet@cecton.com>
This commit is contained in:
Generated
+140
-146
File diff suppressed because it is too large
Load Diff
@@ -36,7 +36,7 @@ use sp_core::traits::SpawnNamed;
|
|||||||
pub use service::{
|
pub use service::{
|
||||||
Role, PruningMode, TransactionPoolOptions, Error, RuntimeGenesis,
|
Role, PruningMode, TransactionPoolOptions, Error, RuntimeGenesis,
|
||||||
TFullClient, TLightClient, TFullBackend, TLightBackend, TFullCallExecutor, TLightCallExecutor,
|
TFullClient, TLightClient, TFullBackend, TLightBackend, TFullCallExecutor, TLightCallExecutor,
|
||||||
Configuration, ChainSpec, ServiceComponents, TaskManager,
|
Configuration, ChainSpec, TaskManager,
|
||||||
};
|
};
|
||||||
pub use service::config::{DatabaseConfig, PrometheusConfig};
|
pub use service::config::{DatabaseConfig, PrometheusConfig};
|
||||||
pub use sc_executor::NativeExecutionDispatch;
|
pub use sc_executor::NativeExecutionDispatch;
|
||||||
@@ -157,26 +157,25 @@ type LightClient<RuntimeApi, Executor> =
|
|||||||
service::TLightClientWithBackend<Block, RuntimeApi, Executor, LightBackend>;
|
service::TLightClientWithBackend<Block, RuntimeApi, Executor, LightBackend>;
|
||||||
|
|
||||||
#[cfg(feature = "full-node")]
|
#[cfg(feature = "full-node")]
|
||||||
fn full_params<RuntimeApi, Executor, Extrinsic>(mut config: Configuration) -> Result<(
|
fn new_partial<RuntimeApi, Executor, Extrinsic>(config: &mut Configuration) -> Result<
|
||||||
service::ServiceParams<
|
service::PartialComponents<
|
||||||
Block,
|
FullClient<RuntimeApi, Executor>, FullBackend, FullSelectChain,
|
||||||
FullClient<RuntimeApi, Executor>,
|
|
||||||
babe::BabeImportQueue<Block, FullClient<RuntimeApi, Executor>>,
|
babe::BabeImportQueue<Block, FullClient<RuntimeApi, Executor>>,
|
||||||
sc_transaction_pool::FullPool<Block, FullClient<RuntimeApi, Executor>>,
|
sc_transaction_pool::FullPool<Block, FullClient<RuntimeApi, Executor>>,
|
||||||
polkadot_rpc::RpcExtension,
|
(
|
||||||
FullBackend,
|
impl Fn(polkadot_rpc::DenyUnsafe) -> polkadot_rpc::RpcExtension,
|
||||||
|
(
|
||||||
|
babe::BabeBlockImport<
|
||||||
|
Block, FullClient<RuntimeApi, Executor>, FullGrandpaBlockImport<RuntimeApi, Executor>
|
||||||
|
>,
|
||||||
|
grandpa::LinkHalf<Block, FullClient<RuntimeApi, Executor>, FullSelectChain>,
|
||||||
|
babe::BabeLink<Block>
|
||||||
|
),
|
||||||
|
grandpa::SharedVoterState,
|
||||||
|
)
|
||||||
>,
|
>,
|
||||||
FullSelectChain,
|
Error
|
||||||
(
|
>
|
||||||
babe::BabeBlockImport<
|
|
||||||
Block, FullClient<RuntimeApi, Executor>, FullGrandpaBlockImport<RuntimeApi, Executor>
|
|
||||||
>,
|
|
||||||
grandpa::LinkHalf<Block, FullClient<RuntimeApi, Executor>, FullSelectChain>,
|
|
||||||
babe::BabeLink<Block>
|
|
||||||
),
|
|
||||||
inherents::InherentDataProviders,
|
|
||||||
grandpa::SharedVoterState,
|
|
||||||
), Error>
|
|
||||||
where
|
where
|
||||||
RuntimeApi: ConstructRuntimeApi<Block, FullClient<RuntimeApi, Executor>> + Send + Sync + 'static,
|
RuntimeApi: ConstructRuntimeApi<Block, FullClient<RuntimeApi, Executor>> + Send + Sync + 'static,
|
||||||
RuntimeApi::RuntimeApi:
|
RuntimeApi::RuntimeApi:
|
||||||
@@ -184,23 +183,18 @@ fn full_params<RuntimeApi, Executor, Extrinsic>(mut config: Configuration) -> Re
|
|||||||
Executor: NativeExecutionDispatch + 'static,
|
Executor: NativeExecutionDispatch + 'static,
|
||||||
Extrinsic: RuntimeExtrinsic,
|
Extrinsic: RuntimeExtrinsic,
|
||||||
{
|
{
|
||||||
set_prometheus_registry(&mut config)?;
|
set_prometheus_registry(config)?;
|
||||||
|
|
||||||
let inherent_data_providers = inherents::InherentDataProviders::new();
|
let inherent_data_providers = inherents::InherentDataProviders::new();
|
||||||
|
|
||||||
|
|
||||||
let (client, backend, keystore, task_manager) =
|
let (client, backend, keystore, task_manager) =
|
||||||
service::new_full_parts::<Block, RuntimeApi, Executor>(&config)?;
|
service::new_full_parts::<Block, RuntimeApi, Executor>(&config)?;
|
||||||
let client = Arc::new(client);
|
let client = Arc::new(client);
|
||||||
|
|
||||||
let select_chain = sc_consensus::LongestChain::new(backend.clone());
|
let select_chain = sc_consensus::LongestChain::new(backend.clone());
|
||||||
|
|
||||||
let pool_api = sc_transaction_pool::FullChainApi::new(
|
|
||||||
client.clone(), config.prometheus_registry(),
|
|
||||||
);
|
|
||||||
let transaction_pool = sc_transaction_pool::BasicPool::new_full(
|
let transaction_pool = sc_transaction_pool::BasicPool::new_full(
|
||||||
config.transaction_pool.clone(),
|
config.transaction_pool.clone(),
|
||||||
std::sync::Arc::new(pool_api),
|
|
||||||
config.prometheus_registry(),
|
config.prometheus_registry(),
|
||||||
task_manager.spawn_handle(),
|
task_manager.spawn_handle(),
|
||||||
client.clone(),
|
client.clone(),
|
||||||
@@ -255,7 +249,7 @@ fn full_params<RuntimeApi, Executor, Extrinsic>(mut config: Configuration) -> Re
|
|||||||
let transaction_pool = transaction_pool.clone();
|
let transaction_pool = transaction_pool.clone();
|
||||||
let select_chain = select_chain.clone();
|
let select_chain = select_chain.clone();
|
||||||
|
|
||||||
Box::new(move |deny_unsafe| -> polkadot_rpc::RpcExtension {
|
move |deny_unsafe| -> polkadot_rpc::RpcExtension {
|
||||||
let deps = polkadot_rpc::FullDeps {
|
let deps = polkadot_rpc::FullDeps {
|
||||||
client: client.clone(),
|
client: client.clone(),
|
||||||
pool: transaction_pool.clone(),
|
pool: transaction_pool.clone(),
|
||||||
@@ -273,23 +267,14 @@ fn full_params<RuntimeApi, Executor, Extrinsic>(mut config: Configuration) -> Re
|
|||||||
};
|
};
|
||||||
|
|
||||||
polkadot_rpc::create_full(deps)
|
polkadot_rpc::create_full(deps)
|
||||||
})
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let provider = client.clone() as Arc<dyn grandpa::StorageAndProofProvider<_, _>>;
|
Ok(service::PartialComponents {
|
||||||
let finality_proof_provider = Arc::new(GrandpaFinalityProofProvider::new(backend.clone(), provider)) as _;
|
client, backend, task_manager, keystore, select_chain, import_queue, transaction_pool,
|
||||||
|
inherent_data_providers,
|
||||||
let params = service::ServiceParams {
|
other: (rpc_extensions_builder, import_setup, rpc_setup)
|
||||||
config, backend, client, import_queue, keystore, task_manager, rpc_extensions_builder,
|
})
|
||||||
transaction_pool,
|
|
||||||
block_announce_validator_builder: None,
|
|
||||||
finality_proof_provider: Some(finality_proof_provider),
|
|
||||||
finality_proof_request_builder: None,
|
|
||||||
on_demand: None,
|
|
||||||
remote_blockchain: None,
|
|
||||||
};
|
|
||||||
|
|
||||||
Ok((params, select_chain, import_setup, inherent_data_providers, rpc_setup))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn real_overseer<S: SpawnNamed>(
|
fn real_overseer<S: SpawnNamed>(
|
||||||
@@ -319,7 +304,7 @@ fn real_overseer<S: SpawnNamed>(
|
|||||||
|
|
||||||
#[cfg(feature = "full-node")]
|
#[cfg(feature = "full-node")]
|
||||||
fn new_full<RuntimeApi, Executor, Extrinsic>(
|
fn new_full<RuntimeApi, Executor, Extrinsic>(
|
||||||
config: Configuration,
|
mut config: Configuration,
|
||||||
collating_for: Option<(CollatorId, ParaId)>,
|
collating_for: Option<(CollatorId, ParaId)>,
|
||||||
_max_block_data_size: Option<u64>,
|
_max_block_data_size: Option<u64>,
|
||||||
_authority_discovery_disabled: bool,
|
_authority_discovery_disabled: bool,
|
||||||
@@ -346,17 +331,52 @@ fn new_full<RuntimeApi, Executor, Extrinsic>(
|
|||||||
let disable_grandpa = config.disable_grandpa;
|
let disable_grandpa = config.disable_grandpa;
|
||||||
let name = config.network.node_name.clone();
|
let name = config.network.node_name.clone();
|
||||||
|
|
||||||
let (params, select_chain, import_setup, inherent_data_providers, rpc_setup)
|
let service::PartialComponents {
|
||||||
= full_params::<RuntimeApi, Executor, Extrinsic>(config)?;
|
client, backend, mut task_manager, keystore, select_chain, import_queue, transaction_pool,
|
||||||
|
inherent_data_providers,
|
||||||
|
other: (rpc_extensions_builder, import_setup, rpc_setup)
|
||||||
|
} = new_partial::<RuntimeApi, Executor, Extrinsic>(&mut config)?;
|
||||||
|
|
||||||
let client = params.client.clone();
|
let prometheus_registry = config.prometheus_registry().cloned();
|
||||||
let keystore = params.keystore.clone();
|
|
||||||
let transaction_pool = params.transaction_pool.clone();
|
|
||||||
let prometheus_registry = params.config.prometheus_registry().cloned();
|
|
||||||
|
|
||||||
let ServiceComponents {
|
let finality_proof_provider =
|
||||||
network, task_manager, telemetry_on_connect_sinks, ..
|
GrandpaFinalityProofProvider::new_for_service(backend.clone(), client.clone());
|
||||||
} = service::build(params)?;
|
|
||||||
|
let (network, network_status_sinks, system_rpc_tx) =
|
||||||
|
service::build_network(service::BuildNetworkParams {
|
||||||
|
config: &config,
|
||||||
|
client: client.clone(),
|
||||||
|
transaction_pool: transaction_pool.clone(),
|
||||||
|
spawn_handle: task_manager.spawn_handle(),
|
||||||
|
import_queue,
|
||||||
|
on_demand: None,
|
||||||
|
block_announce_validator_builder: None,
|
||||||
|
finality_proof_request_builder: None,
|
||||||
|
finality_proof_provider: Some(finality_proof_provider.clone()),
|
||||||
|
})?;
|
||||||
|
|
||||||
|
if config.offchain_worker.enabled {
|
||||||
|
service::build_offchain_workers(
|
||||||
|
&config, backend.clone(), task_manager.spawn_handle(), client.clone(), network.clone(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
let telemetry_connection_sinks = service::TelemetryConnectionSinks::default();
|
||||||
|
|
||||||
|
service::spawn_tasks(service::SpawnTasksParams {
|
||||||
|
config,
|
||||||
|
backend: backend.clone(),
|
||||||
|
client: client.clone(),
|
||||||
|
keystore: keystore.clone(),
|
||||||
|
network: network.clone(),
|
||||||
|
rpc_extensions_builder: Box::new(rpc_extensions_builder),
|
||||||
|
transaction_pool: transaction_pool.clone(),
|
||||||
|
task_manager: &mut task_manager,
|
||||||
|
on_demand: None,
|
||||||
|
remote_blockchain: None,
|
||||||
|
telemetry_connection_sinks: telemetry_connection_sinks.clone(),
|
||||||
|
network_status_sinks, system_rpc_tx,
|
||||||
|
})?;
|
||||||
|
|
||||||
let (block_import, link_half, babe_link) = import_setup;
|
let (block_import, link_half, babe_link) = import_setup;
|
||||||
|
|
||||||
@@ -481,7 +501,7 @@ fn new_full<RuntimeApi, Executor, Extrinsic>(
|
|||||||
link: link_half,
|
link: link_half,
|
||||||
network: network.clone(),
|
network: network.clone(),
|
||||||
inherent_data_providers: inherent_data_providers.clone(),
|
inherent_data_providers: inherent_data_providers.clone(),
|
||||||
telemetry_on_connect: Some(telemetry_on_connect_sinks.on_connect_stream()),
|
telemetry_on_connect: Some(telemetry_connection_sinks.on_connect_stream()),
|
||||||
voting_rule,
|
voting_rule,
|
||||||
prometheus_registry: prometheus_registry,
|
prometheus_registry: prometheus_registry,
|
||||||
shared_voter_state,
|
shared_voter_state,
|
||||||
@@ -516,20 +536,17 @@ fn new_light<Runtime, Dispatch, Extrinsic>(mut config: Configuration) -> Result<
|
|||||||
crate::set_prometheus_registry(&mut config)?;
|
crate::set_prometheus_registry(&mut config)?;
|
||||||
use sc_client_api::backend::RemoteBackend;
|
use sc_client_api::backend::RemoteBackend;
|
||||||
|
|
||||||
let (client, backend, keystore, task_manager, on_demand) =
|
let (client, backend, keystore, mut task_manager, on_demand) =
|
||||||
service::new_light_parts::<Block, Runtime, Dispatch>(&config)?;
|
service::new_light_parts::<Block, Runtime, Dispatch>(&config)?;
|
||||||
|
|
||||||
let select_chain = sc_consensus::LongestChain::new(backend.clone());
|
let select_chain = sc_consensus::LongestChain::new(backend.clone());
|
||||||
|
|
||||||
let pool_api = sc_transaction_pool::LightChainApi::new(
|
|
||||||
client.clone(),
|
|
||||||
on_demand.clone(),
|
|
||||||
);
|
|
||||||
let transaction_pool = Arc::new(sc_transaction_pool::BasicPool::new_light(
|
let transaction_pool = Arc::new(sc_transaction_pool::BasicPool::new_light(
|
||||||
config.transaction_pool.clone(),
|
config.transaction_pool.clone(),
|
||||||
Arc::new(pool_api),
|
|
||||||
config.prometheus_registry(),
|
config.prometheus_registry(),
|
||||||
task_manager.spawn_handle(),
|
task_manager.spawn_handle(),
|
||||||
|
client.clone(),
|
||||||
|
on_demand.clone(),
|
||||||
));
|
));
|
||||||
|
|
||||||
let grandpa_block_import = grandpa::light_block_import(
|
let grandpa_block_import = grandpa::light_block_import(
|
||||||
@@ -562,8 +579,27 @@ fn new_light<Runtime, Dispatch, Extrinsic>(mut config: Configuration) -> Result<
|
|||||||
config.prometheus_registry(),
|
config.prometheus_registry(),
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
let provider = client.clone() as Arc<dyn grandpa::StorageAndProofProvider<_, _>>;
|
let finality_proof_provider =
|
||||||
let finality_proof_provider = Arc::new(GrandpaFinalityProofProvider::new(backend.clone(), provider));
|
GrandpaFinalityProofProvider::new_for_service(backend.clone(), client.clone());
|
||||||
|
|
||||||
|
let (network, network_status_sinks, system_rpc_tx) =
|
||||||
|
service::build_network(service::BuildNetworkParams {
|
||||||
|
config: &config,
|
||||||
|
client: client.clone(),
|
||||||
|
transaction_pool: transaction_pool.clone(),
|
||||||
|
spawn_handle: task_manager.spawn_handle(),
|
||||||
|
import_queue,
|
||||||
|
on_demand: Some(on_demand.clone()),
|
||||||
|
block_announce_validator_builder: None,
|
||||||
|
finality_proof_request_builder: Some(finality_proof_request_builder),
|
||||||
|
finality_proof_provider: Some(finality_proof_provider),
|
||||||
|
})?;
|
||||||
|
|
||||||
|
if config.offchain_worker.enabled {
|
||||||
|
service::build_offchain_workers(
|
||||||
|
&config, backend.clone(), task_manager.spawn_handle(), client.clone(), network.clone(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
let light_deps = polkadot_rpc::LightDeps {
|
let light_deps = polkadot_rpc::LightDeps {
|
||||||
remote_blockchain: backend.remote_blockchain(),
|
remote_blockchain: backend.remote_blockchain(),
|
||||||
@@ -574,17 +610,14 @@ fn new_light<Runtime, Dispatch, Extrinsic>(mut config: Configuration) -> Result<
|
|||||||
|
|
||||||
let rpc_extensions = polkadot_rpc::create_light(light_deps);
|
let rpc_extensions = polkadot_rpc::create_light(light_deps);
|
||||||
|
|
||||||
let ServiceComponents { task_manager, .. } = service::build(service::ServiceParams {
|
service::spawn_tasks(service::SpawnTasksParams {
|
||||||
config,
|
|
||||||
block_announce_validator_builder: None,
|
|
||||||
finality_proof_request_builder: Some(finality_proof_request_builder),
|
|
||||||
finality_proof_provider: Some(finality_proof_provider),
|
|
||||||
on_demand: Some(on_demand),
|
on_demand: Some(on_demand),
|
||||||
remote_blockchain: Some(backend.remote_blockchain()),
|
remote_blockchain: Some(backend.remote_blockchain()),
|
||||||
rpc_extensions_builder: Box::new(service::NoopRpcExtensionBuilder(rpc_extensions)),
|
rpc_extensions_builder: Box::new(service::NoopRpcExtensionBuilder(rpc_extensions)),
|
||||||
client: client.clone(),
|
task_manager: &mut task_manager,
|
||||||
transaction_pool: transaction_pool.clone(),
|
telemetry_connection_sinks: service::TelemetryConnectionSinks::default(),
|
||||||
import_queue, keystore, backend, task_manager,
|
config, keystore, backend, transaction_pool, client, network, network_status_sinks,
|
||||||
|
system_rpc_tx,
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
Ok(task_manager)
|
Ok(task_manager)
|
||||||
@@ -609,8 +642,8 @@ where
|
|||||||
Extrinsic: RuntimeExtrinsic,
|
Extrinsic: RuntimeExtrinsic,
|
||||||
{
|
{
|
||||||
config.keystore = service::config::KeystoreConfig::InMemory;
|
config.keystore = service::config::KeystoreConfig::InMemory;
|
||||||
let (service::ServiceParams { client, backend, import_queue, task_manager, .. }, ..)
|
let service::PartialComponents { client, backend, import_queue, task_manager, .. }
|
||||||
= full_params::<Runtime, Dispatch, Extrinsic>(config)?;
|
= new_partial::<Runtime, Dispatch, Extrinsic>(&mut config)?;
|
||||||
Ok((client, backend, import_queue, task_manager))
|
Ok((client, backend, import_queue, task_manager))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,8 +28,8 @@ use sp_consensus::SelectChain;
|
|||||||
use sp_consensus_babe::BabeApi;
|
use sp_consensus_babe::BabeApi;
|
||||||
use sc_client_api::light::{Fetcher, RemoteBlockchain};
|
use sc_client_api::light::{Fetcher, RemoteBlockchain};
|
||||||
use sc_consensus_babe::Epoch;
|
use sc_consensus_babe::Epoch;
|
||||||
use sc_rpc::DenyUnsafe;
|
|
||||||
use sp_block_builder::BlockBuilder;
|
use sp_block_builder::BlockBuilder;
|
||||||
|
pub use sc_rpc::DenyUnsafe;
|
||||||
|
|
||||||
/// A type representing all RPC extensions.
|
/// A type representing all RPC extensions.
|
||||||
pub type RpcExtension = jsonrpc_core::IoHandler<sc_rpc::Metadata>;
|
pub type RpcExtension = jsonrpc_core::IoHandler<sc_rpc::Metadata>;
|
||||||
|
|||||||
+101
-69
@@ -33,7 +33,7 @@ use sp_trie::PrefixedMemoryDB;
|
|||||||
pub use service::{
|
pub use service::{
|
||||||
Role, PruningMode, TransactionPoolOptions, Error, RuntimeGenesis, RpcHandlers,
|
Role, PruningMode, TransactionPoolOptions, Error, RuntimeGenesis, RpcHandlers,
|
||||||
TFullClient, TLightClient, TFullBackend, TLightBackend, TFullCallExecutor, TLightCallExecutor,
|
TFullClient, TLightClient, TFullBackend, TLightBackend, TFullCallExecutor, TLightCallExecutor,
|
||||||
Configuration, ChainSpec, ServiceComponents, TaskManager,
|
Configuration, ChainSpec, TaskManager,
|
||||||
};
|
};
|
||||||
pub use service::config::{DatabaseConfig, PrometheusConfig};
|
pub use service::config::{DatabaseConfig, PrometheusConfig};
|
||||||
pub use sc_executor::NativeExecutionDispatch;
|
pub use sc_executor::NativeExecutionDispatch;
|
||||||
@@ -148,26 +148,25 @@ type LightClient<RuntimeApi, Executor> =
|
|||||||
service::TLightClientWithBackend<Block, RuntimeApi, Executor, LightBackend>;
|
service::TLightClientWithBackend<Block, RuntimeApi, Executor, LightBackend>;
|
||||||
|
|
||||||
#[cfg(feature = "full-node")]
|
#[cfg(feature = "full-node")]
|
||||||
pub fn full_params<RuntimeApi, Executor, Extrinsic>(mut config: Configuration, test: bool) -> Result<(
|
pub fn new_partial<RuntimeApi, Executor, Extrinsic>(config: &mut Configuration, test: bool) -> Result<
|
||||||
service::ServiceParams<
|
service::PartialComponents<
|
||||||
Block,
|
FullClient<RuntimeApi, Executor>, FullBackend, FullSelectChain,
|
||||||
FullClient<RuntimeApi, Executor>,
|
|
||||||
babe::BabeImportQueue<Block, FullClient<RuntimeApi, Executor>>,
|
babe::BabeImportQueue<Block, FullClient<RuntimeApi, Executor>>,
|
||||||
sc_transaction_pool::FullPool<Block, FullClient<RuntimeApi, Executor>>,
|
sc_transaction_pool::FullPool<Block, FullClient<RuntimeApi, Executor>>,
|
||||||
polkadot_rpc::RpcExtension,
|
(
|
||||||
FullBackend,
|
impl Fn(polkadot_rpc::DenyUnsafe) -> polkadot_rpc::RpcExtension,
|
||||||
|
(
|
||||||
|
babe::BabeBlockImport<
|
||||||
|
Block, FullClient<RuntimeApi, Executor>, FullGrandpaBlockImport<RuntimeApi, Executor>
|
||||||
|
>,
|
||||||
|
grandpa::LinkHalf<Block, FullClient<RuntimeApi, Executor>, FullSelectChain>,
|
||||||
|
babe::BabeLink<Block>
|
||||||
|
),
|
||||||
|
grandpa::SharedVoterState,
|
||||||
|
)
|
||||||
>,
|
>,
|
||||||
FullSelectChain,
|
Error
|
||||||
(
|
>
|
||||||
babe::BabeBlockImport<
|
|
||||||
Block, FullClient<RuntimeApi, Executor>, FullGrandpaBlockImport<RuntimeApi, Executor>
|
|
||||||
>,
|
|
||||||
grandpa::LinkHalf<Block, FullClient<RuntimeApi, Executor>, FullSelectChain>,
|
|
||||||
babe::BabeLink<Block>
|
|
||||||
),
|
|
||||||
inherents::InherentDataProviders,
|
|
||||||
grandpa::SharedVoterState,
|
|
||||||
), Error>
|
|
||||||
where
|
where
|
||||||
RuntimeApi: ConstructRuntimeApi<Block, FullClient<RuntimeApi, Executor>> + Send + Sync + 'static,
|
RuntimeApi: ConstructRuntimeApi<Block, FullClient<RuntimeApi, Executor>> + Send + Sync + 'static,
|
||||||
RuntimeApi::RuntimeApi:
|
RuntimeApi::RuntimeApi:
|
||||||
@@ -184,19 +183,14 @@ pub fn full_params<RuntimeApi, Executor, Extrinsic>(mut config: Configuration, t
|
|||||||
|
|
||||||
let inherent_data_providers = inherents::InherentDataProviders::new();
|
let inherent_data_providers = inherents::InherentDataProviders::new();
|
||||||
|
|
||||||
|
|
||||||
let (client, backend, keystore, task_manager) =
|
let (client, backend, keystore, task_manager) =
|
||||||
service::new_full_parts::<Block, RuntimeApi, Executor>(&config)?;
|
service::new_full_parts::<Block, RuntimeApi, Executor>(&config)?;
|
||||||
let client = Arc::new(client);
|
let client = Arc::new(client);
|
||||||
|
|
||||||
let select_chain = sc_consensus::LongestChain::new(backend.clone());
|
let select_chain = sc_consensus::LongestChain::new(backend.clone());
|
||||||
|
|
||||||
let pool_api = sc_transaction_pool::FullChainApi::new(
|
|
||||||
client.clone(), config.prometheus_registry(),
|
|
||||||
);
|
|
||||||
let transaction_pool = sc_transaction_pool::BasicPool::new_full(
|
let transaction_pool = sc_transaction_pool::BasicPool::new_full(
|
||||||
config.transaction_pool.clone(),
|
config.transaction_pool.clone(),
|
||||||
std::sync::Arc::new(pool_api),
|
|
||||||
config.prometheus_registry(),
|
config.prometheus_registry(),
|
||||||
task_manager.spawn_handle(),
|
task_manager.spawn_handle(),
|
||||||
client.clone(),
|
client.clone(),
|
||||||
@@ -251,7 +245,7 @@ pub fn full_params<RuntimeApi, Executor, Extrinsic>(mut config: Configuration, t
|
|||||||
let transaction_pool = transaction_pool.clone();
|
let transaction_pool = transaction_pool.clone();
|
||||||
let select_chain = select_chain.clone();
|
let select_chain = select_chain.clone();
|
||||||
|
|
||||||
Box::new(move |deny_unsafe| -> polkadot_rpc::RpcExtension {
|
move |deny_unsafe| -> polkadot_rpc::RpcExtension {
|
||||||
let deps = polkadot_rpc::FullDeps {
|
let deps = polkadot_rpc::FullDeps {
|
||||||
client: client.clone(),
|
client: client.clone(),
|
||||||
pool: transaction_pool.clone(),
|
pool: transaction_pool.clone(),
|
||||||
@@ -269,28 +263,19 @@ pub fn full_params<RuntimeApi, Executor, Extrinsic>(mut config: Configuration, t
|
|||||||
};
|
};
|
||||||
|
|
||||||
polkadot_rpc::create_full(deps)
|
polkadot_rpc::create_full(deps)
|
||||||
})
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let provider = client.clone() as Arc<dyn grandpa::StorageAndProofProvider<_, _>>;
|
Ok(service::PartialComponents {
|
||||||
let finality_proof_provider = Arc::new(GrandpaFinalityProofProvider::new(backend.clone(), provider)) as _;
|
client, backend, task_manager, keystore, select_chain, import_queue, transaction_pool,
|
||||||
|
inherent_data_providers,
|
||||||
let params = service::ServiceParams {
|
other: (rpc_extensions_builder, import_setup, rpc_setup)
|
||||||
config, backend, client, import_queue, keystore, task_manager, rpc_extensions_builder,
|
})
|
||||||
transaction_pool,
|
|
||||||
block_announce_validator_builder: None,
|
|
||||||
finality_proof_provider: Some(finality_proof_provider),
|
|
||||||
finality_proof_request_builder: None,
|
|
||||||
on_demand: None,
|
|
||||||
remote_blockchain: None,
|
|
||||||
};
|
|
||||||
|
|
||||||
Ok((params, select_chain, import_setup, inherent_data_providers, rpc_setup))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "full-node")]
|
#[cfg(feature = "full-node")]
|
||||||
pub fn new_full<RuntimeApi, Executor, Extrinsic>(
|
pub fn new_full<RuntimeApi, Executor, Extrinsic>(
|
||||||
config: Configuration,
|
mut config: Configuration,
|
||||||
collating_for: Option<(CollatorId, parachain::Id)>,
|
collating_for: Option<(CollatorId, parachain::Id)>,
|
||||||
max_block_data_size: Option<u64>,
|
max_block_data_size: Option<u64>,
|
||||||
authority_discovery_disabled: bool,
|
authority_discovery_disabled: bool,
|
||||||
@@ -327,18 +312,52 @@ pub fn new_full<RuntimeApi, Executor, Extrinsic>(
|
|||||||
let disable_grandpa = config.disable_grandpa;
|
let disable_grandpa = config.disable_grandpa;
|
||||||
let name = config.network.node_name.clone();
|
let name = config.network.node_name.clone();
|
||||||
|
|
||||||
let (params, select_chain, import_setup, inherent_data_providers, rpc_setup)
|
let service::PartialComponents {
|
||||||
= full_params::<RuntimeApi, Executor, Extrinsic>(config, test)?;
|
client, backend, mut task_manager, keystore, select_chain, import_queue, transaction_pool,
|
||||||
|
inherent_data_providers,
|
||||||
|
other: (rpc_extensions_builder, import_setup, rpc_setup)
|
||||||
|
} = new_partial::<RuntimeApi, Executor, Extrinsic>(&mut config, test)?;
|
||||||
|
|
||||||
let client = params.client.clone();
|
let prometheus_registry = config.prometheus_registry().cloned();
|
||||||
let keystore = params.keystore.clone();
|
|
||||||
let transaction_pool = params.transaction_pool.clone();
|
|
||||||
let prometheus_registry = params.config.prometheus_registry().cloned();
|
|
||||||
|
|
||||||
let ServiceComponents {
|
let finality_proof_provider =
|
||||||
network,
|
GrandpaFinalityProofProvider::new_for_service(backend.clone(), client.clone());
|
||||||
task_manager, telemetry_on_connect_sinks, rpc_handlers, ..
|
|
||||||
} = service::build(params)?;
|
let (network, network_status_sinks, system_rpc_tx) =
|
||||||
|
service::build_network(service::BuildNetworkParams {
|
||||||
|
config: &config,
|
||||||
|
client: client.clone(),
|
||||||
|
transaction_pool: transaction_pool.clone(),
|
||||||
|
spawn_handle: task_manager.spawn_handle(),
|
||||||
|
import_queue,
|
||||||
|
on_demand: None,
|
||||||
|
block_announce_validator_builder: None,
|
||||||
|
finality_proof_request_builder: None,
|
||||||
|
finality_proof_provider: Some(finality_proof_provider.clone()),
|
||||||
|
})?;
|
||||||
|
|
||||||
|
if config.offchain_worker.enabled {
|
||||||
|
service::build_offchain_workers(
|
||||||
|
&config, backend.clone(), task_manager.spawn_handle(), client.clone(), network.clone(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
let telemetry_connection_sinks = service::TelemetryConnectionSinks::default();
|
||||||
|
|
||||||
|
let rpc_handlers = service::spawn_tasks(service::SpawnTasksParams {
|
||||||
|
config,
|
||||||
|
backend: backend.clone(),
|
||||||
|
client: client.clone(),
|
||||||
|
keystore: keystore.clone(),
|
||||||
|
network: network.clone(),
|
||||||
|
rpc_extensions_builder: Box::new(rpc_extensions_builder),
|
||||||
|
transaction_pool: transaction_pool.clone(),
|
||||||
|
task_manager: &mut task_manager,
|
||||||
|
on_demand: None,
|
||||||
|
remote_blockchain: None,
|
||||||
|
telemetry_connection_sinks: telemetry_connection_sinks.clone(),
|
||||||
|
network_status_sinks, system_rpc_tx,
|
||||||
|
})?;
|
||||||
|
|
||||||
let (block_import, link_half, babe_link) = import_setup;
|
let (block_import, link_half, babe_link) = import_setup;
|
||||||
|
|
||||||
@@ -547,7 +566,7 @@ pub fn new_full<RuntimeApi, Executor, Extrinsic>(
|
|||||||
link: link_half,
|
link: link_half,
|
||||||
network: network.clone(),
|
network: network.clone(),
|
||||||
inherent_data_providers: inherent_data_providers.clone(),
|
inherent_data_providers: inherent_data_providers.clone(),
|
||||||
telemetry_on_connect: Some(telemetry_on_connect_sinks.on_connect_stream()),
|
telemetry_on_connect: Some(telemetry_connection_sinks.on_connect_stream()),
|
||||||
voting_rule,
|
voting_rule,
|
||||||
prometheus_registry: prometheus_registry.clone(),
|
prometheus_registry: prometheus_registry.clone(),
|
||||||
shared_voter_state,
|
shared_voter_state,
|
||||||
@@ -585,20 +604,17 @@ fn new_light<Runtime, Dispatch, Extrinsic>(mut config: Configuration) -> Result<
|
|||||||
*registry = Registry::new_custom(Some("polkadot".into()), None)?;
|
*registry = Registry::new_custom(Some("polkadot".into()), None)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
let (client, backend, keystore, task_manager, on_demand) =
|
let (client, backend, keystore, mut task_manager, on_demand) =
|
||||||
service::new_light_parts::<Block, Runtime, Dispatch>(&config)?;
|
service::new_light_parts::<Block, Runtime, Dispatch>(&config)?;
|
||||||
|
|
||||||
let select_chain = sc_consensus::LongestChain::new(backend.clone());
|
let select_chain = sc_consensus::LongestChain::new(backend.clone());
|
||||||
|
|
||||||
let pool_api = sc_transaction_pool::LightChainApi::new(
|
|
||||||
client.clone(),
|
|
||||||
on_demand.clone(),
|
|
||||||
);
|
|
||||||
let transaction_pool = Arc::new(sc_transaction_pool::BasicPool::new_light(
|
let transaction_pool = Arc::new(sc_transaction_pool::BasicPool::new_light(
|
||||||
config.transaction_pool.clone(),
|
config.transaction_pool.clone(),
|
||||||
Arc::new(pool_api),
|
|
||||||
config.prometheus_registry(),
|
config.prometheus_registry(),
|
||||||
task_manager.spawn_handle(),
|
task_manager.spawn_handle(),
|
||||||
|
client.clone(),
|
||||||
|
on_demand.clone(),
|
||||||
));
|
));
|
||||||
|
|
||||||
let grandpa_block_import = grandpa::light_block_import(
|
let grandpa_block_import = grandpa::light_block_import(
|
||||||
@@ -631,8 +647,27 @@ fn new_light<Runtime, Dispatch, Extrinsic>(mut config: Configuration) -> Result<
|
|||||||
config.prometheus_registry(),
|
config.prometheus_registry(),
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
let provider = client.clone() as Arc<dyn grandpa::StorageAndProofProvider<_, _>>;
|
let finality_proof_provider =
|
||||||
let finality_proof_provider = Arc::new(GrandpaFinalityProofProvider::new(backend.clone(), provider));
|
GrandpaFinalityProofProvider::new_for_service(backend.clone(), client.clone());
|
||||||
|
|
||||||
|
let (network, network_status_sinks, system_rpc_tx) =
|
||||||
|
service::build_network(service::BuildNetworkParams {
|
||||||
|
config: &config,
|
||||||
|
client: client.clone(),
|
||||||
|
transaction_pool: transaction_pool.clone(),
|
||||||
|
spawn_handle: task_manager.spawn_handle(),
|
||||||
|
import_queue,
|
||||||
|
on_demand: Some(on_demand.clone()),
|
||||||
|
block_announce_validator_builder: None,
|
||||||
|
finality_proof_request_builder: Some(finality_proof_request_builder),
|
||||||
|
finality_proof_provider: Some(finality_proof_provider),
|
||||||
|
})?;
|
||||||
|
|
||||||
|
if config.offchain_worker.enabled {
|
||||||
|
service::build_offchain_workers(
|
||||||
|
&config, backend.clone(), task_manager.spawn_handle(), client.clone(), network.clone(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
let light_deps = polkadot_rpc::LightDeps {
|
let light_deps = polkadot_rpc::LightDeps {
|
||||||
remote_blockchain: backend.remote_blockchain(),
|
remote_blockchain: backend.remote_blockchain(),
|
||||||
@@ -643,17 +678,14 @@ fn new_light<Runtime, Dispatch, Extrinsic>(mut config: Configuration) -> Result<
|
|||||||
|
|
||||||
let rpc_extensions = polkadot_rpc::create_light(light_deps);
|
let rpc_extensions = polkadot_rpc::create_light(light_deps);
|
||||||
|
|
||||||
let ServiceComponents { task_manager, rpc_handlers, .. } = service::build(service::ServiceParams {
|
let rpc_handlers = service::spawn_tasks(service::SpawnTasksParams {
|
||||||
config,
|
|
||||||
block_announce_validator_builder: None,
|
|
||||||
finality_proof_request_builder: Some(finality_proof_request_builder),
|
|
||||||
finality_proof_provider: Some(finality_proof_provider),
|
|
||||||
on_demand: Some(on_demand),
|
on_demand: Some(on_demand),
|
||||||
remote_blockchain: Some(backend.remote_blockchain()),
|
remote_blockchain: Some(backend.remote_blockchain()),
|
||||||
rpc_extensions_builder: Box::new(service::NoopRpcExtensionBuilder(rpc_extensions)),
|
rpc_extensions_builder: Box::new(service::NoopRpcExtensionBuilder(rpc_extensions)),
|
||||||
client: client.clone(),
|
task_manager: &mut task_manager,
|
||||||
transaction_pool: transaction_pool.clone(),
|
telemetry_connection_sinks: service::TelemetryConnectionSinks::default(),
|
||||||
import_queue, keystore, backend, task_manager,
|
config, keystore, backend, transaction_pool, client, network, network_status_sinks,
|
||||||
|
system_rpc_tx,
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
Ok((task_manager, rpc_handlers))
|
Ok((task_manager, rpc_handlers))
|
||||||
@@ -678,8 +710,8 @@ where
|
|||||||
Extrinsic: RuntimeExtrinsic,
|
Extrinsic: RuntimeExtrinsic,
|
||||||
{
|
{
|
||||||
config.keystore = service::config::KeystoreConfig::InMemory;
|
config.keystore = service::config::KeystoreConfig::InMemory;
|
||||||
let (service::ServiceParams { client, backend, import_queue, task_manager, .. }, ..)
|
let service::PartialComponents { client, backend, import_queue, task_manager, .. }
|
||||||
= full_params::<Runtime, Dispatch, Extrinsic>(config, false)?;
|
= new_partial::<Runtime, Dispatch, Extrinsic>(&mut config, false)?;
|
||||||
Ok((client, backend, import_queue, task_manager))
|
Ok((client, backend, import_queue, task_manager))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user