diff --git a/substrate/core/network/src/service.rs b/substrate/core/network/src/service.rs index 81e79dbad9fdcead203c223a5897d1e7fa561e9a..ac6789f718c4b425ca4a8fc98350c1b027a6e375 100644 --- a/substrate/core/network/src/service.rs +++ b/substrate/core/network/src/service.rs @@ -20,7 +20,7 @@ use std::{io, thread}; use log::{warn, debug, error, trace}; use futures::{Async, Future, Stream, stream, sync::oneshot}; use parking_lot::Mutex; -use network_libp2p::{ProtocolId, PeerId, NetworkConfiguration, NodeIndex, ErrorKind, Severity}; +use network_libp2p::{ProtocolId, NetworkConfiguration, NodeIndex, ErrorKind, Severity}; use network_libp2p::{start_service, parse_str_addr, Service as NetworkService, ServiceEvent as NetworkServiceEvent}; use network_libp2p::{Protocol as Libp2pProtocol, RegisteredProtocol}; use consensus::import_queue::{ImportQueue, Link}; @@ -36,6 +36,8 @@ use crate::specialization::NetworkSpecialization; use tokio::prelude::task::AtomicTask; use tokio::runtime::Runtime; +pub use network_libp2p::PeerId; + /// Type that represents fetch completion future. pub type FetchFuture = oneshot::Receiver<Vec<u8>>; @@ -180,6 +182,11 @@ impl<B: BlockT + 'static, S: NetworkSpecialization<B>> Service<B, S> { self.network.lock().average_upload_per_sec() } + /// Returns the network identity of the node. + pub fn local_peer_id(&self) -> PeerId { + self.network.lock().peer_id().clone() + } + /// Called when a new block is imported by the client. pub fn on_block_imported(&self, hash: B::Hash, header: B::Header) { let _ = self diff --git a/substrate/core/service/src/lib.rs b/substrate/core/service/src/lib.rs index 6f7e5a5e9cafc54d4321940259bc50c147dc23b7..efd86a4c7915fb64f0ca6fc8715b7638b08cd14c 100644 --- a/substrate/core/service/src/lib.rs +++ b/substrate/core/service/src/lib.rs @@ -271,6 +271,7 @@ impl<Components: components::Components> Service<Components> { // Telemetry let telemetry = config.telemetry_url.clone().map(|url| { let is_authority = config.roles == Roles::AUTHORITY; + let network_id = network.local_peer_id().to_base58(); let pubkey = format!("{}", public_key); let name = config.name.clone(); let impl_name = config.impl_name.to_owned(); @@ -286,7 +287,8 @@ impl<Components: components::Components> Service<Components> { "config" => "", "chain" => chain_name.clone(), "pubkey" => &pubkey, - "authority" => is_authority + "authority" => is_authority, + "network_id" => network_id.clone() ); }), }))