mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-22 20:45:40 +00:00
Default boot_nodes to local node in build-spec (#1181)
* Default to local bootnode with build-spec * Rexport libp2p stuff via network crate * Remove unused imports and fix where formatting * Remove spurious blank lines * Remove unnecessary else clause
This commit is contained in:
@@ -63,7 +63,10 @@ use service::{
|
|||||||
ServiceFactory, FactoryFullConfiguration, RuntimeGenesis,
|
ServiceFactory, FactoryFullConfiguration, RuntimeGenesis,
|
||||||
FactoryGenesis, PruningMode, ChainSpec,
|
FactoryGenesis, PruningMode, ChainSpec,
|
||||||
};
|
};
|
||||||
use network::{Protocol, config::NonReservedPeerMode};
|
use network::{
|
||||||
|
Protocol, config::{NetworkConfiguration, NonReservedPeerMode},
|
||||||
|
multiaddr,
|
||||||
|
};
|
||||||
use primitives::H256;
|
use primitives::H256;
|
||||||
|
|
||||||
use std::io::{Write, Read, stdin, stdout};
|
use std::io::{Write, Read, stdin, stdout};
|
||||||
@@ -325,7 +328,8 @@ where
|
|||||||
pub fn execute_default<'a, F, E>(
|
pub fn execute_default<'a, F, E>(
|
||||||
spec: ChainSpec<FactoryGenesis<F>>,
|
spec: ChainSpec<FactoryGenesis<F>>,
|
||||||
exit: E,
|
exit: E,
|
||||||
matches: &clap::ArgMatches<'a>
|
matches: &clap::ArgMatches<'a>,
|
||||||
|
config: &FactoryFullConfiguration<F>
|
||||||
) -> error::Result<Action<E>>
|
) -> error::Result<Action<E>>
|
||||||
where
|
where
|
||||||
E: IntoExit,
|
E: IntoExit,
|
||||||
@@ -339,7 +343,7 @@ where
|
|||||||
fdlimit::raise_fd_limit();
|
fdlimit::raise_fd_limit();
|
||||||
|
|
||||||
if let Some(matches) = matches.subcommand_matches("build-spec") {
|
if let Some(matches) = matches.subcommand_matches("build-spec") {
|
||||||
build_spec::<F>(matches, spec)?;
|
build_spec::<F>(matches, spec, config)?;
|
||||||
return Ok(Action::ExecutedInternally);
|
return Ok(Action::ExecutedInternally);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -366,11 +370,40 @@ where
|
|||||||
Ok(Action::RunService(exit))
|
Ok(Action::RunService(exit))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn build_spec<F>(matches: &clap::ArgMatches, spec: ChainSpec<FactoryGenesis<F>>) -> error::Result<()>
|
fn with_default_boot_node<F>(
|
||||||
where F: ServiceFactory,
|
spec: &ChainSpec<FactoryGenesis<F>>,
|
||||||
|
config: &NetworkConfiguration
|
||||||
|
) -> error::Result<ChainSpec<FactoryGenesis<F>>>
|
||||||
|
where
|
||||||
|
F: ServiceFactory
|
||||||
|
{
|
||||||
|
let mut spec = spec.clone();
|
||||||
|
if spec.boot_nodes().is_empty() {
|
||||||
|
let network_keys =
|
||||||
|
network::obtain_private_key(config)
|
||||||
|
.map_err(|err| format!("Error obtaining network key: {}", err))?;
|
||||||
|
let peer_id = network_keys.to_peer_id();
|
||||||
|
let addr = multiaddr![
|
||||||
|
Ip4([127, 0, 0, 1]),
|
||||||
|
Tcp(30333u16),
|
||||||
|
P2p(peer_id)
|
||||||
|
];
|
||||||
|
spec.add_boot_node(addr)
|
||||||
|
}
|
||||||
|
Ok(spec)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn build_spec<F>(
|
||||||
|
matches: &clap::ArgMatches,
|
||||||
|
spec: ChainSpec<FactoryGenesis<F>>,
|
||||||
|
config: &FactoryFullConfiguration<F>
|
||||||
|
) -> error::Result<()>
|
||||||
|
where
|
||||||
|
F: ServiceFactory
|
||||||
{
|
{
|
||||||
info!("Building chain spec");
|
info!("Building chain spec");
|
||||||
let raw = matches.is_present("raw");
|
let raw = matches.is_present("raw");
|
||||||
|
let spec = with_default_boot_node::<F>(&spec, &config.network)?;
|
||||||
let json = service::chain_ops::build_spec::<FactoryGenesis<F>>(spec, raw)?;
|
let json = service::chain_ops::build_spec::<FactoryGenesis<F>>(spec, raw)?;
|
||||||
print!("{}", json);
|
print!("{}", json);
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
@@ -53,7 +53,8 @@ mod transport;
|
|||||||
|
|
||||||
pub use custom_proto::RegisteredProtocol;
|
pub use custom_proto::RegisteredProtocol;
|
||||||
pub use error::{Error, ErrorKind, DisconnectReason};
|
pub use error::{Error, ErrorKind, DisconnectReason};
|
||||||
pub use libp2p::{Multiaddr, multiaddr::Protocol, PeerId};
|
pub use libp2p::{Multiaddr, multiaddr::{Protocol}, multiaddr, PeerId};
|
||||||
|
pub use secret::obtain_private_key;
|
||||||
pub use service_task::{start_service, Service, ServiceEvent};
|
pub use service_task::{start_service, Service, ServiceEvent};
|
||||||
pub use traits::{NetworkConfiguration, NodeIndex, NodeId, NonReservedPeerMode};
|
pub use traits::{NetworkConfiguration, NodeIndex, NodeId, NonReservedPeerMode};
|
||||||
pub use traits::{ProtocolId, Secret, Severity};
|
pub use traits::{ProtocolId, Secret, Severity};
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ use NetworkConfiguration;
|
|||||||
const SECRET_FILE: &str = "secret";
|
const SECRET_FILE: &str = "secret";
|
||||||
|
|
||||||
/// Obtains or generates the local private key using the configuration.
|
/// Obtains or generates the local private key using the configuration.
|
||||||
pub(crate) fn obtain_private_key(
|
pub fn obtain_private_key(
|
||||||
config: &NetworkConfiguration
|
config: &NetworkConfiguration
|
||||||
) -> Result<secio::SecioKeyPair, IoError> {
|
) -> Result<secio::SecioKeyPair, IoError> {
|
||||||
if let Some(ref secret) = config.use_secret {
|
if let Some(ref secret) = config.use_secret {
|
||||||
|
|||||||
@@ -68,7 +68,10 @@ pub use chain::Client as ClientHandle;
|
|||||||
pub use service::{Service, FetchFuture, TransactionPool, ManageNetwork, SyncProvider, ExHashT};
|
pub use service::{Service, FetchFuture, TransactionPool, ManageNetwork, SyncProvider, ExHashT};
|
||||||
pub use protocol::{ProtocolStatus, PeerInfo, Context};
|
pub use protocol::{ProtocolStatus, PeerInfo, Context};
|
||||||
pub use sync::{Status as SyncStatus, SyncState};
|
pub use sync::{Status as SyncStatus, SyncState};
|
||||||
pub use network_libp2p::{NodeIndex, ProtocolId, Severity, Protocol};
|
pub use network_libp2p::{
|
||||||
|
NodeIndex, ProtocolId, Severity, Protocol, Multiaddr,
|
||||||
|
obtain_private_key, multiaddr,
|
||||||
|
};
|
||||||
pub use message::{generic as generic_message, RequestId, Status as StatusMessage};
|
pub use message::{generic as generic_message, RequestId, Status as StatusMessage};
|
||||||
pub use error::Error;
|
pub use error::Error;
|
||||||
pub use on_demand::{OnDemand, OnDemandService, RemoteResponse};
|
pub use on_demand::{OnDemand, OnDemandService, RemoteResponse};
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ use primitives::storage::{StorageKey, StorageData};
|
|||||||
use runtime_primitives::{BuildStorage, StorageMap, ChildrenStorageMap};
|
use runtime_primitives::{BuildStorage, StorageMap, ChildrenStorageMap};
|
||||||
use serde_json as json;
|
use serde_json as json;
|
||||||
use components::RuntimeGenesis;
|
use components::RuntimeGenesis;
|
||||||
|
use network::Multiaddr;
|
||||||
|
|
||||||
enum GenesisSource<G> {
|
enum GenesisSource<G> {
|
||||||
File(PathBuf),
|
File(PathBuf),
|
||||||
@@ -139,6 +140,10 @@ impl<G: RuntimeGenesis> ChainSpec<G> {
|
|||||||
self.spec.properties.as_ref().unwrap_or(&json::map::Map::new()).clone()
|
self.spec.properties.as_ref().unwrap_or(&json::map::Map::new()).clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn add_boot_node(&mut self, addr: Multiaddr) {
|
||||||
|
self.spec.boot_nodes.push(addr.to_string())
|
||||||
|
}
|
||||||
|
|
||||||
/// Parse json content into a `ChainSpec`
|
/// Parse json content into a `ChainSpec`
|
||||||
pub fn from_embedded(json: &'static [u8]) -> Result<Self, String> {
|
pub fn from_embedded(json: &'static [u8]) -> Result<Self, String> {
|
||||||
let spec = json::from_slice(json).map_err(|e| format!("Error parsing spec file: {}", e))?;
|
let spec = json::from_slice(json).map_err(|e| format!("Error parsing spec file: {}", e))?;
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ pub fn run<I, T, E>(args: I, exit: E, version: cli::VersionInfo) -> error::Resul
|
|||||||
config.roles = ServiceRoles::AUTHORITY;
|
config.roles = ServiceRoles::AUTHORITY;
|
||||||
}
|
}
|
||||||
|
|
||||||
match cli::execute_default::<service::Factory, _>(spec, exit, &matches)? {
|
match cli::execute_default::<service::Factory, _>(spec, exit, &matches, &config)? {
|
||||||
cli::Action::ExecutedInternally => (),
|
cli::Action::ExecutedInternally => (),
|
||||||
cli::Action::RunService(exit) => {
|
cli::Action::RunService(exit) => {
|
||||||
info!("Substrate Node");
|
info!("Substrate Node");
|
||||||
|
|||||||
Reference in New Issue
Block a user