Skip to content

Commit ee8778a

Browse files
committed
separated out types
1 parent e5664ef commit ee8778a

File tree

2 files changed

+75
-71
lines changed

2 files changed

+75
-71
lines changed

target_chains/stylus/contracts/wormhole/src/lib.rs

Lines changed: 2 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ fn panic(_info: &core::panic::PanicInfo) -> ! {
1111
loop {}
1212
}
1313

14+
mod types;
15+
use types::{GuardianSet, GuardianSignature, VerifiedVM, WormholeError};
1416

1517
use alloc::{vec, vec::Vec};
1618
use stylus_sdk::{
@@ -21,77 +23,6 @@ use stylus_sdk::{
2123

2224
use k256::ecdsa::{RecoveryId, Signature, VerifyingKey};
2325

24-
#[derive(Clone, PartialEq, Default)]
25-
pub struct GuardianSet {
26-
pub keys: Vec<Address>,
27-
pub expiration_time: u32,
28-
}
29-
30-
#[derive(Clone)]
31-
pub struct GuardianSignature {
32-
pub guardian_index: u8,
33-
pub signature: FixedBytes<65>,
34-
}
35-
36-
#[derive(Clone)]
37-
pub struct VerifiedVM {
38-
pub version: u8,
39-
pub guardian_set_index: u32,
40-
pub signatures: Vec<GuardianSignature>,
41-
pub timestamp: u32,
42-
pub nonce: u32,
43-
pub emitter_chain_id: u16,
44-
pub emitter_address: FixedBytes<32>,
45-
pub sequence: u64,
46-
pub consistency_level: u8,
47-
pub payload: Vec<u8>,
48-
pub hash: FixedBytes<32>,
49-
}
50-
51-
pub enum WormholeError {
52-
InvalidGuardianSetIndex,
53-
GuardianSetExpired,
54-
NoQuorum,
55-
InvalidSignatureOrder,
56-
InvalidSignature,
57-
InvalidVAAFormat,
58-
GovernanceActionConsumed,
59-
AlreadyInitialized,
60-
NotInitialized,
61-
InvalidInput,
62-
InsufficientSignatures,
63-
InvalidGuardianIndex,
64-
InvalidAddressLength,
65-
VerifyVAAError,
66-
}
67-
68-
impl core::fmt::Debug for WormholeError {
69-
fn fmt(&self, _: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
70-
Ok(())
71-
}
72-
}
73-
74-
impl From<WormholeError> for Vec<u8> {
75-
fn from(error: WormholeError) -> Vec<u8> {
76-
vec![match error {
77-
WormholeError::InvalidGuardianSetIndex => 1,
78-
WormholeError::GuardianSetExpired => 2,
79-
WormholeError::NoQuorum => 3,
80-
WormholeError::InvalidSignatureOrder => 4,
81-
WormholeError::InvalidSignature => 5,
82-
WormholeError::InvalidVAAFormat => 6,
83-
WormholeError::GovernanceActionConsumed => 7,
84-
WormholeError::AlreadyInitialized => 8,
85-
WormholeError::NotInitialized => 9,
86-
WormholeError::InvalidInput => 10,
87-
WormholeError::InsufficientSignatures => 11,
88-
WormholeError::InvalidGuardianIndex => 12,
89-
WormholeError::InvalidAddressLength => 13,
90-
WormholeError::VerifyVAAError => 14,
91-
}]
92-
}
93-
}
94-
9526
pub trait IWormhole {
9627
fn parse_and_verify_vm(&self, encoded_vaa: Vec<u8>) -> Result<VerifiedVM, WormholeError>;
9728
fn get_guardian_set(&self, index: u32) -> Option<GuardianSet>;
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
use alloc::{vec, vec::Vec};
2+
use stylus_sdk::alloy_primitives::{Address, FixedBytes};
3+
4+
#[derive(Clone, PartialEq, Default)]
5+
pub struct GuardianSet {
6+
pub keys: Vec<Address>,
7+
pub expiration_time: u32,
8+
}
9+
10+
#[derive(Clone)]
11+
pub struct GuardianSignature {
12+
pub guardian_index: u8,
13+
pub signature: FixedBytes<65>,
14+
}
15+
16+
#[derive(Clone)]
17+
pub struct VerifiedVM {
18+
pub version: u8,
19+
pub guardian_set_index: u32,
20+
pub signatures: Vec<GuardianSignature>,
21+
pub timestamp: u32,
22+
pub nonce: u32,
23+
pub emitter_chain_id: u16,
24+
pub emitter_address: FixedBytes<32>,
25+
pub sequence: u64,
26+
pub consistency_level: u8,
27+
pub payload: Vec<u8>,
28+
pub hash: FixedBytes<32>,
29+
}
30+
31+
pub enum WormholeError {
32+
InvalidGuardianSetIndex,
33+
GuardianSetExpired,
34+
NoQuorum,
35+
InvalidSignatureOrder,
36+
InvalidSignature,
37+
InvalidVAAFormat,
38+
GovernanceActionConsumed,
39+
AlreadyInitialized,
40+
NotInitialized,
41+
InvalidInput,
42+
InsufficientSignatures,
43+
InvalidGuardianIndex,
44+
InvalidAddressLength,
45+
VerifyVAAError,
46+
}
47+
48+
impl core::fmt::Debug for WormholeError {
49+
fn fmt(&self, _: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
50+
Ok(())
51+
}
52+
}
53+
54+
impl From<WormholeError> for Vec<u8> {
55+
fn from(error: WormholeError) -> Vec<u8> {
56+
vec![match error {
57+
WormholeError::InvalidGuardianSetIndex => 1,
58+
WormholeError::GuardianSetExpired => 2,
59+
WormholeError::NoQuorum => 3,
60+
WormholeError::InvalidSignatureOrder => 4,
61+
WormholeError::InvalidSignature => 5,
62+
WormholeError::InvalidVAAFormat => 6,
63+
WormholeError::GovernanceActionConsumed => 7,
64+
WormholeError::AlreadyInitialized => 8,
65+
WormholeError::NotInitialized => 9,
66+
WormholeError::InvalidInput => 10,
67+
WormholeError::InsufficientSignatures => 11,
68+
WormholeError::InvalidGuardianIndex => 12,
69+
WormholeError::InvalidAddressLength => 13,
70+
WormholeError::VerifyVAAError => 14,
71+
}]
72+
}
73+
}

0 commit comments

Comments
 (0)