Skip to content

Commit

Permalink
Add kusama live preset and chain spec to builder
Browse files Browse the repository at this point in the history
  • Loading branch information
seadanda committed Aug 6, 2024
1 parent 932f5aa commit bc04c5b
Show file tree
Hide file tree
Showing 7 changed files with 155 additions and 4 deletions.
2 changes: 2 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ frame-metadata-hash-extension = { version = "0.4.0", default-features = false }
remote-externalities = { version = "0.43.0", package = "frame-remote-externalities" }
runtime-parachains = { version = "15.0.0", default-features = false, package = "polkadot-runtime-parachains" }
sc-chain-spec = { version = "35.0.0" }
sc-network = { version = "0.42.0" }
scale-info = { version = "2.10.0", default-features = false }
separator = { version = "0.4.1" }
serde = { version = "1.0.196" }
Expand Down
2 changes: 2 additions & 0 deletions chain-spec-generator/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ polkadot-runtime = { workspace = true }
kusama-runtime = { workspace = true }

sc-chain-spec = { workspace = true }
sc-network = { workspace = true }
sp-runtime = { workspace = true }

asset-hub-polkadot-runtime = { workspace = true }
asset-hub-kusama-runtime = { workspace = true }
Expand Down
8 changes: 8 additions & 0 deletions chain-spec-generator/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,18 @@ fn main() -> Result<(), String> {
"encointer-kusama-local",
Box::new(system_parachains_specs::encointer_kusama_local_testnet_config) as Box<_>,
),
(
"coretime-kusama",
Box::new(system_parachains_specs::coretime_kusama_config) as Box<_>,
),
(
"coretime-kusama-local",
Box::new(system_parachains_specs::coretime_kusama_local_testnet_config) as Box<_>,
),
(
"coretime-polkadot",
Box::new(system_parachains_specs::coretime_polkadot_config) as Box<_>,
),
(
"coretime-polkadot-local",
Box::new(system_parachains_specs::coretime_polkadot_local_testnet_config) as Box<_>,
Expand Down
65 changes: 65 additions & 0 deletions chain-spec-generator/src/system_parachains_specs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
// along with Polkadot. If not, see <http://www.gnu.org/licenses/>.

use sc_chain_spec::{ChainSpec, ChainSpecExtension, ChainSpecGroup, ChainType};
use sc_network::config::MultiaddrWithPeerId;
use serde::{Deserialize, Serialize};
use std::str::FromStr;

/// Generic extensions for Parachain ChainSpecs.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, ChainSpecGroup, ChainSpecExtension)]
Expand Down Expand Up @@ -218,6 +220,45 @@ pub fn coretime_kusama_local_testnet_config() -> Result<Box<dyn ChainSpec>, Stri
))
}

pub fn coretime_kusama_config() -> Result<Box<dyn ChainSpec>, String> {
let mut properties = sc_chain_spec::Properties::new();
properties.insert("ss58Format".into(), 2.into());
properties.insert("tokenSymbol".into(), "KSM".into());
properties.insert("tokenDecimals".into(), 12.into());

let boot_nodes = vec![
"/dns/polkadot-coretime-connect-a-0.polkadot.io/tcp/30334/p2p/12D3KooWKjnixAHbKMsPTJwGx8SrBeGEJLHA8KmKcEDYMp3YmWgR",
"/dns/polkadot-coretime-connect-a-1.polkadot.io/tcp/30334/p2p/12D3KooWQ7B7p4DFv1jWqaKfhrZBcMmi5g8bWFnmskguLaGEmT6n",
"/dns/polkadot-coretime-connect-a-0.polkadot.io/tcp/443/wss/p2p/12D3KooWKjnixAHbKMsPTJwGx8SrBeGEJLHA8KmKcEDYMp3YmWgR",
"/dns/polkadot-coretime-connect-a-1.polkadot.io/tcp/443/wss/p2p/12D3KooWQ7B7p4DFv1jWqaKfhrZBcMmi5g8bWFnmskguLaGEmT6n",
];

Ok(Box::new(
CoretimeKusamaChainSpec::builder(
coretime_kusama_runtime::WASM_BINARY.expect("Kusama Coretime wasm not available!"),
Extensions { relay_chain: "kusama".into(), para_id: 1005 },
)
.with_name("Kusama Coretime")
.with_id("coretime-kusama")
.with_chain_type(ChainType::Live)
.with_genesis_config_patch(
coretime_kusama_runtime::genesis_config_presets::coretime_kusama_live_genesis(
1005.into(),
),
)
.with_properties(properties)
.with_boot_nodes(
boot_nodes
.iter()
.map(|addr| {
MultiaddrWithPeerId::from_str(addr).expect("Boot node address is incorrect.")
})
.collect(),
)
.build(),
))
}

