Skip to content

Commit 0a219fb

Browse files
committed
refactor(target_chains/starknet): errors modules, reexport errors
1 parent 30c741e commit 0a219fb

File tree

2 files changed

+22
-20
lines changed

2 files changed

+22
-20
lines changed

target_chains/starknet/contracts/src/reader.cairo

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use core::integer::u128_byte_reverse;
55
use core::fmt::{Debug, Formatter};
66
use pyth::util::{UNEXPECTED_OVERFLOW, UNEXPECTED_ZERO, one_shift_left_bytes_u128};
77

8-
pub mod error_codes {
8+
pub mod errors {
99
pub const EOF: felt252 = 'unexpected end of input';
1010
}
1111

@@ -240,7 +240,7 @@ impl ReaderPrivateImpl of ReaderPrivateTrait {
240240
self.num_current_bytes = 16;
241241
},
242242
Option::None => {
243-
let (value, bytes) = self.array.pop_front().ok_or(error_codes::EOF)?;
243+
let (value, bytes) = self.array.pop_front().ok_or(errors::EOF)?;
244244
let value: u256 = value.into();
245245
if bytes > 16 {
246246
self.current = value.high;

target_chains/starknet/contracts/src/wormhole.cairo

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ pub struct VM {
2727
pub payload: ByteArray,
2828
}
2929

30-
pub mod error_codes {
30+
pub mod errors {
31+
pub use pyth::reader::errors as reader;
32+
3133
pub const NO_GUARDIANS_SPECIFIED: felt252 = 'no guardians specified';
3234
pub const TOO_MANY_GUARDIANS: felt252 = 'too many guardians';
3335
pub const INVALID_GUARDIAN_KEY: felt252 = 'invalid guardian key';
@@ -45,15 +47,15 @@ pub mod error_codes {
4547
}
4648

4749
pub fn quorum(num_guardians: usize) -> usize {
48-
assert(num_guardians < 256, error_codes::TOO_MANY_GUARDIANS);
50+
assert(num_guardians < 256, errors::TOO_MANY_GUARDIANS);
4951
((num_guardians * 2) / 3) + 1
5052
}
5153

5254
#[starknet::contract]
5355
mod wormhole {
5456
use core::box::BoxTrait;
5557
use core::array::ArrayTrait;
56-
use super::{VM, IWormhole, GuardianSignature, error_codes, quorum};
58+
use super::{VM, IWormhole, GuardianSignature, errors, quorum};
5759
use pyth::reader::{Reader, ReaderImpl, ByteArray};
5860
use core::starknet::secp256_trait::{Signature, recover_public_key, Secp256PointTrait};
5961
use core::starknet::secp256k1::Secp256k1Point;
@@ -92,14 +94,14 @@ mod wormhole {
9294
}
9395

9496
fn store_guardian_set(ref self: ContractState, set_index: u32, guardians: Array<felt252>) {
95-
assert(guardians.len() > 0, error_codes::NO_GUARDIANS_SPECIFIED);
96-
assert(guardians.len() < 256, error_codes::TOO_MANY_GUARDIANS);
97+
assert(guardians.len() > 0, errors::NO_GUARDIANS_SPECIFIED);
98+
assert(guardians.len() < 256, errors::TOO_MANY_GUARDIANS);
9799
let set = GuardianSet { num_guardians: guardians.len(), expiration_time: 0 };
98100
self.guardian_sets.write(set_index, set);
99101
let mut i = 0;
100102
while i < guardians.len() {
101103
let key = *guardians.at(i);
102-
assert(key != 0, error_codes::INVALID_GUARDIAN_KEY);
104+
assert(key != 0, errors::INVALID_GUARDIAN_KEY);
103105
// i < 256
104106
self
105107
.guardian_keys
@@ -121,10 +123,10 @@ mod wormhole {
121123
ref self: ContractState, set_index: u32, guardians: Array<felt252>
122124
) {
123125
let execution_info = get_execution_info().unbox();
124-
assert(self.owner.read() == execution_info.caller_address, error_codes::ACCESS_DENIED);
126+
assert(self.owner.read() == execution_info.caller_address, errors::ACCESS_DENIED);
125127

126128
let current_set_index = self.current_guardian_set_index.read();
127-
assert(set_index == current_set_index + 1, error_codes::INVALID_GUARDIAN_SET_SEQUENCE);
129+
assert(set_index == current_set_index + 1, errors::INVALID_GUARDIAN_SET_SEQUENCE);
128130
expire_guardian_set(
129131
ref self, current_set_index, execution_info.block_info.unbox().block_timestamp
130132
);
@@ -137,14 +139,14 @@ mod wormhole {
137139
let (vm, body_hash) = parse_vm(encoded_vm)?;
138140
let guardian_set = self.guardian_sets.read(vm.guardian_set_index);
139141
if guardian_set.num_guardians == 0 {
140-
return Result::Err(error_codes::INVALID_GUARDIAN_SET_INDEX);
142+
return Result::Err(errors::INVALID_GUARDIAN_SET_INDEX);
141143
}
142144
if vm.guardian_set_index != self.current_guardian_set_index.read()
143145
&& guardian_set.expiration_time < get_block_timestamp() {
144-
return Result::Err(error_codes::GUARDIAN_SET_EXPIRED);
146+
return Result::Err(errors::GUARDIAN_SET_EXPIRED);
145147
}
146148
if vm.signatures.len() < quorum(guardian_set.num_guardians) {
147-
return Result::Err(error_codes::NO_QUORUM);
149+
return Result::Err(errors::NO_QUORUM);
148150
}
149151
let mut signatures_clone = vm.signatures.clone();
150152
let mut last_index = Option::None;
@@ -159,7 +161,7 @@ mod wormhole {
159161
match last_index {
160162
Option::Some(last_index) => {
161163
if *(@signature).guardian_index <= last_index {
162-
result = Result::Err(error_codes::INVALID_SIGNATURE_ORDER);
164+
result = Result::Err(errors::INVALID_SIGNATURE_ORDER);
163165
break;
164166
}
165167
},
@@ -168,7 +170,7 @@ mod wormhole {
168170
last_index = Option::Some(*(@signature).guardian_index);
169171

170172
if signature.guardian_index.into() >= guardian_set.num_guardians {
171-
result = Result::Err(error_codes::INVALID_GUARDIAN_INDEX);
173+
result = Result::Err(errors::INVALID_GUARDIAN_INDEX);
172174
break;
173175
}
174176

@@ -204,7 +206,7 @@ mod wormhole {
204206
let mut reader = ReaderImpl::new(encoded_vm);
205207
let version = reader.read_u8()?;
206208
if version != 1 {
207-
return Result::Err(error_codes::VM_VERSION_INCOMPATIBLE);
209+
return Result::Err(errors::VM_VERSION_INCOMPATIBLE);
208210
}
209211
let guardian_set_index = reader.read_u32()?;
210212

@@ -261,21 +263,21 @@ mod wormhole {
261263
body_hash: u256, signature: Signature, guardian_key: u256,
262264
) -> Result<(), felt252> {
263265
let point: Secp256k1Point = recover_public_key(body_hash, signature)
264-
.ok_or(error_codes::INVALID_SIGNATURE)?;
266+
.ok_or(errors::INVALID_SIGNATURE)?;
265267
let address = eth_address(point)?;
266268
if guardian_key == 0 {
267-
return Result::Err(error_codes::INVALID_GUARDIAN_KEY);
269+
return Result::Err(errors::INVALID_GUARDIAN_KEY);
268270
}
269271
if address != guardian_key {
270-
return Result::Err(error_codes::INVALID_SIGNATURE);
272+
return Result::Err(errors::INVALID_SIGNATURE);
271273
}
272274
Result::Ok(())
273275
}
274276

275277
fn eth_address(point: Secp256k1Point) -> Result<u256, felt252> {
276278
let (x, y) = match point.get_coordinates() {
277279
Result::Ok(v) => { v },
278-
Result::Err(_) => { return Result::Err(error_codes::INVALID_SIGNATURE); },
280+
Result::Err(_) => { return Result::Err(errors::INVALID_SIGNATURE); },
279281
};
280282

281283
let mut hasher = HasherImpl::new();

0 commit comments

Comments
 (0)