From 8f43742c35011f65831d722ae6ec2f1dead34357 Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Fri, 10 Aug 2018 12:06:36 +0200 Subject: [PATCH] Mh public key for telemetry (#526) * Expose node public key to telemetry * unwrap to expect * Make sure all the zeros are there * Cleanup --- substrate/substrate/service/src/lib.rs | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/substrate/substrate/service/src/lib.rs b/substrate/substrate/service/src/lib.rs index 53fba5bcc0..9fcd157f73 100644 --- a/substrate/substrate/service/src/lib.rs +++ b/substrate/substrate/service/src/lib.rs @@ -57,6 +57,7 @@ pub mod chain_ops; use std::io; use std::net::SocketAddr; use std::sync::Arc; +use std::fmt::Write; use futures::prelude::*; use keystore::Store as Keystore; use client::BlockchainEvents; @@ -125,10 +126,17 @@ impl Service keystore.generate_from_seed(seed)?; } - if keystore.contents()?.is_empty() { - let key = keystore.generate("")?; - info!("Generated a new keypair: {:?}", key.public()); - } + // Keep the public key for telemetry + let public_key = match keystore.contents()?.get(0) { + Some(public_key) => public_key.clone(), + None => { + let key = keystore.generate("")?; + let public_key = key.public(); + info!("Generated a new keypair: {:?}", public_key); + + public_key + } + }; let (client, on_demand) = Components::build_client(&config, executor)?; let best_header = client.best_block_header()?; @@ -218,6 +226,12 @@ impl Service // Telemetry let telemetry = match config.telemetry_url { Some(url) => { + let mut pubkey = String::new(); + + for ch in public_key.as_slice() { + write!(pubkey, "{:02x}", ch).expect("Cannot fail on u8 slices; qed"); + } + let name = config.name.clone(); let impl_name = config.impl_name.to_owned(); let version = version.clone(); @@ -231,6 +245,7 @@ impl Service "version" => version.clone(), "config" => "", "chain" => chain_name.clone(), + "pubkey" => &pubkey, ); }), }))