Skip to content

Commit 66cafd1

Browse files
committed
fix: resolve address encoding issue
1 parent 214f4db commit 66cafd1

File tree

1 file changed

+66
-2
lines changed

1 file changed

+66
-2
lines changed

contracts/sui/intent_v1/sources/main.move

+66-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ module intents_v1::main {
1818
use intents_v1::cluster_connection::{Self, ConnectionState};
1919
use sui::hex::{Self};
2020
use intents_v1::utils::{id_to_hex_string,Self};
21+
2122

2223

2324
const FILL: u8 = 1; // Constant for Fill message type
@@ -142,7 +143,7 @@ module intents_v1::main {
142143
event::emit(OrderClosed { id:removed.get_id() })
143144
};
144145

145-
let solver = suiaddress::from_ascii_bytes(fill.get_solver().bytes());
146+
let solver = utils::address_from_str(&fill.get_solver());
146147
transfer::public_transfer(take, solver);
147148
}
148149

@@ -357,7 +358,7 @@ module intents_v1::main {
357358

358359
transfer::public_transfer(
359360
fill_token,
360-
suiaddress::from_ascii_bytes(order.get_destination_address().as_bytes())
361+
utils::address_from_str(&order.get_destination_address())
361362
);
362363
transfer::public_transfer(fee_token, self.fee_handler);
363364

@@ -497,6 +498,13 @@ module intents_v1::main {
497498
init(ctx);
498499
}
499500

501+
#[test_only]
502+
public fun insert_order<T>(self:&mut Storage,order:&SwapOrder,coin:Coin<T>){
503+
self.orders.add(order.get_id(), *order);
504+
self.funds.add(order.get_id(), coin);
505+
506+
}
507+
500508
}
501509

502510

@@ -514,6 +522,8 @@ module intents_v1::main_tests {
514522
use intents_v1::order_message;
515523
use intents_v1::swap_order;
516524
use intents_v1::utils::id_to_hex_string;
525+
use intents_v1::main::{insert_order};
526+
use sui::sui::{SUI as RSUI};
517527

518528
// Test coin type
519529
public struct USDC {}
@@ -642,6 +652,60 @@ module intents_v1::main_tests {
642652
test_scenario::end(scenario);
643653
}
644654

655+
656+
#[test]
657+
fun test_recv_message_encoding() {
658+
let admin=@0x1;
659+
let mut scenario = setup_test(admin);
660+
test_scenario::next_tx(&mut scenario, @0x1);
661+
{
662+
let mut storage = test_scenario::take_shared<Storage>(&scenario);
663+
let ctx = test_scenario::ctx(&mut scenario);
664+
665+
let order = swap_order::new(
666+
3,
667+
string::utf8(b"0x236100b56f782f11767dccdcb3ce948fd031fcdcf4073bf4a84ee980dd6b7cb0"),
668+
string::utf8(b"sui"),
669+
string::utf8(b"0xa869.fuji"),
670+
string::utf8(b"7b1b1b36d80f6464b0427cd4d4927e1467d53fb4e308304d2a069684d0eae49f"),
671+
string::utf8(b"0xb89cd0fd9043e5e8144c501b54303b7e8a65be02"),
672+
string::utf8(b"0000000000000000000000000000000000000000000000000000000000000002::sui::SUI"),
673+
1000000000,
674+
string::utf8(b"0x0000000000000000000000000000000000000000"),
675+
10,
676+
x""
677+
);
678+
679+
let msg_bytes=x"f9019801b90194f9019103b90143f9014003b842307832333631303062353666373832663131373637646363646362336365393438666430333166636463663430373362663461383465653938306464366237636230837375698b3078613836392e66756a69b84037623162316233366438306636343634623034323763643464343932376531343637643533666234653330383330346432613036393638346430656165343966aa307862383963643066643930343365356538313434633530316235343330336237653861363562653032b84a303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030323a3a7375693a3a535549843b9aca00aa3078303030303030303030303030303030303030303030303030303030303030303030303030303030300a80b842307864663861326639346233333236376435633633643237363166396435383264663638663666353261373765613937316666346261363231346566626164653432843b9aca0001";
680+
681+
let msg = order_message::decode(&msg_bytes);
682+
let fill = order_fill::decode(&msg.get_message());
683+
let order2= swap_order::decode(&fill.get_order_bytes());
684+
std::debug::print(&fill);
685+
std::debug::print(&fill.get_order_bytes());
686+
std::debug::print(&order.encode());
687+
688+
std::debug::print(&order2);
689+
let coin = coin::mint_for_testing<RSUI>(order.get_amount() as u64, ctx);
690+
691+
insert_order(&mut storage,&order,coin);
692+
693+
main::receive_message<RSUI>(
694+
&mut storage,
695+
string::utf8(b"0xa869.fuji"),
696+
1,
697+
msg_bytes,
698+
ctx
699+
);
700+
701+
// Assert that the order has been processed
702+
assert!(!bag::contains(storage.get_funds(), 1), 0);
703+
704+
test_scenario::return_shared(storage);
705+
};
706+
test_scenario::end(scenario);
707+
}
708+
645709
#[test]
646710
#[expected_failure(abort_code = sui::dynamic_field::EFieldDoesNotExist)]
647711
fun test_recv_message_duplicate_fill() {

0 commit comments

Comments
 (0)