From 49e40a73d1cdc144471fe22db1c7b05456bb6505 Mon Sep 17 00:00:00 2001 From: Alan WANG Date: Thu, 22 Jul 2021 15:02:59 +0800 Subject: [PATCH 1/6] Add ss58 address format properties --- Cargo.lock | 3 +++ node/parallel/Cargo.toml | 5 +++-- node/parallel/src/chain_spec/heiko.rs | 9 +++++---- node/parallel/src/chain_spec/mod.rs | 15 +++++++++++++- node/parallel/src/chain_spec/parallel.rs | 14 +++++++------ primitives/src/lib.rs | 2 ++ primitives/src/network.rs | 25 ++++++++++++++++++++++++ 7 files changed, 60 insertions(+), 13 deletions(-) create mode 100644 primitives/src/network.rs diff --git a/Cargo.lock b/Cargo.lock index cb1e2c80e..88a4a73a4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,7 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + [[package]] name = "Inflector" version = "0.11.4" @@ -5935,6 +5937,7 @@ dependencies = [ "sc-tracing", "sc-transaction-pool", "serde", + "serde_json", "sp-api", "sp-block-builder", "sp-blockchain", diff --git a/node/parallel/Cargo.toml b/node/parallel/Cargo.toml index 29c3a2e92..733413c2f 100644 --- a/node/parallel/Cargo.toml +++ b/node/parallel/Cargo.toml @@ -45,8 +45,9 @@ sc-transaction-pool = { version = '3.0.0', git = 'https://github.com/paritytech/ frame-system-rpc-runtime-api = { git = 'https://github.com/paritytech/substrate.git', version = '3.0.0', branch = 'polkadot-v0.9.8' } -serde = { version = '1.0.119', features = ['derive'] } -structopt = '0.3.8' +serde = { version = '1.0.119', features = ['derive'] } +serde_json = '1.0' +structopt = '0.3.8' orml-oracle-rpc = { git = 'https://github.com/open-web3-stack/open-runtime-module-library.git', default-features = false } substrate-frame-rpc-system = { version = '3.0.0', git = 'https://github.com/paritytech/substrate.git', branch = 'polkadot-v0.9.8' } diff --git a/node/parallel/src/chain_spec/heiko.rs b/node/parallel/src/chain_spec/heiko.rs index 71412d173..e438fcd81 100644 --- a/node/parallel/src/chain_spec/heiko.rs +++ b/node/parallel/src/chain_spec/heiko.rs @@ -32,6 +32,7 @@ use sp_runtime::{ FixedPointNumber, }; +use super::as_properties; use crate::chain_spec::{get_account_id_from_seed, get_authority_keys_from_seed, Extensions}; /// Specialized `ChainSpec` for the normal parachain runtime. @@ -72,8 +73,8 @@ pub fn development_config(id: ParaId) -> ChainSpec { }, vec![], None, - None, - None, + Some("dev"), + Some(as_properties(network::NetworkType::Heiko)), Extensions { relay_chain: "rococo-local".into(), para_id: id.into(), @@ -156,8 +157,8 @@ pub fn local_testnet_config(id: ParaId) -> ChainSpec { }, vec![], None, - None, - None, + Some("dev"), + Some(as_properties(network::NetworkType::Heiko)), Extensions { relay_chain: "kusama".into(), para_id: id.into(), diff --git a/node/parallel/src/chain_spec/mod.rs b/node/parallel/src/chain_spec/mod.rs index 5a7c208c9..6930feeea 100644 --- a/node/parallel/src/chain_spec/mod.rs +++ b/node/parallel/src/chain_spec/mod.rs @@ -15,13 +15,26 @@ pub mod heiko; pub mod parallel; -use primitives::*; use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup}; +use sc_service::Properties; use serde::{Deserialize, Serialize}; +use serde_json::json; use sp_consensus_aura::sr25519::AuthorityId as AuraId; use sp_core::{sr25519, Pair, Public}; use sp_runtime::traits::IdentifyAccount; +use primitives::{network::NetworkType, *}; + +pub(crate) fn as_properties(network: NetworkType) -> Properties { + json!({ + "ss58Format": network.ss58_addr_format_id(), + "network": network, + }) + .as_object() + .expect("Network properties are valid; qed") + .to_owned() +} + /// Helper function to generate a crypto pair from seed pub fn get_from_seed(seed: &str) -> ::Public { TPublic::Pair::from_string(&format!("//{}", seed), None) diff --git a/node/parallel/src/chain_spec/parallel.rs b/node/parallel/src/chain_spec/parallel.rs index fe5a89a29..ad04ee32c 100644 --- a/node/parallel/src/chain_spec/parallel.rs +++ b/node/parallel/src/chain_spec/parallel.rs @@ -21,7 +21,7 @@ use parallel_runtime::{ LoansConfig, OracleMembershipConfig, ParachainInfoConfig, SessionConfig, SudoConfig, SystemConfig, TechnicalCommitteeConfig, TokensConfig, WASM_BINARY, }; -use primitives::*; +use primitives::{network::NetworkType, *}; use sc_service::ChainType; use sp_consensus_aura::sr25519::AuthorityId as AuraId; use sp_core::crypto::UncheckedInto; @@ -31,7 +31,9 @@ use sp_runtime::{ FixedPointNumber, }; -use crate::chain_spec::{get_account_id_from_seed, get_authority_keys_from_seed, Extensions}; +use crate::chain_spec::{ + as_properties, get_account_id_from_seed, get_authority_keys_from_seed, Extensions, +}; /// Specialized `ChainSpec` for the normal parachain runtime. pub type ChainSpec = sc_service::GenericChainSpec; @@ -71,8 +73,8 @@ pub fn development_config(id: ParaId) -> ChainSpec { }, vec![], None, - None, - None, + Some("dev"), + Some(as_properties(NetworkType::Parallel)), Extensions { relay_chain: "rococo-local".into(), para_id: id.into(), @@ -155,8 +157,8 @@ pub fn local_testnet_config(id: ParaId) -> ChainSpec { }, vec![], None, - None, - None, + Some("dev"), + Some(as_properties(NetworkType::Parallel)), Extensions { relay_chain: "polkadot".into(), para_id: id.into(), diff --git a/primitives/src/lib.rs b/primitives/src/lib.rs index 03625949c..b479f8720 100644 --- a/primitives/src/lib.rs +++ b/primitives/src/lib.rs @@ -16,6 +16,8 @@ #![allow(clippy::unnecessary_cast)] #![allow(clippy::upper_case_acronyms)] +pub mod network; + use codec::{Decode, Encode}; use sp_runtime::{ traits::{CheckedDiv, IdentifyAccount, Verify}, diff --git a/primitives/src/network.rs b/primitives/src/network.rs new file mode 100644 index 000000000..2bfd768c4 --- /dev/null +++ b/primitives/src/network.rs @@ -0,0 +1,25 @@ +use codec::{Decode, Encode}; +#[cfg(feature = "std")] +use serde::{Deserialize, Serialize}; +use sp_runtime::RuntimeDebug; + +// Network type for parallel. +#[derive(PartialEq, Eq, Clone, Copy, Encode, Decode, RuntimeDebug)] +#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] +pub enum NetworkType { + Parallel, + Heiko, +} + +impl NetworkType { + // Return ss58 address prefix from network type. + pub fn ss58_addr_format_id(&self) -> u8 { + match self { + NetworkType::Heiko => 110, + NetworkType::Parallel => 172, + } + } +} + +pub const HEIKO_PREFIX: u8 = 110; +pub const PARALLEL_PREFIX: u8 = 172; From 9f56631d19825b73578ff7a6da8e5960efb74630 Mon Sep 17 00:00:00 2001 From: Alan WANG Date: Thu, 22 Jul 2021 15:06:40 +0800 Subject: [PATCH 2/6] Sort import --- node/parallel/src/chain_spec/heiko.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/node/parallel/src/chain_spec/heiko.rs b/node/parallel/src/chain_spec/heiko.rs index e438fcd81..0fec02c02 100644 --- a/node/parallel/src/chain_spec/heiko.rs +++ b/node/parallel/src/chain_spec/heiko.rs @@ -32,8 +32,9 @@ use sp_runtime::{ FixedPointNumber, }; -use super::as_properties; -use crate::chain_spec::{get_account_id_from_seed, get_authority_keys_from_seed, Extensions}; +use crate::chain_spec::{ + as_properties, get_account_id_from_seed, get_authority_keys_from_seed, Extensions, +}; /// Specialized `ChainSpec` for the normal parachain runtime. pub type ChainSpec = sc_service::GenericChainSpec; From 0dc0a1ca3b96c34e9ea0939c3d45015905fba47f Mon Sep 17 00:00:00 2001 From: Alan WANG Date: Thu, 22 Jul 2021 18:22:29 +0800 Subject: [PATCH 3/6] Add token information in properties --- node/parallel/src/chain_spec/mod.rs | 7 ++++++- primitives/src/network.rs | 16 ++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/node/parallel/src/chain_spec/mod.rs b/node/parallel/src/chain_spec/mod.rs index 6930feeea..0fa600fdc 100644 --- a/node/parallel/src/chain_spec/mod.rs +++ b/node/parallel/src/chain_spec/mod.rs @@ -25,10 +25,15 @@ use sp_runtime::traits::IdentifyAccount; use primitives::{network::NetworkType, *}; +/// Generate chain properties for network. +/// +/// For fields definition, see https://github.com/polkadot-js/apps/blob/bd78840d2142df121d182e8700b20308880dde0a/packages/react-api/src/Api.tsx#L115 pub(crate) fn as_properties(network: NetworkType) -> Properties { + let (symbol, decimal) = network.token_info(); json!({ "ss58Format": network.ss58_addr_format_id(), - "network": network, + "tokenSymbol": symbol, + "tokenDecimals": decimal, }) .as_object() .expect("Network properties are valid; qed") diff --git a/primitives/src/network.rs b/primitives/src/network.rs index 2bfd768c4..0e37585a1 100644 --- a/primitives/src/network.rs +++ b/primitives/src/network.rs @@ -3,7 +3,7 @@ use codec::{Decode, Encode}; use serde::{Deserialize, Serialize}; use sp_runtime::RuntimeDebug; -// Network type for parallel. +/// Network type for parallel. #[derive(PartialEq, Eq, Clone, Copy, Encode, Decode, RuntimeDebug)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub enum NetworkType { @@ -12,14 +12,26 @@ pub enum NetworkType { } impl NetworkType { - // Return ss58 address prefix from network type. + /// Return ss58 address prefix from network type. pub fn ss58_addr_format_id(&self) -> u8 { match self { NetworkType::Heiko => 110, NetworkType::Parallel => 172, } } + + /// Return (token_symbol, token_decimal) of this network. + pub fn token_info(&self) -> (&str, u8) { + match self { + NetworkType::Heiko => (HEIKO_TOKEN, 12), + NetworkType::Parallel => (PARALLEL_TOKEN, 12), + } + } } pub const HEIKO_PREFIX: u8 = 110; pub const PARALLEL_PREFIX: u8 = 172; +/// Token symbol of heiko network. +pub const HEIKO_TOKEN: &str = "HKO"; +/// Token symbol of parallel network. +pub const PARALLEL_TOKEN: &str = "PARA"; From 754169baf7e2833bd6af964e2e9f3d7aefe7726a Mon Sep 17 00:00:00 2001 From: Alan WANG Date: Thu, 29 Jul 2021 20:07:55 +0800 Subject: [PATCH 4/6] Update chain spec --- node/parallel/src/chain_spec/heiko.rs | 4 ++-- node/parallel/src/chain_spec/mod.rs | 15 +++++++++++++-- node/parallel/src/chain_spec/parallel.rs | 4 ++-- primitives/src/network.rs | 15 +++------------ rust-toolchain | 1 + 5 files changed, 21 insertions(+), 18 deletions(-) create mode 100644 rust-toolchain diff --git a/node/parallel/src/chain_spec/heiko.rs b/node/parallel/src/chain_spec/heiko.rs index f13a506e5..6e1d67602 100644 --- a/node/parallel/src/chain_spec/heiko.rs +++ b/node/parallel/src/chain_spec/heiko.rs @@ -77,7 +77,7 @@ pub fn development_config(id: ParaId) -> ChainSpec { }, vec![], None, - Some("dev"), + Some("heiko-dev"), Some(as_properties(network::NetworkType::Heiko)), Extensions { relay_chain: "rococo-local".into(), @@ -170,7 +170,7 @@ pub fn local_testnet_config(id: ParaId) -> ChainSpec { }, vec![], None, - Some("dev"), + Some("heiko-local"), Some(as_properties(network::NetworkType::Heiko)), Extensions { relay_chain: "kusama".into(), diff --git a/node/parallel/src/chain_spec/mod.rs b/node/parallel/src/chain_spec/mod.rs index 0fa600fdc..85e4b965d 100644 --- a/node/parallel/src/chain_spec/mod.rs +++ b/node/parallel/src/chain_spec/mod.rs @@ -23,13 +23,16 @@ use sp_consensus_aura::sr25519::AuthorityId as AuraId; use sp_core::{sr25519, Pair, Public}; use sp_runtime::traits::IdentifyAccount; -use primitives::{network::NetworkType, *}; +use primitives::{ + network::{NetworkType, HEIKO_TOKEN, PARALLEL_TOKEN}, + *, +}; /// Generate chain properties for network. /// /// For fields definition, see https://github.com/polkadot-js/apps/blob/bd78840d2142df121d182e8700b20308880dde0a/packages/react-api/src/Api.tsx#L115 pub(crate) fn as_properties(network: NetworkType) -> Properties { - let (symbol, decimal) = network.token_info(); + let (symbol, decimal) = token_info(&network); json!({ "ss58Format": network.ss58_addr_format_id(), "tokenSymbol": symbol, @@ -40,6 +43,14 @@ pub(crate) fn as_properties(network: NetworkType) -> Properties { .to_owned() } +/// Return (token_symbol, token_decimal) of this network. +fn token_info(network: &NetworkType) -> (&str, u8) { + match network { + NetworkType::Heiko => (HEIKO_TOKEN, 12), + NetworkType::Parallel => (PARALLEL_TOKEN, 12), + } +} + /// Helper function to generate a crypto pair from seed pub fn get_from_seed(seed: &str) -> ::Public { TPublic::Pair::from_string(&format!("//{}", seed), None) diff --git a/node/parallel/src/chain_spec/parallel.rs b/node/parallel/src/chain_spec/parallel.rs index 95af8eb71..12a05a903 100644 --- a/node/parallel/src/chain_spec/parallel.rs +++ b/node/parallel/src/chain_spec/parallel.rs @@ -76,7 +76,7 @@ pub fn development_config(id: ParaId) -> ChainSpec { }, vec![], None, - Some("dev"), + Some("parallel-dev"), Some(as_properties(NetworkType::Parallel)), Extensions { relay_chain: "rococo-local".into(), @@ -169,7 +169,7 @@ pub fn local_testnet_config(id: ParaId) -> ChainSpec { }, vec![], None, - Some("dev"), + Some("parallel-local"), Some(as_properties(NetworkType::Parallel)), Extensions { relay_chain: "polkadot".into(), diff --git a/primitives/src/network.rs b/primitives/src/network.rs index 0e37585a1..355e758db 100644 --- a/primitives/src/network.rs +++ b/primitives/src/network.rs @@ -1,10 +1,9 @@ -use codec::{Decode, Encode}; #[cfg(feature = "std")] use serde::{Deserialize, Serialize}; use sp_runtime::RuntimeDebug; /// Network type for parallel. -#[derive(PartialEq, Eq, Clone, Copy, Encode, Decode, RuntimeDebug)] +#[derive(Clone, Copy, RuntimeDebug)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub enum NetworkType { Parallel, @@ -15,16 +14,8 @@ impl NetworkType { /// Return ss58 address prefix from network type. pub fn ss58_addr_format_id(&self) -> u8 { match self { - NetworkType::Heiko => 110, - NetworkType::Parallel => 172, - } - } - - /// Return (token_symbol, token_decimal) of this network. - pub fn token_info(&self) -> (&str, u8) { - match self { - NetworkType::Heiko => (HEIKO_TOKEN, 12), - NetworkType::Parallel => (PARALLEL_TOKEN, 12), + NetworkType::Heiko => HEIKO_PREFIX, + NetworkType::Parallel => PARALLEL_PREFIX, } } } diff --git a/rust-toolchain b/rust-toolchain new file mode 100644 index 000000000..bf867e0ae --- /dev/null +++ b/rust-toolchain @@ -0,0 +1 @@ +nightly From 043f720c32ec9cf39aaa68724ef9b54d21f82eba Mon Sep 17 00:00:00 2001 From: Alan WANG Date: Sun, 1 Aug 2021 20:29:59 +0800 Subject: [PATCH 5/6] Move constants to chain spec --- node/parallel/src/chain_spec/mod.rs | 10 ++++++---- primitives/src/network.rs | 4 ---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/node/parallel/src/chain_spec/mod.rs b/node/parallel/src/chain_spec/mod.rs index 85e4b965d..269e5a391 100644 --- a/node/parallel/src/chain_spec/mod.rs +++ b/node/parallel/src/chain_spec/mod.rs @@ -23,10 +23,12 @@ use sp_consensus_aura::sr25519::AuthorityId as AuraId; use sp_core::{sr25519, Pair, Public}; use sp_runtime::traits::IdentifyAccount; -use primitives::{ - network::{NetworkType, HEIKO_TOKEN, PARALLEL_TOKEN}, - *, -}; +use primitives::{network::NetworkType, *}; + +/// Token symbol of heiko network. +pub const HEIKO_TOKEN: &str = "HKO"; +/// Token symbol of parallel network. +pub const PARALLEL_TOKEN: &str = "PARA"; /// Generate chain properties for network. /// diff --git a/primitives/src/network.rs b/primitives/src/network.rs index 355e758db..552b3c3b2 100644 --- a/primitives/src/network.rs +++ b/primitives/src/network.rs @@ -22,7 +22,3 @@ impl NetworkType { pub const HEIKO_PREFIX: u8 = 110; pub const PARALLEL_PREFIX: u8 = 172; -/// Token symbol of heiko network. -pub const HEIKO_TOKEN: &str = "HKO"; -/// Token symbol of parallel network. -pub const PARALLEL_TOKEN: &str = "PARA"; From d48db88a217f716021d9359a53cd3f22219a82c4 Mon Sep 17 00:00:00 2001 From: Alan WANG Date: Mon, 2 Aug 2021 09:44:56 +0800 Subject: [PATCH 6/6] Remove rust-toolchain file --- rust-toolchain | 1 - 1 file changed, 1 deletion(-) delete mode 100644 rust-toolchain diff --git a/rust-toolchain b/rust-toolchain deleted file mode 100644 index bf867e0ae..000000000 --- a/rust-toolchain +++ /dev/null @@ -1 +0,0 @@ -nightly