sync bond creation arguments with solidity implementation

Signed-off-by: Uncle Stinky <uncle.stinky@ghostchain.io>
This commit is contained in:
Uncle Stinky 2026-09-24 13:34:17 +03:00
parent 8ef28234ae
commit 78bde93b7f
Signed by: st1nky
GPG Key ID: 016064BD97603B40
5 changed files with 20 additions and 23 deletions

View File

@ -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

View File

@ -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],

View File

@ -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;

View File

@ -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<ExodusSession> = ext.execute_with(|| {
ExodusRequests::<Runtime>::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],

View File

@ -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);
}
}
}