From 0375bd1434be17ef096a6fb9dd2a57091489a906 Mon Sep 17 00:00:00 2001 From: Uncle Stretch Date: Mon, 28 Jul 2025 23:53:11 +0300 Subject: [PATCH] preparation for the benchmarking of upgraded ghost-networks pallet Signed-off-by: Uncle Stretch --- pallets/networks/src/benchmarking.rs | 46 ++++++++++++++++++---------- service/src/chain_spec.rs | 8 +++-- 2 files changed, 36 insertions(+), 18 deletions(-) diff --git a/pallets/networks/src/benchmarking.rs b/pallets/networks/src/benchmarking.rs index d586bb7..c01eed4 100644 --- a/pallets/networks/src/benchmarking.rs +++ b/pallets/networks/src/benchmarking.rs @@ -8,12 +8,17 @@ use sp_runtime::Saturating; const MAX_NAME_LEN: u32 = 20; const MAX_ENDPOINT_LEN: u32 = 150; +const MAX_ENDPOINT_NUMBER: u32 = 20; fn assert_last_event(generic_event: ::RuntimeEvent) { frame_system::Pallet::::assert_last_event(generic_event.into()); } -fn prepare_network(n: u32, m: u32) -> (::NetworkId, NetworkData) { +fn prepare_network( + n: u32, + m: u32, + k: u32, +) -> (::NetworkId, NetworkData) { let chain_id: ::NetworkId = Default::default(); let chain_id = chain_id.saturating_add((n + m).into()); @@ -27,9 +32,14 @@ fn prepare_network(n: u32, m: u32) -> (::Network topic_name.push(i); } + let mut default_endpoints = sp_std::vec![]; + for _ in 0..(k as usize) { + default_endpoints.push(sp_std::vec![0x69; m as usize]); + } + let network = NetworkData { chain_name: sp_std::vec![0x69; n as usize], - default_endpoint: sp_std::vec![0x69; m as usize], + default_endpoints, gatekeeper, topic_name, network_type: NetworkType::Evm, @@ -69,8 +79,9 @@ benchmarks! { register_network { let i in 1 .. MAX_NAME_LEN; let j in 1 .. MAX_ENDPOINT_LEN; + let k in 1 .. MAX_ENDPOINT_NUMBER; - let (chain_id, network) = prepare_network::(i, j); + let (chain_id, network) = prepare_network::(i, j, k); let authority = T::RegisterOrigin::try_successful_origin() .map_err(|_| BenchmarkError::Weightless)?; let prev_network = GhostNetworks::::networks(chain_id.clone()); @@ -85,7 +96,7 @@ benchmarks! { update_network_name { let n in 1 .. MAX_NAME_LEN; let name = sp_std::vec![0x42; n as usize]; - let (chain_id, network) = prepare_network::(1, 1); + let (chain_id, network) = prepare_network::(1, 1, 1); let authority = T::UpdateOrigin::try_successful_origin() .map_err(|_| BenchmarkError::Weightless)?; let prev_network = create_network::(chain_id.clone(), network.clone())?; @@ -99,22 +110,25 @@ benchmarks! { update_network_endpoint { let n in 1 .. MAX_ENDPOINT_LEN; + let index_to_update = 0u32; let endpoint = sp_std::vec![0x42; n as usize]; - let (chain_id, network) = prepare_network::(1, 1); + let (chain_id, network) = prepare_network::(1, 1, 1); let authority = T::UpdateOrigin::try_successful_origin() .map_err(|_| BenchmarkError::Weightless)?; let prev_network = create_network::(chain_id.clone(), network.clone())?; - }: _(authority, chain_id.clone(), endpoint.clone()) + }: _(authority, chain_id.clone(), Some(index_to_update), Some(endpoint.clone())) verify { assert_last_event::(Event::NetworkEndpointUpdated { - chain_id: chain_id.clone(), default_endpoint: endpoint, + chain_id: chain_id.clone(), + index: index_to_update, + endpoint, }.into()); assert_ne!(GhostNetworks::::networks(chain_id.clone()), prev_network); } update_network_finality_delay { let delay = 1337; - let (chain_id, network) = prepare_network::(1, 1); + let (chain_id, network) = prepare_network::(1, 1, 1); let authority = T::UpdateOrigin::try_successful_origin() .map_err(|_| BenchmarkError::Weightless)?; let prev_network = create_network::(chain_id.clone(), network.clone())?; @@ -128,7 +142,7 @@ benchmarks! { update_network_rate_limit_delay { let rate_limit = 1337; - let (chain_id, network) = prepare_network::(1, 1); + let (chain_id, network) = prepare_network::(1, 1, 1); let authority = T::UpdateOrigin::try_successful_origin() .map_err(|_| BenchmarkError::Weightless)?; let prev_network = create_network::(chain_id.clone(), network.clone())?; @@ -142,7 +156,7 @@ benchmarks! { update_network_block_distance { let block_distance = 1337; - let (chain_id, network) = prepare_network::(1, 1); + let (chain_id, network) = prepare_network::(1, 1, 1); let authority = T::UpdateOrigin::try_successful_origin() .map_err(|_| BenchmarkError::Weightless)?; let prev_network = create_network::(chain_id.clone(), network.clone())?; @@ -156,7 +170,7 @@ benchmarks! { update_network_type { let network_type = NetworkType::Utxo; - let (chain_id, network) = prepare_network::(1, 1); + let (chain_id, network) = prepare_network::(1, 1, 1); let authority = T::UpdateOrigin::try_successful_origin() .map_err(|_| BenchmarkError::Weightless)?; let prev_network = create_network::(chain_id.clone(), network.clone())?; @@ -171,7 +185,7 @@ benchmarks! { update_network_gatekeeper { let mut gatekeeper = b"0x".to_vec(); for i in 0..40 { gatekeeper.push(i + 1); } - let (chain_id, network) = prepare_network::(1, 1); + let (chain_id, network) = prepare_network::(1, 1, 1); let authority = T::UpdateOrigin::try_successful_origin() .map_err(|_| BenchmarkError::Weightless)?; let prev_network = create_network::(chain_id.clone(), network.clone())?; @@ -185,7 +199,7 @@ benchmarks! { update_network_topic_name { let topic_name = b"0x9876543219876543219876543219876543219876543219876543219876543219".to_vec(); - let (chain_id, network) = prepare_network::(1, 1); + let (chain_id, network) = prepare_network::(1, 1, 1); let authority = T::UpdateOrigin::try_successful_origin() .map_err(|_| BenchmarkError::Weightless)?; let prev_network = create_network::(chain_id.clone(), network.clone())?; @@ -199,7 +213,7 @@ benchmarks! { update_incoming_network_fee { let incoming_fee = 1337; - let (chain_id, network) = prepare_network::(1, 1); + let (chain_id, network) = prepare_network::(1, 1, 1); let authority = T::UpdateOrigin::try_successful_origin() .map_err(|_| BenchmarkError::Weightless)?; let prev_network = create_network::(chain_id.clone(), network.clone())?; @@ -213,7 +227,7 @@ benchmarks! { update_outgoing_network_fee { let outgoing_fee = 1337; - let (chain_id, network) = prepare_network::(1, 1); + let (chain_id, network) = prepare_network::(1, 1, 1); let authority = T::UpdateOrigin::try_successful_origin() .map_err(|_| BenchmarkError::Weightless)?; let prev_network = create_network::(chain_id.clone(), network.clone())?; @@ -226,7 +240,7 @@ benchmarks! { } remove_network { - let (chain_id, network) = prepare_network::(1, 1); + let (chain_id, network) = prepare_network::(1, 1, 1); let authority = T::RemoveOrigin::try_successful_origin() .map_err(|_| BenchmarkError::Weightless)?; let prev_network = create_network::(chain_id.clone(), network.clone())?; diff --git a/service/src/chain_spec.rs b/service/src/chain_spec.rs index 6afcc5a..6c1ca35 100644 --- a/service/src/chain_spec.rs +++ b/service/src/chain_spec.rs @@ -176,7 +176,9 @@ fn casper_testnet_evm_networks() -> Vec<(u32, Vec)> { vec![ (1, ghost_networks::NetworkData { chain_name: "ethereum-mainnet".into(), - default_endpoint: "https://nd-422-757-666.p2pify.com/0a9d79d93fb2f4a4b1e04695da2b77a7/".into(), + default_endpoint: vec![ + "https://nd-422-757-666.p2pify.com/0a9d79d93fb2f4a4b1e04695da2b77a7/".into(), + ], finality_delay: 40u64, rate_limit_delay: 1_000u64, block_distance: 50u64, @@ -188,7 +190,9 @@ fn casper_testnet_evm_networks() -> Vec<(u32, Vec)> { }.encode()), (56, ghost_networks::NetworkData { chain_name: "bnb-mainnet".into(), - default_endpoint: "https://bsc-mainnet.core.chainstack.com/35848e183f3e3303c8cfeacbea831cab/".into(), + default_endpoint: vec![ + "https://bsc-mainnet.core.chainstack.com/35848e183f3e3303c8cfeacbea831cab/".into(), + ], finality_delay: 20u64, rate_limit_delay: 1_000u64, block_distance: 50u64,