From 3ed3c659c672c88c20023e1731add2b9f30f6e3b Mon Sep 17 00:00:00 2001 From: Uncle Stretch Date: Fri, 11 Sep 2026 16:10:49 +0300 Subject: [PATCH] insert testnet preclaims into governance pallet Signed-off-by: Uncle Stretch --- Cargo.lock | 4 +-- pallets/helpers/Cargo.toml | 2 +- pallets/helpers/src/networks.rs | 26 ++++++++++++++++---- runtime/casper/Cargo.toml | 2 +- runtime/casper/src/genesis_config_presets.rs | 22 ++++++++++++++--- 5 files changed, 44 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9bbc0ef..ff0de99 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1195,7 +1195,7 @@ dependencies = [ [[package]] name = "casper-runtime" -version = "4.0.8" +version = "4.0.9" dependencies = [ "casper-runtime-constants", "frame-benchmarking", @@ -3757,7 +3757,7 @@ dependencies = [ [[package]] name = "ghost-helpers" -version = "0.0.10" +version = "0.0.11" dependencies = [ "frame-support", "ghost-traits", diff --git a/pallets/helpers/Cargo.toml b/pallets/helpers/Cargo.toml index ccc2879..54d2641 100644 --- a/pallets/helpers/Cargo.toml +++ b/pallets/helpers/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ghost-helpers" -version = "0.0.10" +version = "0.0.11" description = "Cryptographic utility suite for custom runtimes: optimized Bitmaps, UTXO parsing, Merkle Tree proofs, and Hash Chain components." license.workspace = true authors.workspace = true diff --git a/pallets/helpers/src/networks.rs b/pallets/helpers/src/networks.rs index 4d88ec2..671db61 100644 --- a/pallets/helpers/src/networks.rs +++ b/pallets/helpers/src/networks.rs @@ -175,27 +175,43 @@ pub struct NetworkClaim { pub proof_size: u32 } -impl NetworkClaim { +#[derive(Default)] +pub struct NetworkClaimBuilder { + network_id: Option, + merkle_root: Option, + amount: Option, + proof_size: Option +} + +impl NetworkClaimBuilder { pub fn with_amount(mut self, amount: Balance) -> Self { - self.amount = amount; + self.amount = Some(amount); self } pub fn with_network_id(mut self, network_id: NetworkId) -> Self { - self.network_id = network_id; + self.network_id = Some(network_id); self } pub fn with_merkle_root(mut self, merkle_root: H256) -> Self { - self.merkle_root = merkle_root; + self.merkle_root = Some(merkle_root); self } pub fn with_proof_size(mut self, proof_size: u32) -> Self { - self.proof_size = proof_size; + self.proof_size = Some(proof_size); self } + pub fn build(self) -> NetworkClaim { + NetworkClaim { + network_id: self.network_id.expect("NetworkClaim Error: missing network_id"), + amount: self.amount.expect("NetworkClaim Error: missing amount"), + merkle_root: self.merkle_root.expect("NetworkClaim Error: merkle_root"), + proof_size: self.proof_size.expect("NetworkClaim Error: missing proof_size"), + } + } } #[derive( diff --git a/runtime/casper/Cargo.toml b/runtime/casper/Cargo.toml index 55d9276..98a2278 100644 --- a/runtime/casper/Cargo.toml +++ b/runtime/casper/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "casper-runtime" -version = "4.0.8" +version = "4.0.9" build = "build.rs" description = "Runtime of the Casper Network" edition.workspace = true diff --git a/runtime/casper/src/genesis_config_presets.rs b/runtime/casper/src/genesis_config_presets.rs index a345e61..cbf2d0f 100644 --- a/runtime/casper/src/genesis_config_presets.rs +++ b/runtime/casper/src/genesis_config_presets.rs @@ -11,7 +11,7 @@ use grandpa_primitives::AuthorityId as GrandpaId; use hex_literal::hex; use sp_core::crypto::UncheckedFrom; -use sp_core::{sr25519, Pair, Public}; +use sp_core::{sr25519, H256, Pair, Public}; use sp_runtime::{traits::IdentifyAccount, Perbill}; #[cfg(not(feature = "std"))] use sp_std::alloc::format; @@ -22,7 +22,7 @@ use crate::{Balance, NetworkId}; use ghost_weaver::sr25519::AuthorityId as WeaverId; use ghost_exodus::sr25519::AuthorityId as ExodusId; -use ghost_helpers::networks::{NetworkClaim, NetworkInitiation}; +use ghost_helpers::networks::{NetworkClaim, NetworkClaimBuilder, NetworkInitiation}; #[derive(Clone)] pub struct AuthorityInitiation { @@ -336,11 +336,27 @@ pub fn casper_local_config_genesis() -> serde_json::Value { } pub fn casper_staging_config_genesis() -> serde_json::Value { + let initial_preclaims = vec![ + NetworkClaimBuilder::default() + .with_amount(1922500000000000000000u128.into()) + .with_network_id(11155111) + .with_merkle_root(H256::from_slice(&hex!("f8d8c981f214958cc2738bf068807c0f504f0e9a1d61ba5c8cd01bc7f9cc6d26"))) + .with_proof_size(8) + .build(), + + NetworkClaimBuilder::default() + .with_amount(18550200000000000000000u128.into()) + .with_network_id(7001) + .with_merkle_root(H256::from_slice(&hex!("793b300540c6530c24be7cc40b1ba91f0a586da8e180b98e91b055a9a12f45e2"))) + .with_proof_size(11) + .build(), + ]; + testnet_config_genesis( casper_staging_initial_authorities(), Default::default(), casper_testnet_networks(), - Default::default(), + initial_preclaims, ) }