Skip to content

Commit b7ad2c8

Browse files
authored
Merge pull request #11 from icon-project/fix/sui-typeargs-relayer
Fix: wrong typeargs from contract to relayer
2 parents c7dae72 + b5164a2 commit b7ad2c8

File tree

2 files changed

+73
-2
lines changed

2 files changed

+73
-2
lines changed

contracts/sui/intent_v1/sources/main.move

+72-1
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,11 @@ module intents_v1::main {
405405
};
406406

407407
let order=swap_order::decode(&bytes);
408-
let token_type=order.get_token();
408+
let token_type=if(order.get_src_nid()==string::utf8(b"sui")){
409+
order.get_token()
410+
}else{
411+
order.get_to_token()
412+
};
409413

410414
let mut type_args:vector<String> = vector::empty();
411415
type_args.push_back(token_type);
@@ -420,6 +424,9 @@ module intents_v1::main {
420424

421425

422426
}
427+
public fun get_type_args(self:&Params):vector<String>{
428+
self.type_args
429+
}
423430

424431
entry fun get_receipt(self:&Storage,nid:String,conn_sn:u128):bool {
425432
self.connection.get_receipt(nid, conn_sn)
@@ -447,6 +454,10 @@ module intents_v1::main {
447454
&self.funds
448455
}
449456

457+
public fun get_finished_orders(self:&Storage):&Table<vector<u8>,bool> {
458+
&self.finished_orders
459+
}
460+
450461
public fun get_id(self:&Storage):ID {
451462
self.id.to_inner()
452463
}
@@ -489,6 +500,7 @@ module intents_v1::main_tests {
489500
use intents_v1::utils::id_to_hex_string;
490501
use intents_v1::main::{insert_order};
491502
use sui::sui::{SUI as RSUI};
503+
use sui::hash::keccak256;
492504
use intents_v1::utils::{get_type_string,address_to_hex_string};
493505

494506
// Test coin type
@@ -1198,4 +1210,63 @@ module intents_v1::main_tests {
11981210
};
11991211
test_scenario::end(scenario);
12001212
}
1213+
1214+
#[test]
1215+
fun test_recv_message_cancel_decoding() {
1216+
let admin=@0x1;
1217+
let mut scenario = setup_test(admin);
1218+
test_scenario::next_tx(&mut scenario, @0x1);
1219+
{
1220+
let mut storage = test_scenario::take_shared<Storage>(&scenario);
1221+
let ctx = test_scenario::ctx(&mut scenario);
1222+
1223+
1224+
1225+
let msg = order_message::decode(&x"f9017702b90173f90170b9016df9016a5aaa3078353345303039354335373637336643313666413346413234313462414433323030383434456331378f3078613462312e617262697472756d83737569aa307864433444373261373046396435343841463933373946343245364146383137323862326331643931b842307863656563613764623033366430373962333139333838366662656662653738663734356432313538396437363132643766346638383031663537386639343463aa307830303030303030303030303030303030303030303030303030303030303030303030303030303030872386f26fc10000b84a303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030323a3a7375693a3a5355498500b1ff400db57b2271756f74655f75756964223a2266316230306563302d666634632d343135302d616530332d353639636434376263663565227d");
1226+
let cancel = order_cancel::decode(&msg.get_message());
1227+
let order= swap_order::decode(&cancel.get_order_bytes());
1228+
std::debug::print(&order);
1229+
1230+
main::receive_message<USDC>(
1231+
&mut storage,
1232+
string::utf8(b"0xa4b1.arbitrum"),
1233+
1,
1234+
order_message::encode(&msg),
1235+
ctx
1236+
);
1237+
1238+
assert!(*main::get_finished_orders(&storage).borrow<vector<u8>,bool>(keccak256(&order.encode())));
1239+
1240+
test_scenario::return_shared(storage);
1241+
};
1242+
test_scenario::end(scenario);
1243+
}
1244+
1245+
#[test]
1246+
fun test_get_relayer_params(){
1247+
1248+
let admin=@0x1;
1249+
let mut scenario = setup_test(admin);
1250+
test_scenario::next_tx(&mut scenario, @0x1);
1251+
{
1252+
let mut storage = test_scenario::take_shared<Storage>(&scenario);
1253+
let ctx = test_scenario::ctx(&mut scenario);
1254+
let msg = order_message::decode(&x"f9017702b90173f90170b9016df9016a5aaa3078353345303039354335373637336643313666413346413234313462414433323030383434456331378f3078613462312e617262697472756d83737569aa307864433444373261373046396435343841463933373946343245364146383137323862326331643931b842307863656563613764623033366430373962333139333838366662656662653738663734356432313538396437363132643766346638383031663537386639343463aa307830303030303030303030303030303030303030303030303030303030303030303030303030303030872386f26fc10000b84a303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030323a3a7375693a3a5355498500b1ff400db57b2271756f74655f75756964223a2266316230306563302d666634632d343135302d616530332d353639636434376263663565227d");
1255+
let cancel = order_cancel::decode(&msg.get_message());
1256+
let order= swap_order::decode(&cancel.get_order_bytes());
1257+
std::debug::print(&order);
1258+
1259+
let args= main::get_receive_msg_args(
1260+
&storage,
1261+
msg.encode()
1262+
1263+
);
1264+
1265+
std::debug::print(&args);
1266+
assert!((*args.get_type_args().borrow(0))==string::utf8(b"0000000000000000000000000000000000000000000000000000000000000002::sui::SUI"));
1267+
test_scenario::return_shared(storage);
1268+
};
1269+
test_scenario::end(scenario);
1270+
1271+
}
12011272
}

scripts/optimize-move.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/bin/bash
22
set -e
33
# contracts
4-
CONTRACTS=("contracts/sui/intent_v1" "contracts/sui/libs/sui_rlp" )
4+
CONTRACTS=("contracts/sui/intent_v1")
55

66
#cargo install --locked --git https://github.com/MystenLabs/sui.git --branch testnet sui
77
start_dir=$(pwd)

0 commit comments

Comments
 (0)