From 2e69f79c316371a1d55d404e72f27a3f27fdaafc Mon Sep 17 00:00:00 2001 From: 4meta5 Date: Fri, 19 Jul 2024 17:46:04 -0400 Subject: [PATCH] init required changes not complete --- Cargo.lock | 1 + pallets/shards/Cargo.toml | 9 ++++--- pallets/shards/src/benchmarking.rs | 41 ++++++++++++++++++++++-------- pallets/shards/src/lib.rs | 10 +++++--- 4 files changed, 43 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 278201445..15026f4b6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10425,6 +10425,7 @@ dependencies = [ "frame-system", "log", "pallet-balances", + "pallet-members", "parity-scale-codec", "scale-info", "schnorr-evm", diff --git a/pallets/shards/Cargo.toml b/pallets/shards/Cargo.toml index 43cc4e060..a7c6bf50f 100644 --- a/pallets/shards/Cargo.toml +++ b/pallets/shards/Cargo.toml @@ -23,11 +23,13 @@ scale-info.workspace = true frame-support = { git = "https://github.com/analog-labs/polkadot-sdk", tag = "v1.13.0-patched", default-features = false } frame-system = { git = "https://github.com/analog-labs/polkadot-sdk", tag = "v1.13.0-patched", default-features = false } +sp-core = { git = "https://github.com/analog-labs/polkadot-sdk", tag = "v1.13.0-patched", default-features = false } sp-runtime = { git = "https://github.com/analog-labs/polkadot-sdk", tag = "v1.13.0-patched", default-features = false } sp-std = { git = "https://github.com/analog-labs/polkadot-sdk", tag = "v1.13.0-patched", default-features = false } frame-benchmarking = { git = "https://github.com/analog-labs/polkadot-sdk", tag = "v1.13.0-patched", default-features = false, optional = true } - +pallet-balances = { git = "https://github.com/analog-labs/polkadot-sdk", tag = "v1.13.0-patched", default-features = false } +pallet-members = { path = "../members", default-features = false } schnorr-evm = { version = "0.1.2", default-features = false } time-primitives = { path = "../../primitives", default-features = false } @@ -37,7 +39,6 @@ simple-mermaid.workspace = true [dev-dependencies] #polkadot-sdk = { workspace = true, features = [ "pallet-balances", "sp-core", "sp-io" ] } -pallet-balances = { git = "https://github.com/analog-labs/polkadot-sdk", tag = "v1.13.0-patched", default-features = false } sp-core = { git = "https://github.com/analog-labs/polkadot-sdk", tag = "v1.13.0-patched", default-features = false } sp-io = { git = "https://github.com/analog-labs/polkadot-sdk", tag = "v1.13.0-patched", default-features = false } @@ -50,12 +51,14 @@ std = [ #"polkadot-sdk/std", "frame-support/std", "frame-system/std", + "sp-core/std", "sp-runtime/std", "sp-std/std", "frame-benchmarking?/std", "schnorr-evm/std", "time-primitives/std", - "pallet-balances/std" + "pallet-balances/std", + "pallet-members/std" ] runtime-benchmarks = [ #"polkadot-sdk/runtime-benchmarks", diff --git a/pallets/shards/src/benchmarking.rs b/pallets/shards/src/benchmarking.rs index b66f7f12a..293a5a4c8 100644 --- a/pallets/shards/src/benchmarking.rs +++ b/pallets/shards/src/benchmarking.rs @@ -1,6 +1,7 @@ use super::*; use crate::Pallet; use frame_benchmarking::benchmarks; +use frame_support::traits::Get; use frame_system::RawOrigin; use sp_std::vec; use sp_std::vec::Vec; @@ -9,7 +10,11 @@ pub const ALICE: [u8; 32] = [1u8; 32]; pub const BOB: [u8; 32] = [2u8; 32]; pub const CHARLIE: [u8; 32] = [3u8; 32]; pub const ETHEREUM: NetworkId = 0; -use time_primitives::{Commitment, ProofOfKnowledge}; +use time_primitives::{Commitment, ProofOfKnowledge, PublicKey}; + +fn public_key(acc: [u8; 32]) -> PublicKey { + PublicKey::Sr25519(sp_core::sr25519::Public::from_raw(acc)) +} /// Since benchmarks are no-std and we need std computation on constructing proof so /// these values are taken by running the code in pallets/shards/src/tests.rs @@ -69,19 +74,27 @@ pub fn get_proof_of_knowledge(member: [u8; 32]) -> ProofOfKnowledge { } benchmarks! { + where_clause { where T: pallet_members::Config } commit { - let shard: Vec = vec![ALICE.into(), BOB.into(), CHARLIE.into()]; - Pallet::::create_shard(ETHEREUM, shard.clone(), 1); - let alice: AccountId = ALICE.into(); + let shard: Vec<[u8; 32]> = vec![ALICE, BOB, CHARLIE]; + Pallet::::create_shard(ETHEREUM, shard.clone().into_iter().map(|x| x.into()).collect::>(), 1); + let alice: AccountId = ALICE; // benchmark commitment that changes shard status for member in shard { - // TODO: must set the member_peer_id - if member != alice { + pallet_members::Pallet::::register_member( + RawOrigin::Signed(member.into().clone()).into(), + ETHEREUM, + public_key(member), + member, + ::MinStake::get(), + )?; + if member != ALICE { + let member_account: AccountId = member.into(); Pallet::::commit( - RawOrigin::Signed(member.clone()).into(), + RawOrigin::Signed(member_account.clone()).into(), 0, - get_commitment(member.clone().into()), - get_proof_of_knowledge(member.into()), + get_commitment(member_account.clone().into()), + get_proof_of_knowledge(member_account.into()), )?; } } @@ -92,9 +105,14 @@ benchmarks! { ready { let shard: Vec = vec![ALICE.into(), BOB.into(), CHARLIE.into()]; Pallet::::create_shard(ETHEREUM, shard.clone(), 1); - let alice: AccountId = ALICE.into(); for member in shard.clone() { - // TODO: must set the member_peer_id + // pallet_members::Pallet::::register_member( + // RawOrigin::Signed(member.clone()).into(), + // ETHEREUM, + // public_key(member), + // member, + // ::MinStake::get(), + // )?; Pallet::::commit( RawOrigin::Signed(member.clone()).into(), 0, @@ -102,6 +120,7 @@ benchmarks! { get_proof_of_knowledge(member.into()), )?; } + let alice: AccountId = ALICE.into(); // benchmark ready that changes shard status for member in shard { if member != alice { diff --git a/pallets/shards/src/lib.rs b/pallets/shards/src/lib.rs index 436d9979c..60d042e6c 100644 --- a/pallets/shards/src/lib.rs +++ b/pallets/shards/src/lib.rs @@ -81,9 +81,9 @@ pub mod pallet { use sp_std::vec; use sp_std::vec::Vec; use time_primitives::{ - AccountId, Commitment, ElectionsInterface, MemberEvents, MemberStatus, MemberStorage, - NetworkId, ProofOfKnowledge, PublicKey, ShardId, ShardStatus, ShardsInterface, - TasksInterface, TssPublicKey, + AccountId, Balance, Commitment, ElectionsInterface, MemberEvents, MemberStatus, + MemberStorage, NetworkId, ProofOfKnowledge, PublicKey, ShardId, ShardStatus, + ShardsInterface, TasksInterface, TssPublicKey, }; /// Trait to define the weights for various extrinsics in the pallet. @@ -117,7 +117,9 @@ pub mod pallet { pub struct Pallet(_); #[pallet::config] - pub trait Config: frame_system::Config { + pub trait Config: + frame_system::Config + pallet_balances::Config + { type RuntimeEvent: From> + IsType<::RuntimeEvent>; type WeightInfo: WeightInfo; type Elections: ElectionsInterface;