Add new RPC method to get the chain type (#5576)

* Add new RPC method to get the chain type

This adds a new RPC method to get the chain type of the running chain.
The chain type needs to be specified in the chain spec. This should make
it easier for tools/UI to display extra information without needing to
rely on parsing the chain name.

* Update client/rpc-api/src/system/mod.rs

Co-Authored-By: Tomasz Drwięga <tomusdrw@users.noreply.github.com>

* Primitive crate

* Feedback

Co-authored-by: Tomasz Drwięga <tomusdrw@users.noreply.github.com>
This commit is contained in:
Bastian Köcher
2020-04-08 20:41:51 +02:00
committed by GitHub
parent 1d2cbfbdf9
commit 7cdfaff12b
19 changed files with 135 additions and 26 deletions
+1
View File
@@ -21,6 +21,7 @@ parking_lot = "0.10.0"
sp-core = { version = "2.0.0-alpha.5", path = "../../primitives/core" }
sp-version = { version = "2.0.0-alpha.5", path = "../../primitives/version" }
sp-runtime = { path = "../../primitives/runtime" , version = "2.0.0-alpha.5"}
sp-chain-spec = { path = "../../primitives/chain-spec" , version = "2.0.0-alpha.5"}
serde = { version = "1.0.101", features = ["derive"] }
serde_json = "1.0.41"
sp-transaction-pool = { version = "2.0.0-alpha.5", path = "../../primitives/transaction-pool" }
@@ -18,10 +18,7 @@
use std::fmt;
use serde::{Serialize, Deserialize};
use serde_json::{Value, map::Map};
/// Node properties
pub type Properties = Map<String, Value>;
use sp_chain_spec::{Properties, ChainType};
/// Running node's static details.
#[derive(Clone, Debug)]
@@ -34,6 +31,8 @@ pub struct SystemInfo {
pub chain_name: String,
/// A custom set of properties defined in the chain spec.
pub properties: Properties,
/// The type of this chain.
pub chain_type: ChainType,
}
/// Health struct returned by the RPC
+7 -3
View File
@@ -25,7 +25,7 @@ use futures::{future::BoxFuture, compat::Compat};
use self::error::Result as SystemResult;
pub use self::helpers::{Properties, SystemInfo, Health, PeerInfo, NodeRole};
pub use self::helpers::{SystemInfo, Health, PeerInfo, NodeRole};
pub use self::gen_client::Client as SystemClient;
/// Substrate system RPC API
@@ -39,13 +39,17 @@ pub trait SystemApi<Hash, Number> {
#[rpc(name = "system_version")]
fn system_version(&self) -> SystemResult<String>;
/// Get the chain's type. Given as a string identifier.
/// Get the chain's name. Given as a string identifier.
#[rpc(name = "system_chain")]
fn system_chain(&self) -> SystemResult<String>;
/// Get the chain's type.
#[rpc(name = "system_chainType")]
fn system_type(&self) -> SystemResult<sp_chain_spec::ChainType>;
/// Get a custom set of properties as a JSON object, defined in the chain spec.
#[rpc(name = "system_properties")]
fn system_properties(&self) -> SystemResult<Properties>;
fn system_properties(&self) -> SystemResult<sp_chain_spec::Properties>;
/// Return health status of the node.
///