diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index e69188d9..d7ce91b9 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -46,7 +46,7 @@ services: profiles: - base environment: - CHAIN: dev + CHAIN: local NAME: base serai-alice: @@ -59,7 +59,7 @@ services: - cluster-lg - cluster-coins-lg environment: - CHAIN: dev + CHAIN: local NAME: alice VALIDATOR: true @@ -73,7 +73,7 @@ services: - cluster-lg - cluster-coins-lg environment: - CHAIN: dev + CHAIN: local NAME: bob VALIDATOR: true @@ -87,7 +87,7 @@ services: - cluster-lg - cluster-coins-lg environment: - CHAIN: dev + CHAIN: local NAME: charlie VALIDATOR: true @@ -99,7 +99,7 @@ services: - cluster-lg - cluster-coins-lg environment: - CHAIN: dev + CHAIN: local NAME: dave serai-eve: @@ -110,7 +110,7 @@ services: - cluster-lg - cluster-coins-lg environment: - CHAIN: dev + CHAIN: local NAME: eve serai-ferdie: @@ -121,7 +121,7 @@ services: - cluster-lg - cluster-coins-lg environment: - CHAIN: dev + CHAIN: local NAME: ferdie # Processor Services diff --git a/substrate/node/src/chain_spec.rs b/substrate/node/src/chain_spec.rs index aac15e50..992afc02 100644 --- a/substrate/node/src/chain_spec.rs +++ b/substrate/node/src/chain_spec.rs @@ -18,7 +18,11 @@ fn account_id_from_name(name: &'static str) -> AccountId { insecure_pair_from_name(name).public() } -fn testnet_genesis(wasm_binary: &[u8], endowed_accounts: Vec) -> GenesisConfig { +fn testnet_genesis( + wasm_binary: &[u8], + validators: &[&'static str], + endowed_accounts: Vec, +) -> GenesisConfig { let session_key = |name| { let key = account_id_from_name(name); (key, key, SessionKeys { tendermint: Public::from(key) }) @@ -30,9 +34,7 @@ fn testnet_genesis(wasm_binary: &[u8], endowed_accounts: Vec) -> Gene balances: endowed_accounts.iter().cloned().map(|k| (k, 1 << 60)).collect(), }, transaction_payment: Default::default(), - session: SessionConfig { - keys: vec![session_key("Alice"), session_key("Bob"), session_key("Charlie")], - }, + session: SessionConfig { keys: validators.iter().map(|name| session_key(*name)).collect() }, } } @@ -48,6 +50,51 @@ pub fn development_config() -> Result { || { testnet_genesis( wasm_binary, + &["Alice"], + vec![ + account_id_from_name("Alice"), + account_id_from_name("Bob"), + account_id_from_name("Charlie"), + account_id_from_name("Dave"), + account_id_from_name("Eve"), + account_id_from_name("Ferdie"), + account_id_from_name("Alice//stash"), + account_id_from_name("Bob//stash"), + account_id_from_name("Charlie//stash"), + account_id_from_name("Dave//stash"), + account_id_from_name("Eve//stash"), + account_id_from_name("Ferdie//stash"), + ], + ) + }, + // Bootnodes + vec![], + // Telemetry + None, + // Protocol ID + Some("serai"), + // Fork ID + None, + // Properties + None, + // Extensions + None, + )) +} + +pub fn testnet_config() -> Result { + let wasm_binary = WASM_BINARY.ok_or("Testnet wasm not available")?; + + Ok(ChainSpec::from_genesis( + // Name + "Local Test Network", + // ID + "local", + ChainType::Local, + || { + testnet_genesis( + wasm_binary, + &["Alice", "Bob", "Charlie"], vec![ account_id_from_name("Alice"), account_id_from_name("Bob"), diff --git a/substrate/node/src/command.rs b/substrate/node/src/command.rs index 683923ad..c5c5008d 100644 --- a/substrate/node/src/command.rs +++ b/substrate/node/src/command.rs @@ -39,6 +39,7 @@ impl SubstrateCli for Cli { fn load_spec(&self, id: &str) -> Result, String> { match id { "dev" => Ok(Box::new(chain_spec::development_config()?)), + "local" => Ok(Box::new(chain_spec::testnet_config()?)), _ => panic!("Unknown network ID"), } }