Skip to content

Commit 272b5e0

Browse files
herryhoyrong
andauthored
Add token pha & more (#427)
* fix SS58prefix * add decimals presentation for different tokens * add support for pha * encapsulate properties object * resolve conflicts for bifrost-polkadot runtime * remove duplicate token properties in chainspec Co-authored-by: yrong <[email protected]>
1 parent e9c1a30 commit 272b5e0

File tree

11 files changed

+182
-40
lines changed

11 files changed

+182
-40
lines changed

node/primitives/src/currency.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,7 @@ create_currency_id! {
268268
ETH("Ethereum", 18) = 5,
269269
KAR("Karura", 12) = 6,
270270
ZLK("Zenlink Network Token", 18) = 7,
271+
PHA("Phala Native Token", 12) = 8,
271272
}
272273
}
273274

node/service/res/asgard.json

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,25 @@
1313
],
1414
"protocolId": "asgard",
1515
"properties": {
16-
"tokenDecimals": 12,
17-
"tokenSymbol": "ASG"
16+
"ss58Format": 6,
17+
"tokenDecimals": [
18+
12,
19+
12,
20+
10,
21+
12,
22+
12,
23+
18,
24+
12
25+
],
26+
"tokenSymbol": [
27+
"ASG",
28+
"KUSD",
29+
"DOT",
30+
"KSM",
31+
"KAR",
32+
"ZLK",
33+
"PHA"
34+
]
1835
},
1936
"relay_chain": "westend",
2037
"para_id": 2001,

node/service/res/bifrost-kusama.json

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,25 @@
1616
],
1717
"protocolId": "bifrost",
1818
"properties": {
19-
"tokenDecimals": 12,
20-
"tokenSymbol": "BNC"
19+
"ss58Format": 6,
20+
"tokenDecimals": [
21+
12,
22+
12,
23+
10,
24+
12,
25+
12,
26+
18,
27+
12
28+
],
29+
"tokenSymbol": [
30+
"BNC",
31+
"KUSD",
32+
"DOT",
33+
"KSM",
34+
"KAR",
35+
"ZLK",
36+
"PHA"
37+
]
2138
},
2239
"relay_chain": "kusama",
2340
"para_id": 2001,
@@ -52158,4 +52175,4 @@
5215852175
"childrenDefault": {}
5215952176
}
5216052177
}
52161-
}
52178+
}

node/service/res/bifrost-polkadot.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,13 @@
1111
],
1212
"protocolId": "bifrost_polkadot",
1313
"properties": {
14-
"tokenDecimals": 12,
15-
"tokenSymbol": "BNC"
14+
"ss58Format": 6,
15+
"tokenDecimals": [
16+
12
17+
],
18+
"tokenSymbol": [
19+
"BNC"
20+
]
1621
},
1722
"relay_chain": "polkadot",
1823
"para_id": 2001,

node/service/src/chain_spec/asgard.rs

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,16 @@
1919
use asgard_runtime::{
2020
constants::currency::DOLLARS, AccountId, AuraId, Balance, BalancesConfig, BancorConfig,
2121
BlockNumber, CollatorSelectionConfig, CouncilConfig, DemocracyConfig, GenesisConfig,
22-
IndicesConfig, MinterRewardConfig, ParachainInfoConfig, PolkadotXcmConfig, SessionConfig,
23-
SudoConfig, SystemConfig, TechnicalCommitteeConfig, TokensConfig, VestingConfig,
22+
IndicesConfig, MinterRewardConfig, ParachainInfoConfig, PolkadotXcmConfig, SS58Prefix,
23+
SessionConfig, SudoConfig, SystemConfig, TechnicalCommitteeConfig, TokensConfig, VestingConfig,
2424
VtokenMintConfig, WASM_BINARY,
2525
};
2626
use bifrost_runtime_common::constants::time::*;
2727
use cumulus_primitives_core::ParaId;
2828
use frame_benchmarking::{account, whitelisted_caller};
2929
use hex_literal::hex;
30-
use node_primitives::{CurrencyId, TokenSymbol};
30+
use node_primitives::{CurrencyId, TokenInfo, TokenSymbol};
31+
use sc_chain_spec::Properties;
3132
use sc_service::ChainType;
3233
use sc_telemetry::TelemetryEndpoints;
3334
use sp_core::{crypto::UncheckedInto, sr25519};
@@ -43,6 +44,35 @@ pub type ChainSpec = sc_service::GenericChainSpec<GenesisConfig, RelayExtensions
4344

4445
const ENDOWMENT: u128 = 1_000_000 * DOLLARS;
4546

