From 78bde93b7fd4d0901a98b91f353ed4260f08bc0d Mon Sep 17 00:00:00 2001 From: Uncle Stinky Date: Thu, 24 Sep 2026 13:34:17 +0300 Subject: [PATCH] sync bond creation arguments with solidity implementation Signed-off-by: Uncle Stinky --- pallets/exodus/Cargo.toml | 2 +- pallets/exodus/src/benchmarking.rs | 6 ++--- pallets/exodus/src/lib.rs | 2 +- pallets/exodus/src/tests.rs | 6 +---- pallets/exodus/src/types/exodus_request.rs | 27 +++++++++++----------- 5 files changed, 20 insertions(+), 23 deletions(-) diff --git a/pallets/exodus/Cargo.toml b/pallets/exodus/Cargo.toml index a18d257..11ce536 100644 --- a/pallets/exodus/Cargo.toml +++ b/pallets/exodus/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ghost-exodus" -version = "0.0.13" +version = "0.0.14" description = "Threshold signature generation with DKG included" license.workspace = true authors.workspace = true diff --git a/pallets/exodus/src/benchmarking.rs b/pallets/exodus/src/benchmarking.rs index 794014b..2da947c 100644 --- a/pallets/exodus/src/benchmarking.rs +++ b/pallets/exodus/src/benchmarking.rs @@ -488,7 +488,7 @@ mod benchmarks { let dummy_nonce = vec![0u8; network_curve.element_bytes_len()]; let create_bond = GovernanceAction::Create { - market: [69, 420, 1337], + market: [69, 420, 1337, 0], terms: [420, 1337], token: dummy_address, intervals: [34, 35], @@ -566,7 +566,7 @@ mod benchmarks { let dummy_group_commitment = vec![0u8; network_curve.element_bytes_len()]; let create_bond = GovernanceAction::Create { - market: [69, 420, 1337], + market: [69, 420, 1337, 0], terms: [420, 1337], token: dummy_address, intervals: [34, 35], @@ -664,7 +664,7 @@ mod benchmarks { let dummy_address = EvmAddress::repeat_byte(69); let create_bond = GovernanceAction::Create { - market: [69, 420, 1337], + market: [69, 420, 1337, 0], terms: [420, 1337], token: dummy_address, intervals: [34, 35], diff --git a/pallets/exodus/src/lib.rs b/pallets/exodus/src/lib.rs index 47e37d5..72a0a6f 100644 --- a/pallets/exodus/src/lib.rs +++ b/pallets/exodus/src/lib.rs @@ -109,7 +109,7 @@ const EXODUS_PREFIX_SHARES: &[u8] = b"exodus-shares"; const EXODUS_PREFIX_BLENDS: &[u8] = b"exodus-blends"; const EXODUS_PREFIX_EXILES: &[u8] = b"exodus-exiles"; -const MAX_MESSAGE_SIZE : u32 = 512; +const MAX_MESSAGE_SIZE : u32 = 544; const HEADER_MAX_BYTES : u32 = 1 + 4; const ELEMENT_MAX_BYTES : u32 = 33; const SCALAR_MAX_BYTES : u32 = 32; diff --git a/pallets/exodus/src/tests.rs b/pallets/exodus/src/tests.rs index c1569b4..62e0bd1 100644 --- a/pallets/exodus/src/tests.rs +++ b/pallets/exodus/src/tests.rs @@ -854,11 +854,7 @@ fn run_dkg_session( let throttled = prev_authorities.last().copied().unwrap(); let prev_len = prev_authorities.len() as AuthIndex; - let mut start = 0; loop { - if start >= 100 { break; } - start += 1; - let mut current_pending_requests: Vec = ext.execute_with(|| { ExodusRequests::::iter_keys() .filter_map(|(current_curve, exodus_session)| { @@ -1070,7 +1066,7 @@ fn test_all_validators_can_execute_dkg() { let remove_pool = GovernanceAction::RemovePool { index: 1337 }; let close = GovernanceAction::Close { id: 420 }; let create = GovernanceAction::Create { - market: [69, 420, 1337], + market: [69, 420, 1337, 0], terms: [420, 1337], token: dummy_address, intervals: [34, 35], diff --git a/pallets/exodus/src/types/exodus_request.rs b/pallets/exodus/src/types/exodus_request.rs index 3846eca..17084a1 100644 --- a/pallets/exodus/src/types/exodus_request.rs +++ b/pallets/exodus/src/types/exodus_request.rs @@ -133,7 +133,7 @@ macro_rules! impl_evm_encodable { impl_evm_encodable!(numeric: u8, u16, u32, u64, u128); impl_evm_encodable!(bytes_fixed: EvmAddress, EvmBytes32); -impl_evm_encodable!(const_array: [u128; 3], [u128; 2], [u32; 2], [u8; 2]); +impl_evm_encodable!(const_array: [u128; 4], [u128; 2], [u32; 2], [u8; 2]); impl_evm_encodable!(bytes_slice:); macro_rules! abi_encode_evm_message { @@ -192,7 +192,7 @@ pub enum GovernanceAction { Close { id: u128 }, Create { - market: [u128; 3], + market: [u128; 4], terms: [u128; 2], token: EvmAddress, intervals: [u32; 2], @@ -300,7 +300,7 @@ impl GovernanceAction { let booleans_u8 = [booleans[0] as u8, booleans[1] as u8]; abi_encode_evm_message!( message_buffer, - "create(uint256[3],uint256[2],address,uint32[2],bool[2])", + "create(uint256[4],uint256[2],address,uint32[2],bool[2])", [market, terms, token, intervals, &booleans_u8] ) }, @@ -582,7 +582,7 @@ mod tests { GovernanceAction::Close { id: 99 }, GovernanceAction::Create { - market: [69, 420, 1337], + market: [69, 420, 1337, 0], terms: [69, 420], token: EvmAddress::repeat_byte(0x99), intervals: [69, 1337], @@ -706,25 +706,26 @@ mod tests { assert_eq!(inner_payload[inner_payload.len() - 1], id as u8); }, GovernanceAction::Create { market, terms, token, intervals, booleans } => { - let hash = keccak_256("create(uint256[3],uint256[2],address,uint32[2],bool[2])".as_bytes()); + let hash = keccak_256("create(uint256[4],uint256[2],address,uint32[2],bool[2])".as_bytes()); assert_eq!(inner_payload[0..4], hash[0..4]); - assert_eq!(inner_payload.len(), 324); + assert_eq!(inner_payload.len(), 356); assert_eq!(inner_payload[35], 69); assert_eq!(u128::from_be_bytes(inner_payload[20..36].try_into().unwrap()), market[0]); assert_eq!(u128::from_be_bytes(inner_payload[52..68].try_into().unwrap()), market[1]); assert_eq!(u128::from_be_bytes(inner_payload[84..100].try_into().unwrap()), market[2]); + assert_eq!(u128::from_be_bytes(inner_payload[116..132].try_into().unwrap()), market[3]); - assert_eq!(u128::from_be_bytes(inner_payload[116..132].try_into().unwrap()), terms[0]); - assert_eq!(u128::from_be_bytes(inner_payload[148..164].try_into().unwrap()), terms[1]); + assert_eq!(u128::from_be_bytes(inner_payload[148..164].try_into().unwrap()), terms[0]); + assert_eq!(u128::from_be_bytes(inner_payload[180..196].try_into().unwrap()), terms[1]); - assert_eq!(&inner_payload[176..196], token.as_ref()); + assert_eq!(&inner_payload[208..228], token.as_ref()); - assert_eq!(u32::from_be_bytes(inner_payload[224..228].try_into().unwrap()), intervals[0]); - assert_eq!(u32::from_be_bytes(inner_payload[256..260].try_into().unwrap()), intervals[1]); + assert_eq!(u32::from_be_bytes(inner_payload[256..260].try_into().unwrap()), intervals[0]); + assert_eq!(u32::from_be_bytes(inner_payload[288..292].try_into().unwrap()), intervals[1]); - assert_eq!(inner_payload[291], booleans[0] as u8); - assert_eq!(inner_payload[323], booleans[1] as u8); + assert_eq!(inner_payload[323], booleans[0] as u8); + assert_eq!(inner_payload[355], booleans[1] as u8); } } }