Skip to content

Commit

Permalink
wait for counterparty refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
Primata committed Aug 22, 2024
1 parent 701a2c7 commit 90e8c14
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ module atomic_bridge::atomic_bridge_counterparty {
aborted_transfers: SmartTable<vector<u8>, BridgeTransferDetails>,
}

struct BridgeTransferDetails has key, store {
struct BridgeTransferDetails has key, store, copy {
initiator: vector<u8>, // eth address
recipient: address,
amount: u64,
Expand Down Expand Up @@ -72,6 +72,25 @@ module atomic_bridge::atomic_bridge_counterparty {
move_to(resource, bridge_transfer_store);
move_to(resource, bridge_config);
}

#[view]
public fun bridge_transfers(bridge_transfer_id : vector<u8>) : BridgeTransfer acquires BridgeTransferStore, BridgeConfig {
let config_address = borrow_global<BridgeConfig>(@atomic_bridge).bridge_module_deployer;
let store = borrow_global<BridgeTransferStore>(config_address);
if (!aptos_std::smart_table::contains(&store.transfers, bridge_transfer_id)){
BridgeTransfer {
amount: 0,
originator: @atomic_bridge,
recipient: vector::empty<u8>(),
hash_lock: vector::empty<u8>(),
time_lock: 0,
state: 0,
}
} else {
let bridge_transfer = aptos_std::smart_table::borrow(&store.transfers, bridge_transfer_id);
*bridge_transfer
}
}

public fun lock_bridge_transfer_assets(
caller: &signer,
Expand Down Expand Up @@ -230,4 +249,46 @@ module atomic_bridge::atomic_bridge_counterparty {
assert!(transfer_details.hash_lock == hash_lock, 3);
assert!(transfer_details.initiator == initiator, 4);
}

#[test(origin_account = @origin_addr, resource_addr = @resource_addr, aptos_framework = @0x1, creator = @atomic_bridge, source_account = @source_account, moveth = @moveth, admin = @admin, client = @0xdca, master_minter = @master_minter)]
fun test_bridge_transfers_view(
origin_account: &signer,
resource_addr: signer,
client: &signer,
aptos_framework: signer,
master_minter: &signer,
creator: &signer,
moveth: &signer,
source_account: &signer
) acquires BridgeTransferStore, BridgeConfig {
set_up_test(origin_account, &resource_addr);

timestamp::set_time_has_started_for_testing(&aptos_framework);
moveth::init_for_test(moveth);
let receiver_address = @0xdada;
let initiator = b"0x123"; //In real world this would be an ethereum address
let recipient = @0xface;
let asset = moveth::metadata();

let bridge_transfer_id = b"transfer1";
let pre_image = b"secret";
let hash_lock = keccak256(pre_image);
let time_lock = 3600;
let amount = 100;
let result = lock_bridge_transfer_assets(
origin_account,
initiator,
bridge_transfer_id,
hash_lock,
time_lock,
recipient,
amount
);
assert!(result, 1);
// Verify that the transfer is stored in pending_transfers
let bridge_store = borrow_global<BridgeTransferStore>(signer::address_of(&resource_addr));
let transfer_details = bridge_transfers(bridge_transfer_id);
assert!(transfer_details.recipient == recipient, 2);
assert!(transfer_details.initiator == initiator, 3);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -497,7 +497,7 @@ module atomic_bridge::atomic_bridge_initiator {
}

#[test(creator = @moveth, aptos_framework = @0x1, sender = @0xdaff, atomic_bridge = @atomic_bridge)]
#[expected_failure(abort_code = 1)]
#[expected_failure(abort_code = 7)]
public fun test_bridge_transfers_view(
sender: &signer,
creator: &signer,
Expand All @@ -523,10 +523,10 @@ module atomic_bridge::atomic_bridge_initiator {
amount
);

// bridge_transfers cannot be used because it dereferences the transfer and modifies it
// but it does return a valid transfer id
aptos_std::debug::print(&bridge_transfer_id);
// returns a valid transfer
let bridge_transfer = bridge_transfers(bridge_transfer_id);

assert!(bridge_transfer.state == INITIALIZED, 6);
aptos_std::debug::print(&bridge_transfer.state);
complete_bridge_transfer(
Expand All @@ -536,14 +536,18 @@ module atomic_bridge::atomic_bridge_initiator {
atomic_bridge
);
aptos_std::debug::print(&bridge_transfer.state);
// bridge_transfers doesn't find the transfer id and returns a new transfer with state 3

// bridge_transfers doesn't find the transfer id because it has been deleted by complete bridge transfer and returns a new transfer with state 3 (non existent)
assert!(bridge_transfers(bridge_transfer_id).state == 3, 7);
aptos_std::debug::print(&bridge_transfer.state);
// refund fails in borrow_mut because bridge_transfer_id is invalid
// refund fails in borrow_mut because bridge_transfer_id is inexistent as well
// weridly this errors but the test passes despite us expecting error 7 only, not 1
// abort error::invalid_argument(ENOT_FOUND)
refund_bridge_transfer(
sender,
bridge_transfer_id,
atomic_bridge
);
assert!(bridge_transfers(bridge_transfer_id).state == 3, 7);
}
}

0 comments on commit 90e8c14

Please sign in to comment.