add setBondDepository to EVM governance requests

Signed-off-by: Uncle Stinky <uncle.stinky@ghostchain.io>
This commit is contained in:
Uncle Stinky 2026-10-21 19:50:38 +03:00
parent ab7f978ccc
commit 6df2088756
Signed by: st1nky
GPG Key ID: 016064BD97603B40
2 changed files with 30 additions and 9 deletions

View File

@ -1,6 +1,6 @@
[package] [package]
name = "ghost-exodus" name = "ghost-exodus"
version = "0.1.1" version = "0.1.2"
description = "Threshold signature generation with DKG included" description = "Threshold signature generation with DKG included"
license.workspace = true license.workspace = true
authors.workspace = true authors.workspace = true

View File

@ -188,6 +188,7 @@ pub enum GovernanceAction {
ForfeitReserves { router: EvmAddress, liquidity: u128, destroyer_mode: bool }, ForfeitReserves { router: EvmAddress, liquidity: u128, destroyer_mode: bool },
RedeemReserves { router: EvmAddress, amount: u128 }, RedeemReserves { router: EvmAddress, amount: u128 },
Withdraw { token: EvmAddress, amount: u128 }, Withdraw { token: EvmAddress, amount: u128 },
SetBondDepository { address: EvmAddress },
AuditReserves, AuditReserves,
Close { id: u128 }, Close { id: u128 },
@ -290,6 +291,13 @@ impl GovernanceAction {
[token, amount] [token, amount]
) )
}, },
Self::SetBondDepository { address } => {
abi_encode_evm_message!(
message_buffer,
"setBondDepository(address)",
[address]
)
},
Self::AuditReserves => { Self::AuditReserves => {
abi_encode_evm_message!(message_buffer, "auditReserves()", []) abi_encode_evm_message!(message_buffer, "auditReserves()", [])
}, },
@ -681,7 +689,8 @@ mod tests {
GovernanceAction::SetWarmupPeriod { warmup_period } => { GovernanceAction::SetWarmupPeriod { warmup_period } => {
let hash = keccak_256("setWarmupPeriod(uint256)".as_bytes()); let hash = keccak_256("setWarmupPeriod(uint256)".as_bytes());
assert_eq!(inner_payload[0..4], hash[0..4]); assert_eq!(inner_payload[0..4], hash[0..4]);
assert_eq!(inner_payload[inner_payload.len() - 1], warmup_period as u8); let decoded_warmup = u32::from_be_bytes(inner_payload[32..36].try_into().unwrap());
assert_eq!(decoded_warmup, warmup_period as u32);
}, },
GovernanceAction::UpdateGatekeeperAddress { new_gatekeeper } => { GovernanceAction::UpdateGatekeeperAddress { new_gatekeeper } => {
let hash = keccak_256("updateGatekeeperAddress(address)".as_bytes()); let hash = keccak_256("updateGatekeeperAddress(address)".as_bytes());
@ -691,7 +700,8 @@ mod tests {
GovernanceAction::SetBounty { bounty } => { GovernanceAction::SetBounty { bounty } => {
let hash = keccak_256("setBounty(uint256)".as_bytes()); let hash = keccak_256("setBounty(uint256)".as_bytes());
assert_eq!(inner_payload[0..4], hash[0..4]); assert_eq!(inner_payload[0..4], hash[0..4]);
assert_eq!(inner_payload[inner_payload.len() - 1], bounty as u8); let decoded_bounty = u32::from_be_bytes(inner_payload[32..36].try_into().unwrap());
assert_eq!(decoded_bounty, bounty as u32);
}, },
GovernanceAction::AddPool { address } => { GovernanceAction::AddPool { address } => {
let hash = keccak_256("addPool(address)".as_bytes()); let hash = keccak_256("addPool(address)".as_bytes());
@ -701,13 +711,16 @@ mod tests {
GovernanceAction::RemovePool { index } => { GovernanceAction::RemovePool { index } => {
let hash = keccak_256("removePool(uint256)".as_bytes()); let hash = keccak_256("removePool(uint256)".as_bytes());
assert_eq!(inner_payload[0..4], hash[0..4]); assert_eq!(inner_payload[0..4], hash[0..4]);
assert_eq!(inner_payload[inner_payload.len() - 1], index as u8); let decoded_index = u32::from_be_bytes(inner_payload[32..36].try_into().unwrap());
assert_eq!(decoded_index, index as u32);
}, },
GovernanceAction::SetAdjustment { rate, target, add } => { GovernanceAction::SetAdjustment { rate, target, add } => {
let hash = keccak_256("setAdjustment(uint256,uint256,bool)".as_bytes()); let hash = keccak_256("setAdjustment(uint256,uint256,bool)".as_bytes());
assert_eq!(inner_payload[0..4], hash[0..4]); assert_eq!(inner_payload[0..4], hash[0..4]);
assert_eq!(inner_payload[35], rate as u8); let decoded_rate = u32::from_be_bytes(inner_payload[32..36].try_into().unwrap());
assert_eq!(inner_payload[67], target as u8); assert_eq!(decoded_rate, rate as u32);
let decoded_target = u32::from_be_bytes(inner_payload[64..68].try_into().unwrap());
assert_eq!(decoded_target, target as u32);
assert_eq!(inner_payload[99], add as u8); assert_eq!(inner_payload[99], add as u8);
}, },
GovernanceAction::Enable { status, address, calculator } => { GovernanceAction::Enable { status, address, calculator } => {
@ -727,7 +740,8 @@ mod tests {
let hash = keccak_256("forfeitReserves(address,uint256,bool)".as_bytes()); let hash = keccak_256("forfeitReserves(address,uint256,bool)".as_bytes());
assert_eq!(inner_payload[0..4], hash[0..4]); assert_eq!(inner_payload[0..4], hash[0..4]);
assert_eq!(&inner_payload[16..36], router.as_ref()); assert_eq!(&inner_payload[16..36], router.as_ref());
assert_eq!(inner_payload[67], liquidity as u8); let decoded_liquidity = u32::from_be_bytes(inner_payload[64..68].try_into().unwrap());
assert_eq!(decoded_liquidity, liquidity as u32);
assert_eq!(inner_payload[99], destroyer_mode as u8); assert_eq!(inner_payload[99], destroyer_mode as u8);
}, },
GovernanceAction::RedeemReserves { router, amount } => { GovernanceAction::RedeemReserves { router, amount } => {
@ -740,7 +754,13 @@ mod tests {
let hash = keccak_256("withdraw(address,uint256)".as_bytes()); let hash = keccak_256("withdraw(address,uint256)".as_bytes());
assert_eq!(inner_payload[0..4], hash[0..4]); assert_eq!(inner_payload[0..4], hash[0..4]);
assert_eq!(&inner_payload[16..36], token.as_ref()); assert_eq!(&inner_payload[16..36], token.as_ref());
assert_eq!(inner_payload[67], amount as u8); let decoded_amount = u32::from_be_bytes(inner_payload[64..68].try_into().unwrap());
assert_eq!(decoded_amount, amount as u32);
},
GovernanceAction::SetBondDepository { address } => {
let hash = keccak_256("setBondDepository(address)".as_bytes());
assert_eq!(inner_payload[0..4], hash[0..4]);
assert_eq!(&inner_payload[16..36], address.as_ref());
}, },
GovernanceAction::AuditReserves => { GovernanceAction::AuditReserves => {
let hash = keccak_256("auditReserves()".as_bytes()); let hash = keccak_256("auditReserves()".as_bytes());
@ -750,7 +770,8 @@ mod tests {
GovernanceAction::Close { id } => { GovernanceAction::Close { id } => {
let hash = keccak_256("close(uint256)".as_bytes()); let hash = keccak_256("close(uint256)".as_bytes());
assert_eq!(inner_payload[0..4], hash[0..4]); assert_eq!(inner_payload[0..4], hash[0..4]);
assert_eq!(inner_payload[inner_payload.len() - 1], id as u8); let decoded_id = u32::from_be_bytes(inner_payload[32..36].try_into().unwrap());
assert_eq!(decoded_id, id as u32);
}, },
GovernanceAction::Create { market, terms, token, intervals, booleans } => { GovernanceAction::Create { market, terms, token, intervals, booleans } => {
let hash = keccak_256("create(uint256[4],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());