From 65859fd065d62ef2429ceafed80b43518db70285 Mon Sep 17 00:00:00 2001 From: clangenb Date: Tue, 31 Mar 2026 13:19:51 +0200 Subject: [PATCH 1/2] fix penpal genesis presets --- Cargo.lock | 1 + .../runtimes/testing/penpal/Cargo.toml | 3 ++ .../penpal/src/genesis_config_presets.rs | 45 ++++++++++++++++++- 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 266bdcbbeb7c3..be8913718c239 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14801,6 +14801,7 @@ dependencies = [ "sp-core 28.0.0", "sp-genesis-builder 0.8.0", "sp-inherents 26.0.0", + "sp-io 30.0.0", "sp-keyring", "sp-offchain", "sp-runtime 31.0.1", diff --git a/cumulus/parachains/runtimes/testing/penpal/Cargo.toml b/cumulus/parachains/runtimes/testing/penpal/Cargo.toml index 73c831d06c5f4..92dfd03ee77cf 100644 --- a/cumulus/parachains/runtimes/testing/penpal/Cargo.toml +++ b/cumulus/parachains/runtimes/testing/penpal/Cargo.toml @@ -90,6 +90,9 @@ primitive-types = { workspace = true, default-features = false, features = [ "scale-info", ] } +[dev-dependencies] +sp-io = { workspace = true, default-features = true } + [build-dependencies] substrate-wasm-builder = { optional = true, workspace = true, default-features = true } diff --git a/cumulus/parachains/runtimes/testing/penpal/src/genesis_config_presets.rs b/cumulus/parachains/runtimes/testing/penpal/src/genesis_config_presets.rs index f614626d78e1e..1b4c38b92ad92 100644 --- a/cumulus/parachains/runtimes/testing/penpal/src/genesis_config_presets.rs +++ b/cumulus/parachains/runtimes/testing/penpal/src/genesis_config_presets.rs @@ -81,8 +81,8 @@ fn penpal_parachain_genesis( assets: vec![ (RelayLocation::get(), sudo.clone(), true, EXISTENTIAL_DEPOSIT), (LocalPen2Asset::get(), sudo.clone(), false, EXISTENTIAL_DEPOSIT), - (UsdtFromAssetHub::get(), sudo.clone(), true, EXISTENTIAL_DEPOSIT), - (EthFromEthereum::get(), sudo.clone(), true, EXISTENTIAL_DEPOSIT), + (UsdtFromAssetHub::get(), sudo.clone(), true, USDT_ED), + (EthFromEthereum::get(), sudo.clone(), true, ETHER_MIN_BALANCE), ], metadata: vec![ ( @@ -165,3 +165,44 @@ pub fn preset_names() -> Vec { pub fn penpal_session_keys(keys: AuraId) -> crate::SessionKeys { crate::SessionKeys { aura: keys } } + +#[cfg(test)] +mod tests { + use super::*; + + // Duplicated from `sc_chain_spec::json_patch::merge` which lives in a node-side crate + // with heavy transitive deps (sc-executor, sc-network, etc.), making it unsuitable as a + // dev-dependency for a runtime crate. + fn merge(base: &mut serde_json::Value, patch: serde_json::Value) { + match (base, patch) { + (serde_json::Value::Object(base), serde_json::Value::Object(patch)) => { + for (k, v) in patch { + merge(base.entry(k).or_insert(serde_json::Value::Null), v); + } + }, + (base, patch) => *base = patch, + } + } + + fn assert_genesis_preset_valid(preset_id: &sp_genesis_builder::PresetId) { + let patch: serde_json::Value = + serde_json::from_slice(&get_preset(preset_id).expect("preset exists")).unwrap(); + let mut config = serde_json::to_value(RuntimeGenesisConfig::default()).unwrap(); + merge(&mut config, patch); + let json = serde_json::to_vec(&config).unwrap(); + sp_io::TestExternalities::default().execute_with(|| { + frame_support::genesis_builder_helper::build_state::(json) + .expect("genesis preset should build valid state"); + }); + } + + #[test] + fn dev_genesis_preset_is_valid() { + assert_genesis_preset_valid(&sp_genesis_builder::DEV_RUNTIME_PRESET.into()); + } + + #[test] + fn local_testnet_genesis_preset_is_valid() { + assert_genesis_preset_valid(&sp_genesis_builder::LOCAL_TESTNET_RUNTIME_PRESET.into()); + } +} From 60051e542f40a096a83776a2270cca8dd55ab44a Mon Sep 17 00:00:00 2001 From: "cmd[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 31 Mar 2026 12:10:36 +0000 Subject: [PATCH 2/2] Update from github-actions[bot] running command 'prdoc --audience runtime_dev --bump patch' --- prdoc/pr_11575.prdoc | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 prdoc/pr_11575.prdoc diff --git a/prdoc/pr_11575.prdoc b/prdoc/pr_11575.prdoc new file mode 100644 index 0000000000000..986b1d7f2c82a --- /dev/null +++ b/prdoc/pr_11575.prdoc @@ -0,0 +1,10 @@ +title: '[Penpal] fix genesis presets - assign proper ED to accounts''' +doc: +- audience: Runtime Dev + description: |- + Penpal had values below the ED for initializing asset balances for some accounts. This has not been detected as no unit tests actually use the presets. This PR fixes the invalid values, and it also adds some unit tests for validating that the presets build at least. + + Closes #11558. +crates: +- name: penpal-runtime + bump: patch