diff --git a/substrate/client/service/src/builder.rs b/substrate/client/service/src/builder.rs index eebc825b21..1fbf301f5b 100644 --- a/substrate/client/service/src/builder.rs +++ b/substrate/client/service/src/builder.rs @@ -46,7 +46,7 @@ use sc_network::NetworkService; use parking_lot::{Mutex, RwLock}; use sp_runtime::generic::BlockId; use sp_runtime::traits::{ - Block as BlockT, NumberFor, SaturatedConversion, HashFor, + Block as BlockT, NumberFor, SaturatedConversion, HashFor, Zero, }; use sp_api::ProvideRuntimeApi; use sc_executor::{NativeExecutor, NativeExecutionDispatch, RuntimeInfo}; @@ -1070,8 +1070,17 @@ ServiceBuilder< // Telemetry let telemetry = config.telemetry_endpoints.clone().map(|endpoints| { + let genesis_hash = match client.block_hash(Zero::zero()) { + Ok(Some(hash)) => hash, + _ => Default::default(), + }; + let (telemetry, future) = build_telemetry( - &mut config, endpoints, telemetry_connection_sinks.clone(), network.clone() + &mut config, + endpoints, + telemetry_connection_sinks.clone(), + network.clone(), + genesis_hash, ); spawn_handle.spawn( @@ -1270,7 +1279,8 @@ fn build_telemetry( config: &mut Configuration, endpoints: sc_telemetry::TelemetryEndpoints, telemetry_connection_sinks: Arc>>>, - network: Arc::Hash>> + network: Arc::Hash>>, + genesis_hash: ::Hash, ) -> (sc_telemetry::Telemetry, Pin + Send>>) { let is_authority = config.role.is_authority(); let network_id = network.local_peer_id().to_base58(); @@ -1296,6 +1306,7 @@ fn build_telemetry( "version" => version, "config" => "", "chain" => chain_name.clone(), + "genesis_hash" => ?genesis_hash, "authority" => is_authority, "startup_time" => startup_time, "network_id" => network_id.clone()