diff --git a/pallets/governance/Cargo.toml b/pallets/governance/Cargo.toml index cfd25c6..5c00d88 100644 --- a/pallets/governance/Cargo.toml +++ b/pallets/governance/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ghost-governance" -version = "0.3.8" +version = "0.3.9" description = "Full-chain and cross-chain governance pallet with early adopter share claims" license.workspace = true authors.workspace = true diff --git a/pallets/governance/src/benchmarking.rs b/pallets/governance/src/benchmarking.rs index b464883..1c14255 100644 --- a/pallets/governance/src/benchmarking.rs +++ b/pallets/governance/src/benchmarking.rs @@ -32,7 +32,7 @@ mod benchmarks { let dummy_evm_address = EvmAddress::from(evm_addr_bytes); let target_index = max_proof_depth - 1; - let claim_package_init = ClaimPackage { + let claim_package_init = ClaimPackage:: { shares: dummy_shares, merkle_proof: Default::default(), token_id: 0, diff --git a/pallets/governance/src/lib.rs b/pallets/governance/src/lib.rs index f8101f1..850f8ed 100644 --- a/pallets/governance/src/lib.rs +++ b/pallets/governance/src/lib.rs @@ -36,8 +36,6 @@ mod benchmarking; mod mock; mod tests; -const MAX_POSSIBLE_PROOF_DEPTH: u32 = 18; - type TokenId = u128; type ClaimNonce = u8; type EvmHash = sp_core::H256; @@ -144,21 +142,36 @@ where } } -#[derive(Encode, Decode, Clone, RuntimeDebug, TypeInfo, PartialEq, Eq)] -pub struct ClaimPackage -where - Balance: Default + Copy + Clone, -{ +#[derive(Encode, Decode, RuntimeDebug, TypeInfo)] +#[scale_info(skip_type_params(T))] +pub struct ClaimPackage { pub index: u32, pub token_id: TokenId, - pub shares: Balance, - pub merkle_proof: BoundedVec>, + pub shares: BalanceOf, + pub merkle_proof: BoundedVec, } -impl ClaimPackage -where - Balance: Default + Copy + Clone + UniqueSaturatedInto, -{ +impl Clone for ClaimPackage { + fn clone(&self) -> Self { + Self { + index: self.index, + token_id: self.token_id, + shares: self.shares, + merkle_proof: self.merkle_proof.clone(), + } + } +} + +impl PartialEq for ClaimPackage { + fn eq(&self, other: &Self) -> bool { + self.index == other.index && + self.token_id == other.token_id && + self.shares == other.shares && + self.merkle_proof == other.merkle_proof + } +} + +impl ClaimPackage { pub fn get_preimage( &self, evm_address: &EvmAddress, @@ -333,7 +346,7 @@ pub mod pallet { pub fn claim( origin: OriginFor, network_id: NetworkIdOf, - claim_package: ClaimPackage>, + claim_package: ClaimPackage, evm_address: EvmAddress, evm_signature: EvmSignature, requested_shares: BalanceOf, @@ -425,7 +438,7 @@ impl Pallet { fn to_ascii_base10>(num: N) -> Vec { let zero = N::zero(); - if num == zero { return vec![b'0']; } + if num == zero { return sp_std::vec![b'0']; } let ten = N::from(10).unwrap_or_else(|| N::zero()); let num_u128 = num.unique_saturated_into(); @@ -519,7 +532,7 @@ impl Pallet { fn verify_merkle_proof( network_id: &NetworkIdOf, preimage: &[u8], - claim_package: &ClaimPackage>, + claim_package: &ClaimPackage, ) -> DispatchResult { let network_state = NetworkShares::::get(network_id); diff --git a/pallets/governance/src/mock.rs b/pallets/governance/src/mock.rs index 28d1fd3..5977b59 100644 --- a/pallets/governance/src/mock.rs +++ b/pallets/governance/src/mock.rs @@ -52,7 +52,7 @@ impl Config for Test { type NetworkDataHandler = Networks; type MinimumDonation = ConstU128<69>; - type MaxProofDepth = ConstU32<5>; + type MaxProofDepth = ConstU32<7>; type MaxPartialClaims = ConstU8<3>; type WeightInfo = (); diff --git a/pallets/governance/src/tests.rs b/pallets/governance/src/tests.rs index bf367ec..df37f4f 100644 --- a/pallets/governance/src/tests.rs +++ b/pallets/governance/src/tests.rs @@ -87,7 +87,7 @@ fn claim_happy_path() { |item: (u8, &NewTestUser)| -> Result<(usize, Vec), ()> { let (index, u) = item; - let tmp_package = ClaimPackage { + let tmp_package = ClaimPackage:: { shares: u.allowed_shares, merkle_proof: Default::default(), token_id: u.token_id, @@ -118,7 +118,7 @@ fn claim_happy_path() { let proof = generate_proof::(&merkle_tree, max_index, slot_index as u8); - let claim_package = ClaimPackage { + let claim_package = ClaimPackage:: { shares: current_user.allowed_shares, merkle_proof: BoundedVec::try_from(proof).unwrap(), token_id: current_user.token_id, @@ -211,7 +211,7 @@ fn partial_claims_happy_path() { |item: (u8, &NewTestUser)| -> Result<(usize, Vec), ()> { let (index, u) = item; - let tmp_package = ClaimPackage { + let tmp_package = ClaimPackage:: { shares: u.allowed_shares, merkle_proof: Default::default(), token_id: u.token_id,