Skip to content

Commit de6922f

Browse files
committed
sui: executor_requests
1 parent 1b421ce commit de6922f

File tree

5 files changed

+165
-0
lines changed

5 files changed

+165
-0
lines changed

sui/executor_requests/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
build/*

sui/executor_requests/Move.lock

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# @generated by Move, please check-in and do not edit manually.
2+
3+
[move]
4+
version = 3
5+
manifest_digest = "2EB121A47DDF68A19733CCDFA38A690E056017B248E4FB1A3B4B53A8BFE42ECF"
6+
deps_digest = "397E6A9F7A624706DBDFEE056CE88391A15876868FD18A88504DA74EB458D697"
7+
dependencies = [
8+
{ id = "Bridge", name = "Bridge" },
9+
{ id = "MoveStdlib", name = "MoveStdlib" },
10+
{ id = "Sui", name = "Sui" },
11+
{ id = "SuiSystem", name = "SuiSystem" },
12+
{ id = "executor", name = "executor" },
13+
]
14+
15+
[[move.package]]
16+
id = "Bridge"
17+
source = { git = "https://github.com/MystenLabs/sui.git", rev = "04f11afaf5e0", subdir = "crates/sui-framework/packages/bridge" }
18+
19+
dependencies = [
20+
{ id = "MoveStdlib", name = "MoveStdlib" },
21+
{ id = "Sui", name = "Sui" },
22+
{ id = "SuiSystem", name = "SuiSystem" },
23+
]
24+
25+
[[move.package]]
26+
id = "MoveStdlib"
27+
source = { git = "https://github.com/MystenLabs/sui.git", rev = "04f11afaf5e0", subdir = "crates/sui-framework/packages/move-stdlib" }
28+
29+
[[move.package]]
30+
id = "Sui"
31+
source = { git = "https://github.com/MystenLabs/sui.git", rev = "04f11afaf5e0", subdir = "crates/sui-framework/packages/sui-framework" }
32+
33+
dependencies = [
34+
{ id = "MoveStdlib", name = "MoveStdlib" },
35+
]
36+
37+
[[move.package]]
38+
id = "SuiSystem"
39+
source = { git = "https://github.com/MystenLabs/sui.git", rev = "04f11afaf5e0", subdir = "crates/sui-framework/packages/sui-system" }
40+
41+
dependencies = [
42+
{ id = "MoveStdlib", name = "MoveStdlib" },
43+
{ id = "Sui", name = "Sui" },
44+
]
45+
46+
[[move.package]]
47+
id = "executor"
48+
source = { local = "../executor" }
49+
50+
dependencies = [
51+
{ id = "Bridge", name = "Bridge" },
52+
{ id = "MoveStdlib", name = "MoveStdlib" },
53+
{ id = "Sui", name = "Sui" },
54+
{ id = "SuiSystem", name = "SuiSystem" },
55+
]
56+
57+
[move.toolchain-version]
58+
compiler-version = "1.46.1"
59+
edition = "2024.beta"
60+
flavor = "sui"
61+
62+
[env]
63+
64+
[env.testnet]
65+
chain-id = "4c78adac"
66+
original-published-id = "0xb34c38614f2a4a875f3cd76ffe9f23f85bbb7a176e44c4c448bb669c28c945f9"
67+
latest-published-id = "0xb34c38614f2a4a875f3cd76ffe9f23f85bbb7a176e44c4c448bb669c28c945f9"
68+
published-version = "1"

sui/executor_requests/Move.toml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
[package]
2+
name = "executor_requests"
3+
edition = "2024.beta"
4+
license = "Apache 2.0"
5+
authors = ["Wormhole Labs"]
6+
7+
[dependencies.executor]
8+
local = "../executor"
9+
10+
[addresses]
11+
executor_requests = "0x0"
12+
13+
[dev-dependencies]
14+
15+
[dev-addresses]
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
3+
module executor_requests::executor_requests {
4+
use executor::bytes;
5+
6+
const REQ_VAA_V1: vector<u8> = b"ERV1";
7+
const REQ_CCTP_V1: vector<u8> = b"ERC1";
8+
9+
const E_INVALID_VEC_LENGTH: u64 = 0;
10+
11+
public fun make_vaa_v1_request(
12+
emitter_chain: u16,
13+
emitter_address: vector<u8>,
14+
sequence: u64
15+
): vector<u8> {
16+
assert!(emitter_address.length() == 32,E_INVALID_VEC_LENGTH);
17+
let mut ret = vector::empty();
18+
ret.append(REQ_VAA_V1);
19+
bytes::push_u16_be(&mut ret, emitter_chain);
20+
ret.append(emitter_address);
21+
bytes::push_u64_be(&mut ret, sequence);
22+
ret
23+
}
24+
25+
public fun make_cctp_v1_request(
26+
src_domain: u32,
27+
nonce: u64,
28+
): vector<u8> {
29+
let mut ret = vector::empty();
30+
ret.append(REQ_CCTP_V1);
31+
bytes::push_u32_be(&mut ret, src_domain);
32+
bytes::push_u64_be(&mut ret, nonce);
33+
ret
34+
}
35+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
3+
#[test_only]
4+
module executor_requests::executor_requests_tests {
5+
use executor_requests::executor_requests;
6+
7+
#[test]
8+
fun test_make_vaa_v1_request() {
9+
let res = executor_requests::make_vaa_v1_request(
10+
10002,
11+
x"000000000000000000000000d4a6a72a025599fd7357c0f157c718d0f5e38c76",
12+
29
13+
);
14+
assert!(res == x"455256312712000000000000000000000000d4a6a72a025599fd7357c0f157c718d0f5e38c76000000000000001d", 0);
15+
}
16+
17+
#[test]
18+
fun test_make_cctp_v1_request() {
19+
let res = executor_requests::make_cctp_v1_request(
20+
6,
21+
6344
22+
);
23+
assert!(res == x"455243310000000600000000000018c8", 0);
24+
}
25+
26+
#[test]
27+
#[expected_failure(abort_code = executor_requests::E_INVALID_VEC_LENGTH)]
28+
fun test_make_vaa_v1_request_fail_with_emitter_too_short() {
29+
executor_requests::make_vaa_v1_request(
30+
10002,
31+
x"000000000000000000000000d4a6a72a025599fd7357c0f157c718d0f5e38c",
32+
29
33+
);
34+
}
35+
36+
#[test]
37+
#[expected_failure(abort_code = executor_requests::E_INVALID_VEC_LENGTH)]
38+
fun test_make_vaa_v1_request_fail_with_emitter_too_long() {
39+
executor_requests::make_vaa_v1_request(
40+
10002,
41+
x"000000000000000000000000d4a6a72a025599fd7357c0f157c718d0f5e38c7600",
42+
29
43+
);
44+
}
45+
46+
}

0 commit comments

Comments
 (0)