Change serialize hierarchy for Governance

Change-Id: Id5581f84e9d325e1546f1690ba977b7470915491
This commit is contained in:
Reisen 2021-07-23 14:13:47 +00:00 committed by Hendrik Hofstadt
parent 5e37afdb82
commit 64c1d86e4d
5 changed files with 39 additions and 15 deletions

View File

@ -151,7 +151,7 @@ pub fn verify_signatures(
);
let signature_set = SignatureSet::<'_, { AccountState::Uninitialized }>::key(
&SignatureSetDerivationData { hash: hash },
&SignatureSetDerivationData { hash },
&program_id,
);

View File

@ -43,8 +43,10 @@ pub use api::{
};
pub use vaa::{
DeserializeGovernancePayload,
DeserializePayload,
PayloadMessage,
SerializeGovernancePayload,
SerializePayload,
};

View File

@ -1,6 +1,7 @@
use crate::{
api::ForeignAddress,
vaa::{
SerializeGovernancePayload,
DeserializeGovernancePayload,
DeserializePayload,
SerializePayload,
@ -248,11 +249,14 @@ where
}
}
impl DeserializeGovernancePayload for GovernancePayloadUpgrade {
impl SerializeGovernancePayload for GovernancePayloadUpgrade {
const MODULE: &'static str = "Core";
const ACTION: u8 = 1;
}
impl DeserializeGovernancePayload for GovernancePayloadUpgrade {
}
pub struct GovernancePayloadGuardianSetChange {
// New GuardianSetIndex
pub new_guardian_set_index: u32,
@ -298,11 +302,14 @@ where
}
}
impl DeserializeGovernancePayload for GovernancePayloadGuardianSetChange {
impl SerializeGovernancePayload for GovernancePayloadGuardianSetChange {
const MODULE: &'static str = "Core";
const ACTION: u8 = 2;
}
impl DeserializeGovernancePayload for GovernancePayloadGuardianSetChange {
}
pub struct GovernancePayloadSetMessageFee {
// New fee in lamports
pub fee: U256,
@ -334,11 +341,14 @@ where
}
}
impl DeserializeGovernancePayload for GovernancePayloadSetMessageFee {
impl SerializeGovernancePayload for GovernancePayloadSetMessageFee {
const MODULE: &'static str = "Core";
const ACTION: u8 = 3;
}
impl DeserializeGovernancePayload for GovernancePayloadSetMessageFee {
}
pub struct GovernancePayloadTransferFees {
// Amount to be transferred
pub amount: U256,
@ -376,11 +386,14 @@ where
}
}
impl DeserializeGovernancePayload for GovernancePayloadTransferFees {
impl SerializeGovernancePayload for GovernancePayloadTransferFees {
const MODULE: &'static str = "Core";
const ACTION: u8 = 4;
}
impl DeserializeGovernancePayload for GovernancePayloadTransferFees {
}
#[repr(u8)]
#[derive(BorshSerialize, BorshDeserialize, Clone)]
pub enum ConsistencyLevel {

View File

@ -39,8 +39,24 @@ use std::{
ops::Deref,
};
pub trait SerializePayload: Sized + DeserializeGovernancePayload {
pub trait SerializePayload: Sized {
fn serialize<W: Write>(&self, writer: &mut W) -> std::result::Result<(), SolitaireError>;
fn try_to_vec(&self) -> std::result::Result<Vec<u8>, SolitaireError> {
let mut result = Vec::with_capacity(256);
self.serialize(&mut result)?;
Ok(result)
}
}
pub trait DeserializePayload: Sized {
fn deserialize(buf: &mut &[u8]) -> std::result::Result<Self, SolitaireError>;
}
pub trait SerializeGovernancePayload: SerializePayload {
const MODULE: &'static str;
const ACTION: u8;
fn try_to_vec(&self) -> std::result::Result<Vec<u8>, SolitaireError> {
let mut result = Vec::with_capacity(256);
self.write_governance_header(&mut result)?;
@ -62,14 +78,7 @@ pub trait SerializePayload: Sized + DeserializeGovernancePayload {
}
}
pub trait DeserializePayload: Sized {
fn deserialize(buf: &mut &[u8]) -> std::result::Result<Self, SolitaireError>;
}
pub trait DeserializeGovernancePayload {
const MODULE: &'static str;
const ACTION: u8;
pub trait DeserializeGovernancePayload: DeserializePayload + SerializeGovernancePayload {
fn check_governance_header(
c: &mut Cursor<&mut &[u8]>,
) -> std::result::Result<(), SolitaireError> {

View File

@ -83,7 +83,7 @@ use bridge::{
Initialize,
PostVAA,
PostVAAData,
SerializePayload,
SerializeGovernancePayload,
Signature,
};
use primitive_types::U256;