fix: correct Ed25519/Sr25519 key scheme detection for Asset Hub
- Fix RuntimeResolver prefix matching order: check asset-hub-pezkuwichain BEFORE asset-hub-pezkuwi to avoid false matches - Fix zombienet SDK is_asset_hub_pezkuwi detection to exclude pezkuwichain - Add zombienet-local-21.toml and zombienet-mainnet-21.toml configs - Update .gitignore for sensitive mainnet files
This commit is contained in:
@@ -64,3 +64,12 @@ vendor/*/Cargo.lock
|
||||
|
||||
# Generated chain specs
|
||||
chain-specs/
|
||||
|
||||
# Sensitive wallet data - NEVER commit
|
||||
/res/
|
||||
tools/usdt-bridge/secrets/
|
||||
*.seed
|
||||
*wallet*.json
|
||||
founder_validators.json
|
||||
founder_governance.json
|
||||
mainnet/
|
||||
|
||||
@@ -247,16 +247,19 @@ impl LegacyRuntime {
|
||||
fn from_id(id: &str) -> LegacyRuntime {
|
||||
let id = id.replace('_', "-");
|
||||
|
||||
if id.starts_with("asset-hub-pezkuwi") | id.starts_with("statemint") {
|
||||
LegacyRuntime::AssetHubPezkuwi
|
||||
} else if id.starts_with("asset-hub-dicle")
|
||||
// NOTE: Check longer prefixes FIRST to avoid false matches.
|
||||
// "asset-hub-pezkuwichain" starts with "asset-hub-pezkuwi", so we must check
|
||||
// pezkuwichain before pezkuwi.
|
||||
if id.starts_with("asset-hub-pezkuwichain")
|
||||
| id.starts_with("asset-hub-dicle")
|
||||
| id.starts_with("statemine")
|
||||
| id.starts_with("asset-hub-pezkuwichain")
|
||||
| id.starts_with("rockmine")
|
||||
| id.starts_with("asset-hub-zagros")
|
||||
| id.starts_with("westmint")
|
||||
{
|
||||
LegacyRuntime::AssetHub
|
||||
} else if id.starts_with("asset-hub-pezkuwi") | id.starts_with("statemint") {
|
||||
LegacyRuntime::AssetHubPezkuwi
|
||||
} else if id.starts_with("penpal") {
|
||||
LegacyRuntime::Penpal
|
||||
} else if id.starts_with("collectives-pezkuwi") || id.starts_with("collectives-zagros") {
|
||||
|
||||
+3
-1
@@ -1349,10 +1349,12 @@ fn add_authorities(
|
||||
nodes: &[&NodeSpec],
|
||||
session_key: SessionKeyType,
|
||||
) {
|
||||
// NOTE: Check that it's "asset-hub-pezkuwi" (mainnet) but NOT "asset-hub-pezkuwichain" (testnet).
|
||||
// "asset-hub-pezkuwichain" starts with "asset-hub-pezkuwi", so we must exclude it.
|
||||
let is_asset_hub_pezkuwi = chain_spec_json
|
||||
.get("id")
|
||||
.and_then(|v| v.as_str())
|
||||
.map(|id| id.starts_with("asset-hub-pezkuwi"))
|
||||
.map(|id| id.starts_with("asset-hub-pezkuwi") && !id.starts_with("asset-hub-pezkuwichain"))
|
||||
.unwrap_or_default();
|
||||
if let Some(val) = chain_spec_json.pointer_mut(runtime_config_ptr) {
|
||||
if let Some(session_keys) = val.pointer_mut("/session/keys") {
|
||||
|
||||
@@ -65,8 +65,12 @@ where
|
||||
// Generate keystore for node
|
||||
let node_files_path =
|
||||
if let Some(para) = ctx.parachain { para.id.to_string() } else { node.name.clone() };
|
||||
let is_asset_hub_pezkuwi =
|
||||
ctx.parachain_id.map(|id| id.starts_with("asset-hub-pezkuwi")).unwrap_or_default();
|
||||
// NOTE: Check that it's "asset-hub-pezkuwi" (mainnet) but NOT "asset-hub-pezkuwichain" (testnet).
|
||||
// "asset-hub-pezkuwichain" starts with "asset-hub-pezkuwi", so we must exclude it.
|
||||
let is_asset_hub_pezkuwi = ctx
|
||||
.parachain_id
|
||||
.map(|id| id.starts_with("asset-hub-pezkuwi") && !id.starts_with("asset-hub-pezkuwichain"))
|
||||
.unwrap_or_default();
|
||||
let keystore_key_types = node.keystore_key_types.iter().map(String::as_str).collect();
|
||||
let key_filenames = generators::generate_node_keystore(
|
||||
&node.accounts,
|
||||
@@ -245,13 +249,13 @@ where
|
||||
let prometheus_uri = format!("http://{ip_to_use}:{prometheus_port_external}/metrics");
|
||||
info!("🚀 {}, should be running now", node.name);
|
||||
info!(
|
||||
"💻 {}: direct link (pjs) https://polkadot.js.org/apps/?rpc={ws_uri}#/explorer",
|
||||
"💻 {}: direct link (apps) https://apps.pezkuwichain.io/?rpc={ws_uri}#/explorer",
|
||||
node.name
|
||||
);
|
||||
info!(
|
||||
"💻 {}: direct link (papi) https://dev.papi.how/explorer#networkId=custom&endpoint={ws_uri}",
|
||||
node.name
|
||||
);
|
||||
"💻 {}: direct link (explorer) https://explorer.pezkuwichain.io/?rpc={ws_uri}#/explorer",
|
||||
node.name
|
||||
);
|
||||
|
||||
info!("📊 {}: metrics link {prometheus_uri}", node.name);
|
||||
|
||||
|
||||
@@ -0,0 +1,175 @@
|
||||
# Pezkuwi Local Test Configuration - 21 Validators
|
||||
# =================================================
|
||||
# Uses well-known keyring for automatic key injection
|
||||
# For testing network topology before mainnet
|
||||
|
||||
[settings]
|
||||
timeout = 600
|
||||
provider = "native"
|
||||
bootnode_spawn_timeout = 300
|
||||
|
||||
[relaychain]
|
||||
default_command = "/home/mamostehp/pezkuwi-sdk/target/release/pezkuwi"
|
||||
chain = "pezkuwichain-local"
|
||||
default_args = [
|
||||
"--unsafe-force-node-key-generation",
|
||||
"-lteyrchain=debug,babe=debug,grandpa=debug",
|
||||
]
|
||||
|
||||
# Using Substrate's well-known keyring names for automatic key injection
|
||||
[[relaychain.nodes]]
|
||||
name = "alice"
|
||||
validator = true
|
||||
rpc_port = 9944
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "bob"
|
||||
validator = true
|
||||
rpc_port = 9945
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "charlie"
|
||||
validator = true
|
||||
rpc_port = 9946
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "dave"
|
||||
validator = true
|
||||
rpc_port = 9947
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "eve"
|
||||
validator = true
|
||||
rpc_port = 9948
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "ferdie"
|
||||
validator = true
|
||||
rpc_port = 9949
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "one"
|
||||
validator = true
|
||||
rpc_port = 9950
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "two"
|
||||
validator = true
|
||||
rpc_port = 9951
|
||||
|
||||
# Additional validators (will use generated keys)
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-9"
|
||||
validator = true
|
||||
rpc_port = 9952
|
||||
args = ["--unsafe-force-node-key-generation"]
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-10"
|
||||
validator = true
|
||||
rpc_port = 9953
|
||||
args = ["--unsafe-force-node-key-generation"]
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-11"
|
||||
validator = true
|
||||
rpc_port = 9954
|
||||
args = ["--unsafe-force-node-key-generation"]
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-12"
|
||||
validator = true
|
||||
rpc_port = 9955
|
||||
args = ["--unsafe-force-node-key-generation"]
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-13"
|
||||
validator = true
|
||||
rpc_port = 9956
|
||||
args = ["--unsafe-force-node-key-generation"]
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-14"
|
||||
validator = true
|
||||
rpc_port = 9957
|
||||
args = ["--unsafe-force-node-key-generation"]
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-15"
|
||||
validator = true
|
||||
rpc_port = 9958
|
||||
args = ["--unsafe-force-node-key-generation"]
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-16"
|
||||
validator = true
|
||||
rpc_port = 9959
|
||||
args = ["--unsafe-force-node-key-generation"]
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-17"
|
||||
validator = true
|
||||
rpc_port = 9960
|
||||
args = ["--unsafe-force-node-key-generation"]
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-18"
|
||||
validator = true
|
||||
rpc_port = 9961
|
||||
args = ["--unsafe-force-node-key-generation"]
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-19"
|
||||
validator = true
|
||||
rpc_port = 9962
|
||||
args = ["--unsafe-force-node-key-generation"]
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-20"
|
||||
validator = true
|
||||
rpc_port = 9963
|
||||
args = ["--unsafe-force-node-key-generation"]
|
||||
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-21"
|
||||
validator = true
|
||||
rpc_port = 9964
|
||||
args = ["--unsafe-force-node-key-generation"]
|
||||
|
||||
# Asset Hub Teyrchain
|
||||
[[teyrchains]]
|
||||
id = 1000
|
||||
chain = "asset-hub-pezkuwichain-local"
|
||||
cumulus_based = true
|
||||
add_to_genesis = true
|
||||
|
||||
[[teyrchains.collators]]
|
||||
name = "azad-collator"
|
||||
command = "/home/mamostehp/pezkuwi-sdk/target/release/pezkuwi-teyrchain"
|
||||
rpc_port = 10944
|
||||
args = ["--unsafe-force-node-key-generation", "-lteyrchain=debug"]
|
||||
|
||||
[[teyrchains.collators]]
|
||||
name = "beritan-collator"
|
||||
command = "/home/mamostehp/pezkuwi-sdk/target/release/pezkuwi-teyrchain"
|
||||
rpc_port = 10945
|
||||
args = ["--unsafe-force-node-key-generation", "-lteyrchain=debug"]
|
||||
|
||||
# People Chain Teyrchain
|
||||
[[teyrchains]]
|
||||
id = 1004
|
||||
chain = "people-pezkuwichain-local"
|
||||
cumulus_based = true
|
||||
add_to_genesis = true
|
||||
|
||||
[[teyrchains.collators]]
|
||||
name = "erin-collator"
|
||||
command = "/home/mamostehp/pezkuwi-sdk/target/release/pezkuwi-teyrchain"
|
||||
rpc_port = 10948
|
||||
args = ["--unsafe-force-node-key-generation", "-lteyrchain=debug"]
|
||||
|
||||
[[teyrchains.collators]]
|
||||
name = "firaz-collator"
|
||||
command = "/home/mamostehp/pezkuwi-sdk/target/release/pezkuwi-teyrchain"
|
||||
rpc_port = 10949
|
||||
args = ["--unsafe-force-node-key-generation", "-lteyrchain=debug"]
|
||||
@@ -0,0 +1,207 @@
|
||||
# MAINNET CONFIG - 21 Validators + 4 Collators (2 Asset Hub + 2 People Chain)
|
||||
# Uses "genesis" preset with real validator/collator keys
|
||||
# For local testing before VPS deployment
|
||||
|
||||
[settings]
|
||||
timeout = 600
|
||||
provider = "native"
|
||||
bootnode_spawn_timeout = 300
|
||||
|
||||
[relaychain]
|
||||
default_command = "/home/mamostehp/pezkuwi-sdk/target/release/pezkuwi"
|
||||
# Use "genesis" preset which has 21 real validators and real account addresses
|
||||
chain = "pezkuwichain"
|
||||
default_args = ["-lbabe=debug,grandpa=debug,teyrchain=debug", "--unsafe-force-node-key-generation"]
|
||||
|
||||
# Validator 1: Satoshi-Qazi-Mohammed
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-1"
|
||||
validator = true
|
||||
rpc_port = 9944
|
||||
prometheus_port = 9615
|
||||
|
||||
# Validator 2
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-2"
|
||||
validator = true
|
||||
rpc_port = 9945
|
||||
prometheus_port = 9616
|
||||
|
||||
# Validator 3
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-3"
|
||||
validator = true
|
||||
rpc_port = 9946
|
||||
prometheus_port = 9617
|
||||
|
||||
# Validator 4
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-4"
|
||||
validator = true
|
||||
rpc_port = 9947
|
||||
prometheus_port = 9618
|
||||
|
||||
# Validator 5
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-5"
|
||||
validator = true
|
||||
rpc_port = 9948
|
||||
prometheus_port = 9619
|
||||
|
||||
# Validator 6
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-6"
|
||||
validator = true
|
||||
rpc_port = 9949
|
||||
prometheus_port = 9620
|
||||
|
||||
# Validator 7
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-7"
|
||||
validator = true
|
||||
rpc_port = 9950
|
||||
prometheus_port = 9621
|
||||
|
||||
# Validator 8
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-8"
|
||||
validator = true
|
||||
rpc_port = 9951
|
||||
prometheus_port = 9622
|
||||
|
||||
# Validator 9
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-9"
|
||||
validator = true
|
||||
rpc_port = 9952
|
||||
prometheus_port = 9623
|
||||
|
||||
# Validator 10
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-10"
|
||||
validator = true
|
||||
rpc_port = 9953
|
||||
prometheus_port = 9624
|
||||
|
||||
# Validator 11
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-11"
|
||||
validator = true
|
||||
rpc_port = 9954
|
||||
prometheus_port = 9625
|
||||
|
||||
# Validator 12
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-12"
|
||||
validator = true
|
||||
rpc_port = 9955
|
||||
prometheus_port = 9626
|
||||
|
||||
# Validator 13
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-13"
|
||||
validator = true
|
||||
rpc_port = 9956
|
||||
prometheus_port = 9627
|
||||
|
||||
# Validator 14
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-14"
|
||||
validator = true
|
||||
rpc_port = 9957
|
||||
prometheus_port = 9628
|
||||
|
||||
# Validator 15
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-15"
|
||||
validator = true
|
||||
rpc_port = 9958
|
||||
prometheus_port = 9629
|
||||
|
||||
# Validator 16
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-16"
|
||||
validator = true
|
||||
rpc_port = 9959
|
||||
prometheus_port = 9630
|
||||
|
||||
# Validator 17
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-17"
|
||||
validator = true
|
||||
rpc_port = 9960
|
||||
prometheus_port = 9631
|
||||
|
||||
# Validator 18
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-18"
|
||||
validator = true
|
||||
rpc_port = 9961
|
||||
prometheus_port = 9632
|
||||
|
||||
# Validator 19
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-19"
|
||||
validator = true
|
||||
rpc_port = 9962
|
||||
prometheus_port = 9633
|
||||
|
||||
# Validator 20
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-20"
|
||||
validator = true
|
||||
rpc_port = 9963
|
||||
prometheus_port = 9634
|
||||
|
||||
# Validator 21
|
||||
[[relaychain.nodes]]
|
||||
name = "validator-21"
|
||||
validator = true
|
||||
rpc_port = 9964
|
||||
prometheus_port = 9635
|
||||
|
||||
# Asset Hub Teyrchain (ID: 1000) - 2 Collators
|
||||
[[teyrchains]]
|
||||
id = 1000
|
||||
chain = "asset-hub-pezkuwichain"
|
||||
cumulus_based = true
|
||||
add_to_genesis = true
|
||||
|
||||
# Azad - Asset Hub Collator 1
|
||||
[[teyrchains.collators]]
|
||||
name = "azad"
|
||||
command = "/home/mamostehp/pezkuwi-sdk/target/release/pezkuwi-teyrchain"
|
||||
rpc_port = 10944
|
||||
prometheus_port = 10615
|
||||
args = ["--force-authoring", "-lteyrchain=debug"]
|
||||
|
||||
# Beritan - Asset Hub Collator 2
|
||||
[[teyrchains.collators]]
|
||||
name = "beritan"
|
||||
command = "/home/mamostehp/pezkuwi-sdk/target/release/pezkuwi-teyrchain"
|
||||
rpc_port = 10945
|
||||
prometheus_port = 10616
|
||||
args = ["--force-authoring", "-lteyrchain=debug"]
|
||||
|
||||
# People Chain Teyrchain (ID: 1004) - 2 Collators
|
||||
[[teyrchains]]
|
||||
id = 1004
|
||||
chain = "people-pezkuwichain"
|
||||
cumulus_based = true
|
||||
add_to_genesis = true
|
||||
|
||||
# Erin - People Chain Collator 1
|
||||
[[teyrchains.collators]]
|
||||
name = "erin"
|
||||
command = "/home/mamostehp/pezkuwi-sdk/target/release/pezkuwi-teyrchain"
|
||||
rpc_port = 10948
|
||||
prometheus_port = 10619
|
||||
args = ["--force-authoring", "-lteyrchain=debug"]
|
||||
|
||||
# Firaz - People Chain Collator 2
|
||||
[[teyrchains.collators]]
|
||||
name = "firaz"
|
||||
command = "/home/mamostehp/pezkuwi-sdk/target/release/pezkuwi-teyrchain"
|
||||
rpc_port = 10949
|
||||
prometheus_port = 10620
|
||||
args = ["--force-authoring", "-lteyrchain=debug"]
|
||||
Reference in New Issue
Block a user