47+
fn asgard_properties() -> Properties {
48+
let mut properties = sc_chain_spec::Properties::new();
49+
let mut token_symbol: Vec<String> = vec![];
50+
let mut token_decimals: Vec<u32> = vec![];
51+
[
52+
// native token
53+
CurrencyId::Native(TokenSymbol::ASG),
54+
// stable token
55+
CurrencyId::Stable(TokenSymbol::KUSD),
56+
// token
57+
CurrencyId::Token(TokenSymbol::DOT),
58+
CurrencyId::Token(TokenSymbol::KSM),
59+
CurrencyId::Token(TokenSymbol::KAR),
60+
CurrencyId::Token(TokenSymbol::ZLK),
61+
CurrencyId::Token(TokenSymbol::PHA),
62+
]
63+
.iter()
64+
.for_each(|token| {
65+
token_symbol.push(token.symbol().to_string());
66+
token_decimals.push(token.decimals() as u32);
67+
});
68+
69+
properties.insert("tokenSymbol".into(), token_symbol.into());
70+
properties.insert("tokenDecimals".into(), token_decimals.into());
71+
properties.insert("ss58Format".into(), SS58Prefix::get().into());
72+
73+
properties
74+
}
75+
4676
/// Helper function to create asgard GenesisConfig for testing
4777
pub fn asgard_genesis(
4878
invulnerables: Vec<(AccountId, AuraId)>,
@@ -177,7 +207,7 @@ pub fn development_config(id: ParaId) -> Result<ChainSpec, String> {
177207
vec![],
178208
None,
179209
Some(DEFAULT_PROTOCOL_ID),
180-
None,
210+
Some(asgard_properties()),
181211
RelayExtensions { relay_chain: "westend-dev".into(), para_id: id.into() },
182212
))
183213
}
@@ -256,16 +286,12 @@ pub fn local_testnet_config(id: ParaId) -> Result<ChainSpec, String> {
256286
vec![],
257287
None,
258288
Some(DEFAULT_PROTOCOL_ID),
259-
None,
289+
Some(asgard_properties()),
260290
RelayExtensions { relay_chain: "westend-local".into(), para_id: id.into() },
261291
))
262292
}
263293

264294
pub fn chainspec_config(id: ParaId) -> ChainSpec {
265-
let mut properties = sc_chain_spec::Properties::new();
266-
properties.insert("tokenSymbol".into(), "ASG".into());
267-
properties.insert("tokenDecimals".into(), 12.into());
268-
269295
ChainSpec::from_genesis(
270296
"Bifrost Asgard CC4",
271297
"asgard_testnet",
@@ -274,7 +300,7 @@ pub fn chainspec_config(id: ParaId) -> ChainSpec {
274300
vec![],
275301
TelemetryEndpoints::new(vec![(TELEMETRY_URL.into(), 0)]).ok(),
276302
Some(DEFAULT_PROTOCOL_ID),
277-
Some(properties),
303+
Some(asgard_properties()),
278304
RelayExtensions { relay_chain: "westend".into(), para_id: id.into() },
279305
)
280306
}

node/service/src/chain_spec/bifrost_kusama.rs

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,15 @@ use std::{
2424
use bifrost_kusama_runtime::{
2525
AccountId, AuraId, Balance, BalancesConfig, BlockNumber, CollatorSelectionConfig,
2626
CouncilConfig, CouncilMembershipConfig, DemocracyConfig, GenesisConfig, IndicesConfig,
27-
ParachainInfoConfig, PolkadotXcmConfig, SessionConfig, SystemConfig, TechnicalCommitteeConfig,
28-
TechnicalMembershipConfig, TokensConfig, VestingConfig, WASM_BINARY,
27+
ParachainInfoConfig, PolkadotXcmConfig, SS58Prefix, SessionConfig, SystemConfig,
28+
TechnicalCommitteeConfig, TechnicalMembershipConfig, TokensConfig, VestingConfig, WASM_BINARY,
2929
};
3030
use bifrost_runtime_common::dollar;
3131
use cumulus_primitives_core::ParaId;
3232
use frame_benchmarking::{account, whitelisted_caller};
3333
use hex_literal::hex;
34-
use node_primitives::{CurrencyId, TokenSymbol};
34+
use node_primitives::{CurrencyId, TokenInfo, TokenSymbol};
35+
use sc_chain_spec::Properties;
3536
use sc_service::ChainType;
3637
use sc_telemetry::TelemetryEndpoints;
3738
use serde::de::DeserializeOwned;
@@ -52,6 +53,35 @@ pub fn ENDOWMENT() -> u128 {
5253
1_000_000 * dollar(CurrencyId::Native(TokenSymbol::BNC))
5354
}
5455

56+
fn bifrost_kusama_properties() -> Properties {
57+
let mut properties = sc_chain_spec::Properties::new();
58+
let mut token_symbol: Vec<String> = vec![];
59+
let mut token_decimals: Vec<u32> = vec![];
60+
[
61+
// native token
62+
CurrencyId::Native(TokenSymbol::BNC),
63+
// stable token
64+
CurrencyId::Stable(TokenSymbol::KUSD),
65+
// token
66+
CurrencyId::Token(TokenSymbol::DOT),
67+
CurrencyId::Token(TokenSymbol::KSM),
68+
CurrencyId::Token(TokenSymbol::KAR),
69+
CurrencyId::Token(TokenSymbol::ZLK),
70+
CurrencyId::Token(TokenSymbol::PHA),
71+
]
72+
.iter()
73+
.for_each(|token| {
74+
token_symbol.push(token.symbol().to_string());
75+
token_decimals.push(token.decimals() as u32);
76+
});
77+
78+
properties.insert("tokenSymbol".into(), token_symbol.into());
79+
properties.insert("tokenDecimals".into(), token_decimals.into());
80+
properties.insert("ss58Format".into(), SS58Prefix::get().into());
81+
82+
properties
83+
}
84+
5585
pub fn bifrost_genesis(
5686
invulnerables: Vec<(AccountId, AuraId)>,
5787
balances: Vec<(AccountId, Balance)>,
@@ -162,7 +192,7 @@ pub fn development_config(id: ParaId) -> Result<ChainSpec, String> {
162192
vec![],
163193
None,
164194
Some(DEFAULT_PROTOCOL_ID),
165-
None,
195+
Some(bifrost_kusama_properties()),
166196
RelayExtensions { relay_chain: "kusama-dev".into(), para_id: id.into() },
167197
))
168198
}
@@ -242,16 +272,12 @@ pub fn local_testnet_config(id: ParaId) -> Result<ChainSpec, String> {
242272
vec![],
243273
None,
244274
Some(DEFAULT_PROTOCOL_ID),
245-
None,
275+
Some(bifrost_kusama_properties()),
246276
RelayExtensions { relay_chain: "kusama-local".into(), para_id: id.into() },
247277
))
248278
}
249279