pub fn coretime_polkadot_local_testnet_config() -> Result<Box<dyn ChainSpec>, String> {
let mut properties = sc_chain_spec::Properties::new();
properties.insert("ss58Format".into(), 0.into());
Expand All @@ -242,6 +283,30 @@ pub fn coretime_polkadot_local_testnet_config() -> Result<Box<dyn ChainSpec>, St
))
}

pub fn coretime_polkadot_config() -> Result<Box<dyn ChainSpec>, String> {
let mut properties = sc_chain_spec::Properties::new();
properties.insert("ss58Format".into(), 0.into());
properties.insert("tokenSymbol".into(), "DOT".into());
properties.insert("tokenDecimals".into(), 10.into());

Ok(Box::new(
CoretimePolkadotChainSpec::builder(
coretime_polkadot_runtime::WASM_BINARY.expect("CoretimePolkadot wasm not available!"),
Extensions { relay_chain: "polkadot".into(), para_id: 1005 },
)
.with_name("Polkadot Coretime")
.with_id("coretime-polkadot")
.with_chain_type(ChainType::Live)
.with_genesis_config_patch(
coretime_polkadot_runtime::genesis_config_presets::coretime_polkadot_live_genesis(
1005.into(),
),
)
.with_properties(properties)
.build(),
))
}

