nodle_parachain/
chain_spec.rs#![allow(clippy::derive_partial_eq_without_eq)]
use cumulus_primitives_core::ParaId;
use runtime_eden::{development_config_genesis, wasm_binary_unwrap};
use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup};
use sc_service::ChainType;
use serde::{Deserialize, Serialize};
pub type ChainSpec = sc_service::GenericChainSpec<Extensions>;
#[derive(Debug, Clone, Serialize, Deserialize, ChainSpecGroup, ChainSpecExtension)]
#[serde(rename_all = "camelCase")]
pub struct Extensions {
pub relay_chain: String,
pub para_id: u32,
}
impl Extensions {
pub fn try_get(chain_spec: &dyn sc_service::ChainSpec) -> Option<&Self> {
sc_chain_spec::get_extension(chain_spec.extensions())
}
}
pub fn development_config(id: ParaId) -> ChainSpec {
let mut properties = sc_chain_spec::Properties::new();
properties.insert("tokenSymbol".into(), "DevNODL".into());
properties.insert("tokenDecimals".into(), 11.into());
properties.insert("ss58Format".into(), 37.into());
ChainSpec::builder(
wasm_binary_unwrap(),
Extensions {
relay_chain: "rococo-local".into(), para_id: id.into(),
},
)
.with_name("Parachain Eden Development")
.with_id("para_eden_dev")
.with_chain_type(ChainType::Development)
.with_properties(properties)
.with_genesis_config_patch(development_config_genesis(id))
.build()
}
pub fn production_config() -> ChainSpec {
ChainSpec::from_json_bytes(&include_bytes!("../res/eden.json")[..]).unwrap()
}
pub fn paradis_config() -> Result<ChainSpec, Box<dyn std::error::Error>> {
Ok(ChainSpec::from_json_file("/usr/local/share/nodle/paradis.json".into())?)
}
#[cfg(test)]
pub(crate) mod tests {
use super::*;
use hex_literal::hex;
use sc_chain_spec::ChainSpec;
use sp_core::blake2_256;
use sp_runtime::BuildStorage;
#[test]
fn create_development_chain_spec() {
assert!(development_config(ParaId::from(1000u32)).build_storage().is_ok());
}
#[test]
fn create_production_spec() {
assert!(production_config().build_storage().is_ok());
}
#[test]
fn production_has_substitutes_set() {
assert!(production_config().code_substitutes().contains_key("3351852"));
assert_eq!(
blake2_256(
production_config()
.code_substitutes()
.get("3351852")
.expect("we already tested for existence"),
),
hex!("207767fb73e1fcf8ae32455843419e51c94987228a4b77857aff7653d103cac3"),
);
}
}