250280
pub fn chainspec_config(id: ParaId) -> ChainSpec {
251-
let mut properties = sc_chain_spec::Properties::new();
252-
properties.insert("tokenSymbol".into(), "BNC".into());
253-
properties.insert("tokenDecimals".into(), 12.into());
254-
255281
ChainSpec::from_genesis(
256282
"Bifrost",
257283
"bifrost",
@@ -260,7 +286,7 @@ pub fn chainspec_config(id: ParaId) -> ChainSpec {
260286
vec![],
261287
TelemetryEndpoints::new(vec![(TELEMETRY_URL.into(), 0)]).ok(),
262288
Some(DEFAULT_PROTOCOL_ID),
263-
Some(properties),
289+
Some(bifrost_kusama_properties()),
264290
RelayExtensions { relay_chain: "kusama".into(), para_id: id.into() },
265291
)
266292
}

node/service/src/chain_spec/bifrost_polkadot.rs

Lines changed: 36 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,14 @@
1919
use bifrost_polkadot_runtime::{
2020
constants::currency::DOLLARS, AccountId, AuraId, Balance, BalancesConfig, BlockNumber,
2121
CollatorSelectionConfig, GenesisConfig, IndicesConfig, ParachainInfoConfig, PolkadotXcmConfig,
22-
SessionConfig, SudoConfig, SystemConfig, VestingConfig, WASM_BINARY,
22+
SS58Prefix, SessionConfig, SudoConfig, SystemConfig, VestingConfig, WASM_BINARY,
2323
};
24+
use bifrost_runtime_common::dollar;
2425
use cumulus_primitives_core::ParaId;
2526
use frame_benchmarking::{account, whitelisted_caller};
2627
use hex_literal::hex;
28+
use node_primitives::{CurrencyId, TokenInfo, TokenSymbol};
29+
use sc_chain_spec::Properties;
2730
use sc_service::ChainType;
2831
use sc_telemetry::TelemetryEndpoints;
2932
use sp_core::{crypto::UncheckedInto, sr25519};
@@ -37,7 +40,31 @@ const DEFAULT_PROTOCOL_ID: &str = "bifrost_polkadot";
3740
/// Specialized `ChainSpec` for the bifrost-polkadot runtime.
3841
pub type ChainSpec = sc_service::GenericChainSpec<GenesisConfig, RelayExtensions>;
3942

40-
const ENDOWMENT: u128 = 1_000_000 * DOLLARS;
43+
#[allow(non_snake_case)]
44+
pub fn ENDOWMENT() -> u128 {
45+
1_000_000 * dollar(CurrencyId::Native(TokenSymbol::BNC))
46+
}
47+
48+
fn bifrost_polkadot_properties() -> Properties {
49+
let mut properties = sc_chain_spec::Properties::new();
50+
let mut token_symbol: Vec<String> = vec![];
51+
let mut token_decimals: Vec<u32> = vec![];
52+
[
53+
// native token
54+
CurrencyId::Native(TokenSymbol::BNC),
55+
]
56+
.iter()
57+
.for_each(|token| {
58+
token_symbol.push(token.symbol().to_string());
59+
token_decimals.push(token.decimals() as u32);
60+
});
61+
62+
properties.insert("tokenSymbol".into(), token_symbol.into());
63+
properties.insert("tokenDecimals".into(), token_decimals.into());
64+
properties.insert("ss58Format".into(), SS58Prefix::get().into());
65+
66+
properties
67+
}
4168

4269
pub fn bifrost_polkadot_genesis(
4370
invulnerables: Vec<(AccountId, AuraId)>,
@@ -87,11 +114,11 @@ fn development_config_genesis(id: ParaId) -> GenesisConfig {
87114
get_account_id_from_seed::<sr25519::Public>("Alice"),
88115
whitelisted_caller(), // Benchmarking whitelist_account
89116
];
90-
let balances = endowed_accounts.iter().cloned().map(|x| (x, ENDOWMENT)).collect();
117+
let balances = endowed_accounts.iter().cloned().map(|x| (x, ENDOWMENT())).collect();
91118
let vestings = endowed_accounts
92119
.iter()
93120
.cloned()
94-
.map(|x| (x.clone(), 0u32, 100u32, ENDOWMENT / 4))
121+
.map(|x| (x.clone(), 0u32, 100u32, ENDOWMENT() / 4))
95122
.collect();
96123

97124
bifrost_polkadot_genesis(
@@ -115,7 +142,7 @@ pub fn development_config(id: ParaId) -> Result<ChainSpec, String> {
115142
vec![],
116143
None,
117144
Some(DEFAULT_PROTOCOL_ID),
118-
None,
145+
Some(bifrost_polkadot_properties()),
119146
RelayExtensions { relay_chain: "polkadot-dev".into(), para_id: id.into() },
120147
))
121148
}
@@ -138,11 +165,11 @@ fn local_config_genesis(id: ParaId) -> GenesisConfig {
138165
account("bechmarking_account_1", 0, 0), /* Benchmarking account_1, used for interacting
139166
* with whitelistted_caller */
140167
];
141-
let balances = endowed_accounts.iter().cloned().map(|x| (x, ENDOWMENT)).collect();
168+
let balances = endowed_accounts.iter().cloned().map(|x| (x, ENDOWMENT())).collect();
142169
let vestings = endowed_accounts
143170
.iter()
144171
.cloned()
145-
.map(|x| (x.clone(), 0u32, 100u32, ENDOWMENT / 4))
172+
.map(|x| (x.clone(), 0u32, 100u32, ENDOWMENT() / 4))
146173
.collect();
147174

148175
bifrost_polkadot_genesis(
@@ -169,16 +196,12 @@ pub fn local_testnet_config(id: ParaId) -> Result<ChainSpec, String> {
169196
vec![],
170197
None,
171198
Some(DEFAULT_PROTOCOL_ID),
172-
None,
199+
Some(bifrost_polkadot_properties()),
173200
RelayExtensions { relay_chain: "polkadot-local".into(), para_id: id.into() },
174201
))
175202
}
176203

177204
pub fn chainspec_config(id: ParaId) -> ChainSpec {
178-
let mut properties = sc_chain_spec::Properties::new();
179-
properties.insert("tokenSymbol".into(), "BNC".into());
180-
properties.insert("tokenDecimals".into(), 12.into());
181-
182205
ChainSpec::from_genesis(
183206
"Bifrost Polkadot",
184207
"bifrost_polkadot",
@@ -187,7 +210,7 @@ pub fn chainspec_config(id: ParaId) -> ChainSpec {
187210
vec![],
188211
TelemetryEndpoints::new(vec![(TELEMETRY_URL.into(), 0)]).ok(),
189212
Some(DEFAULT_PROTOCOL_ID),
190-
Some(properties),
213+
Some(bifrost_polkadot_properties()),
191214
RelayExtensions { relay_chain: "polkadot".into(), para_id: id.into() },
192215
)
193216
}

0 commit comments

Comments
 (0)