pub fn people_kusama_local_testnet_config() -> Result<Box<dyn ChainSpec>, String> {
let mut properties = sc_chain_spec::Properties::new();
properties.insert("ss58Format".into(), 2.into());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,14 @@
//! Genesis configs presets for the CoretimeKusama runtime

use crate::*;
use hex_literal::hex;
use sp_core::crypto::UncheckedInto;
use sp_std::vec::Vec;
use system_parachains_constants::genesis_presets::*;

const CORETIME_KUSAMA_ED: Balance = ExistentialDeposit::get();

fn coretime_kusama_genesis(
pub fn coretime_kusama_genesis(
invulnerables: Vec<(AccountId, AuraId)>,
endowed_accounts: Vec<AccountId>,
id: ParaId,
Expand All @@ -49,9 +51,9 @@ fn coretime_kusama_genesis(
.into_iter()
.map(|(acc, aura)| {
(
acc.clone(), // account id
acc, // validator id
SessionKeys { aura }, // session keys
acc.clone(), // account id
acc, // validator id
SessionKeys { aura }, // session keys
)
})
.collect(),
Expand All @@ -72,9 +74,67 @@ fn coretime_kusama_development_genesis(para_id: ParaId) -> serde_json::Value {
coretime_kusama_local_testnet_genesis(para_id)
}

pub fn coretime_kusama_live_genesis(para_id: ParaId) -> serde_json::Value {
coretime_kusama_genesis(
vec![
// HRn3a4qLmv1ejBHvEbnjaiEWjt154iFi2Wde7bXKGUwGvtL
(
hex!("d6a941f3a15918925170cc4e703c0beacc8915e2a04b3e86985915d2d84d2d52").into(),
hex!("4491cfc3ef17b4e02c66a7161f34fcacabf86ad64a783c1dbbe74e4ef82a7966")
.unchecked_into(),
),
// Cx9Uu2sxp3Xt1QBUbGQo7j3imTvjWJrqPF1PApDoy6UVkWP
(
hex!("10a59d610a39fc102624c8e8aa1096f0188f3fdd24b226c6a27eeed5b4774e12").into(),
hex!("04e3a3ecadbd493eb64ab2c19d215ccbc9eebea686dc3cea4833194674a8285e")
.unchecked_into(),
),
// CdW8izFcLeicL3zZUQaC3a39AGeNSTgc9Jb5E5sjREPryA2
(
hex!("026d79399d627961c528d648413b2aa54595245d97158a8b90900287dee28216").into(),
hex!("de05506c73f35cf0bd50652b719369c2e20be9bf2c8522bd6cb61059a0cb0033")
.unchecked_into(),
),
// H1tAQMm3eizGcmpAhL9aA9gR844kZpQfkU7pkmMiLx9jSzE
(
hex!("c46ff658221e07564fde2764017590264f9dfced3538e283856c43e0ee456e51").into(),
hex!("786b7889aecde64fc8942c1d52e2d7220da83636275edfd467624a06ffc3c935")
.unchecked_into(),
),
// J11Rp4mjz3vRb2DL51HqRGRjhuEQRyXgtuFskebXb8zMZ9s
(
hex!("f00168a3d082a8ccf93945b1f173fdaecc1ce76fc09bbde18423640194be7212").into(),
hex!("0a2cee67864d1d4c9433bfd45324b8f72425f096e01041546be48c5d3bc9a746")
.unchecked_into(),
),
// DtuntvQBh9vajFTnd42aTTCiuCyY3ep6EVwhhPji2ejyyhW
(
hex!("3a6a0745688c52b4709f65fa2e4508dfa0940ccc0d282cd16be9bc043b2f4a04").into(),
hex!("064842b69c1e8dc6e2263dedd129d96488cae3f6953631da4ebba097c241eb23")
.unchecked_into(),
),
// HmatizNhXrZtXwQK2LfntvjCy3x1EuKs1WnRQ6CP3KkNfmA
(
hex!("e5c49f7bc76b9e1b91566945e2eb539d960da57ca8e9ccd0e6030e4b11b60099").into(),
hex!("7e126fa970a75ae2cd371d01ee32e9387f0b256832e408ca8ea7b254e6bcde7d")
.unchecked_into(),
),
// HPUEzi4v3YJmhBfSbcGEFFiNKPAGVnGkfDiUzBNTR7j1CxT
(
hex!("d4e6d6256f56677bcdbc0543f1a2c40aa82497b33af1748fc10113b1e2a1b460").into(),
hex!("cade3f02e0acf9e85d9a4f919abeaeda12b55202c74f78d506ccd1ea2e16a271")
.unchecked_into(),
),
],
Vec::new(),
para_id,
)
}

/// Provides the JSON representation of predefined genesis config for given `id`.
pub fn get_preset(id: &sp_genesis_builder::PresetId) -> Option<sp_std::vec::Vec<u8>> {
let patch = match id.try_into() {
Ok("live") => coretime_kusama_live_genesis(1005.into()),
Ok("development") => coretime_kusama_development_genesis(1005.into()),
Ok("local_testnet") => coretime_kusama_local_testnet_genesis(1005.into()),
_ => return None,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
//! Genesis configs presets for the Polkadot Coretime runtime

use crate::*;
use sp_core::sr25519;
use sp_std::vec::Vec;
use system_parachains_constants::genesis_presets::*;

Expand Down Expand Up @@ -72,9 +73,21 @@ fn coretime_polkadot_development_genesis(para_id: ParaId) -> serde_json::Value {
coretime_polkadot_local_testnet_genesis(para_id)
}

fn coretime_polkadot_live_invulnerables() -> Vec<(parachains_common::AccountId, AuraId)> {
Vec::from([
(get_account_id_from_seed::<sr25519::Public>("Alice"), get_from_seed::<AuraId>("Alice")),
(get_account_id_from_seed::<sr25519::Public>("Bob"), get_from_seed::<AuraId>("Bob")),
])
}

pub fn coretime_polkadot_live_genesis(para_id: ParaId) -> serde_json::Value {
coretime_polkadot_genesis(coretime_polkadot_live_invulnerables(), Vec::new(), para_id)
}

/// Provides the JSON representation of predefined genesis config for given `id`.
pub fn get_preset(id: &sp_genesis_builder::PresetId) -> Option<sp_std::vec::Vec<u8>> {
let patch = match id.try_into() {
Ok("live") => coretime_polkadot_live_genesis(1005.into()),
Ok("development") => coretime_polkadot_development_genesis(1005.into()),
Ok("local_testnet") => coretime_polkadot_local_testnet_genesis(1005.into()),
_ => return None,
Expand Down

0 comments on commit bc04c5b

Please sign in to comment.