mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-01 18:17:56 +00:00
Do not require the collator key to be passed (#459)
This commit is contained in:
+51
-25
@@ -34,17 +34,30 @@ use sp_consensus::{
|
||||
import_queue::{ImportQueue, IncomingBlock, Link, Origin},
|
||||
BlockImport, BlockOrigin,
|
||||
};
|
||||
use sp_core::traits::SpawnNamed;
|
||||
use sp_core::{traits::SpawnNamed, Pair};
|
||||
use sp_runtime::{
|
||||
traits::{BlakeTwo256, Block as BlockT, NumberFor},
|
||||
Justifications,
|
||||
};
|
||||
use std::{marker::PhantomData, sync::Arc};
|
||||
use std::{marker::PhantomData, ops::Deref, sync::Arc};
|
||||
|
||||
pub mod genesis;
|
||||
|
||||
/// Relay chain full node handles.
|
||||
type RFullNode<C> = polkadot_service::NewFull<C>;
|
||||
/// The relay chain full node handle.
|
||||
pub struct RFullNode<C> {
|
||||
/// The relay chain full node handles.
|
||||
pub relay_chain_full_node: polkadot_service::NewFull<C>,
|
||||
/// The collator key used by the node.
|
||||
pub collator_key: CollatorPair,
|
||||
}
|
||||
|
||||
impl<C> Deref for RFullNode<C> {
|
||||
type Target = polkadot_service::NewFull<C>;
|
||||
|
||||
fn deref(&self) -> &Self::Target {
|
||||
&self.relay_chain_full_node
|
||||
}
|
||||
}
|
||||
|
||||
/// Parameters given to [`start_collator`].
|
||||
pub struct StartCollatorParams<'a, Block: BlockT, BS, Client, Spawner, RClient, IQ> {
|
||||
@@ -53,7 +66,6 @@ pub struct StartCollatorParams<'a, Block: BlockT, BS, Client, Spawner, RClient,
|
||||
pub announce_block: Arc<dyn Fn(Block::Hash, Option<Vec<u8>>) + Send + Sync>,
|
||||
pub spawner: Spawner,
|
||||
pub para_id: ParaId,
|
||||
pub collator_key: CollatorPair,
|
||||
pub relay_chain_full_node: RFullNode<RClient>,
|
||||
pub task_manager: &'a mut TaskManager,
|
||||
pub parachain_consensus: Box<dyn ParachainConsensus<Block>>,
|
||||
@@ -72,7 +84,6 @@ pub async fn start_collator<'a, Block, BS, Client, Backend, Spawner, RClient, IQ
|
||||
announce_block,
|
||||
spawner,
|
||||
para_id,
|
||||
collator_key,
|
||||
task_manager,
|
||||
relay_chain_full_node,
|
||||
parachain_consensus,
|
||||
@@ -106,17 +117,19 @@ where
|
||||
_phantom: PhantomData,
|
||||
});
|
||||
|
||||
relay_chain_full_node.client.execute_with(StartPoVRecovery {
|
||||
para_id,
|
||||
client: client.clone(),
|
||||
import_queue,
|
||||
task_manager,
|
||||
overseer_handler: relay_chain_full_node
|
||||
.overseer_handler
|
||||
.clone()
|
||||
.ok_or_else(|| "Polkadot full node did not provided an `OverseerHandler`!")?,
|
||||
_phantom: PhantomData,
|
||||
})?;
|
||||
relay_chain_full_node
|
||||
.client
|
||||
.execute_with(StartPoVRecovery {
|
||||
para_id,
|
||||
client: client.clone(),
|
||||
import_queue,
|
||||
task_manager,
|
||||
overseer_handler: relay_chain_full_node
|
||||
.overseer_handler
|
||||
.clone()
|
||||
.ok_or_else(|| "Polkadot full node did not provided an `OverseerHandler`!")?,
|
||||
_phantom: PhantomData,
|
||||
})?;
|
||||
|
||||
cumulus_client_collator::start_collator(cumulus_client_collator::StartCollatorParams {
|
||||
runtime_api: client.clone(),
|
||||
@@ -124,15 +137,16 @@ where
|
||||
announce_block,
|
||||
overseer_handler: relay_chain_full_node
|
||||
.overseer_handler
|
||||
.clone()
|
||||
.ok_or_else(|| "Polkadot full node did not provided an `OverseerHandler`!")?,
|
||||
spawner,
|
||||
para_id,
|
||||
key: collator_key,
|
||||
key: relay_chain_full_node.collator_key.clone(),
|
||||
parachain_consensus,
|
||||
})
|
||||
.await;
|
||||
|
||||
task_manager.add_child(relay_chain_full_node.task_manager);
|
||||
task_manager.add_child(relay_chain_full_node.relay_chain_full_node.task_manager);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -180,7 +194,7 @@ where
|
||||
_phantom: PhantomData,
|
||||
});
|
||||
|
||||
task_manager.add_child(relay_chain_full_node.task_manager);
|
||||
task_manager.add_child(relay_chain_full_node.relay_chain_full_node.task_manager);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
@@ -234,12 +248,17 @@ struct StartPoVRecovery<'a, Block: BlockT, Client, IQ> {
|
||||
para_id: ParaId,
|
||||
client: Arc<Client>,
|
||||
task_manager: &'a mut TaskManager,
|
||||
|
||||
overseer_handler: OverseerHandler,
|
||||
import_queue: IQ,
|
||||
|
||||
|
||||
_phantom: PhantomData<Block>,
|
||||
}
|
||||
|
||||
|
||||
impl<'a, Block, Client, IQ> polkadot_service::ExecuteWithClient for StartPoVRecovery<'a, Block, Client, IQ>
|
||||
impl<'a, Block, Client, IQ> polkadot_service::ExecuteWithClient
|
||||
for StartPoVRecovery<'a, Block, Client, IQ>
|
||||
where
|
||||
Block: BlockT,
|
||||
Client: UsageProvider<Block>
|
||||
@@ -291,7 +310,6 @@ pub fn prepare_node_config(mut parachain_config: Configuration) -> Configuration
|
||||
#[sc_tracing::logging::prefix_logs_with("Relaychain")]
|
||||
pub fn build_polkadot_full_node(
|
||||
config: Configuration,
|
||||
collator_pair: CollatorPair,
|
||||
telemetry_worker_handle: Option<TelemetryWorkerHandle>,
|
||||
) -> Result<RFullNode<PClient>, polkadot_service::Error> {
|
||||
let is_light = matches!(config.role, Role::Light);
|
||||
@@ -300,14 +318,22 @@ pub fn build_polkadot_full_node(
|
||||
"Light client not supported.".into(),
|
||||
))
|
||||
} else {
|
||||
polkadot_service::build_full(
|
||||
let collator_key = CollatorPair::generate().0;
|
||||
|
||||
let relay_chain_full_node = polkadot_service::build_full(
|
||||
config,
|
||||
polkadot_service::IsCollator::Yes(collator_pair),
|
||||
polkadot_service::IsCollator::Yes(collator_key.clone()),
|
||||
None,
|
||||
true,
|
||||
None,
|
||||
telemetry_worker_handle,
|
||||
)
|
||||
)?;
|
||||
|
||||
Ok(RFullNode {
|
||||
relay_chain_full_node,
|
||||
collator_key,
|
||||
})
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user