diff --git a/sui/DEPLOYMENTS.md b/sui/DEPLOYMENTS.md index e256fff..2374c5b 100644 --- a/sui/DEPLOYMENTS.md +++ b/sui/DEPLOYMENTS.md @@ -12,6 +12,10 @@ Executor Requests: [0xc030df7a3eed1494fa4b64aa8ab63a79041cf1114f4ff2b7ab5aca1c68 ## Testnet +### July 15, 2025 + +Executor Requests: [0x8e5ec98738885325294060fd067fde47e10313bedc531d0500b24a752be41788](https://suiscan.xyz/testnet/object/0x8e5ec98738885325294060fd067fde47e10313bedc531d0500b24a752be41788/contracts) + ### April 10, 2025 Executor: [0x4000cfe2955d8355b3d3cf186f854fea9f787a457257056926fde1ec977670eb](https://suiscan.xyz/testnet/object/0x4000cfe2955d8355b3d3cf186f854fea9f787a457257056926fde1ec977670eb/contracts) diff --git a/sui/executor_requests/Move.lock b/sui/executor_requests/Move.lock index ed20b79..97165d6 100644 --- a/sui/executor_requests/Move.lock +++ b/sui/executor_requests/Move.lock @@ -63,8 +63,8 @@ flavor = "sui" [env.testnet] chain-id = "4c78adac" -original-published-id = "0x2d9ccf3cce3f7dce408e5455e90b80a8161ad9673d1366c2a5def60ad93657a8" -latest-published-id = "0x2d9ccf3cce3f7dce408e5455e90b80a8161ad9673d1366c2a5def60ad93657a8" +original-published-id = "0x8e5ec98738885325294060fd067fde47e10313bedc531d0500b24a752be41788" +latest-published-id = "0x8e5ec98738885325294060fd067fde47e10313bedc531d0500b24a752be41788" published-version = "1" [env.mainnet] diff --git a/sui/executor_requests/sources/executor_requests.move b/sui/executor_requests/sources/executor_requests.move index 27509d8..c7f0e6a 100644 --- a/sui/executor_requests/sources/executor_requests.move +++ b/sui/executor_requests/sources/executor_requests.move @@ -4,7 +4,9 @@ module executor_requests::executor_requests { use executor::bytes; const REQ_VAA_V1: vector = b"ERV1"; + const REQ_NTT_V1: vector = b"ERN1"; const REQ_CCTP_V1: vector = b"ERC1"; + const REQ_CCTP_V2: vector = b"ERC2"; const E_INVALID_VEC_LENGTH: u64 = 0; @@ -22,6 +24,21 @@ module executor_requests::executor_requests { ret } + public fun make_ntt_v1_request( + source_chain: u16, + source_manager: vector, + message_id: vector + ): vector { + assert!(source_manager.length() == 32,E_INVALID_VEC_LENGTH); + assert!(message_id.length() == 32,E_INVALID_VEC_LENGTH); + let mut ret = vector::empty(); + ret.append(REQ_NTT_V1); + bytes::push_u16_be(&mut ret, source_chain); + ret.append(source_manager); + ret.append(message_id); + ret + } + public fun make_cctp_v1_request( src_domain: u32, nonce: u64, @@ -32,4 +49,11 @@ module executor_requests::executor_requests { bytes::push_u64_be(&mut ret, nonce); ret } + + public fun make_cctp_v2_request(): vector { + let mut ret = vector::empty(); + ret.append(REQ_CCTP_V2); + bytes::push_u8(&mut ret, 1); + ret + } } diff --git a/sui/executor_requests/tests/executor_requests_tests.move b/sui/executor_requests/tests/executor_requests_tests.move index d4d3f83..6243c46 100644 --- a/sui/executor_requests/tests/executor_requests_tests.move +++ b/sui/executor_requests/tests/executor_requests_tests.move @@ -14,6 +14,16 @@ module executor_requests::executor_requests_tests { assert!(res == x"455256312712000000000000000000000000d4a6a72a025599fd7357c0f157c718d0f5e38c76000000000000001d", 0); } + #[test] + fun test_make_ntt_v1_request() { + let res = executor_requests::make_ntt_v1_request( + 10002, + x"000000000000000000000000d4a6a72a025599fd7357c0f157c718d0f5e38c76", + x"0000000000000000000000000000000000000000000000000000000000000001", + ); + assert!(res == x"45524E312712000000000000000000000000d4a6a72a025599fd7357c0f157c718d0f5e38c760000000000000000000000000000000000000000000000000000000000000001", 0); + } + #[test] fun test_make_cctp_v1_request() { let res = executor_requests::make_cctp_v1_request( @@ -23,6 +33,12 @@ module executor_requests::executor_requests_tests { assert!(res == x"455243310000000600000000000018c8", 0); } + #[test] + fun test_make_cctp_v2_request() { + let res = executor_requests::make_cctp_v2_request(); + assert!(res == x"4552433201", 0); + } + #[test] #[expected_failure(abort_code = executor_requests::E_INVALID_VEC_LENGTH)] fun test_make_vaa_v1_request_fail_with_emitter_too_short() { @@ -42,5 +58,45 @@ module executor_requests::executor_requests_tests { 29 ); } + + #[test] + #[expected_failure(abort_code = executor_requests::E_INVALID_VEC_LENGTH)] + fun test_make_ntt_v1_request_fail_with_address_too_short() { + executor_requests::make_ntt_v1_request( + 10002, + x"000000000000000000000000d4a6a72a025599fd7357c0f157c718d0f5e38c", + x"0000000000000000000000000000000000000000000000000000000000000001" + ); + } + + #[test] + #[expected_failure(abort_code = executor_requests::E_INVALID_VEC_LENGTH)] + fun test_make_ntt_v1_request_fail_with_address_too_long() { + executor_requests::make_ntt_v1_request( + 10002, + x"000000000000000000000000d4a6a72a025599fd7357c0f157c718d0f5e38c7600", + x"0000000000000000000000000000000000000000000000000000000000000001" + ); + } + + #[test] + #[expected_failure(abort_code = executor_requests::E_INVALID_VEC_LENGTH)] + fun test_make_ntt_v1_request_fail_with_message_id_too_short() { + executor_requests::make_ntt_v1_request( + 10002, + x"000000000000000000000000d4a6a72a025599fd7357c0f157c718d0f5e38c76", + x"00000000000000000000000000000000000000000000000000000000000000" + ); + } + + #[test] + #[expected_failure(abort_code = executor_requests::E_INVALID_VEC_LENGTH)] + fun test_make_ntt_v1_request_fail_with_message_id_too_long() { + executor_requests::make_ntt_v1_request( + 10002, + x"000000000000000000000000d4a6a72a025599fd7357c0f157c718d0f5e38c76", + x"000000000000000000000000000000000000000000000000000000000000000100" + ); + } }