Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
161 changes: 0 additions & 161 deletions tests/test_framework/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -467,167 +467,6 @@ pub fn fund_taproot_taker(
balances.spendable
}

/// Verifies the results of a coinswap for the taker and makers after performing a swap.
#[allow(dead_code)]
pub fn verify_swap_results(
taker: &Taker,
makers: &[Arc<Maker>],
org_taker_spend_balance: Amount,
org_maker_spend_balances: Vec<Amount>,
) {
// Check Taker balances
{
let wallet = taker.get_wallet();
let balances = wallet.get_balances().unwrap();

// Debug logging for taker
log::info!(
"🔍 DEBUG Taker - Regular: {}, Swap: {}, Spendable: {}",
balances.regular.to_btc(),
balances.swap.to_btc(),
balances.spendable.to_btc()
);
assert_in_range!(
balances.regular.to_sat(),
[
14499696, // Successful coinswap
14999142, // Recovery via timelock (abort2_case 1, 2, 3)(abort3_case 1, 2)
14940090, // Recovery via Hashlock
15000000, // No spending
],
"Taker seed balance mismatch"
);

assert_in_range!(
balances.swap.to_sat(),
[
443633, // Successful coinswap
442714, // Recovery via timelock
0, // Unsuccessful coinswap (abort2_case 1, 2, 3)(abort3_case 1, 2)
443339, // Recovery via hashlock
],
"Taker swapcoin balance mismatch"
);

assert_in_range!(balances.contract.to_sat(), [0], "Contract balance mismatch");
assert_eq!(balances.fidelity, Amount::ZERO);

// Check balance difference
let balance_diff = org_taker_spend_balance
.checked_sub(balances.spendable)
.unwrap();

log::info!(
"🔍 DEBUG Taker balance diff: {} sats",
balance_diff.to_sat()
);

assert_in_range!(
balance_diff.to_sat(),
[
56671, // Successful coinswap
56965, // Recovery via timelock
500304, // Spent swapcoin
858, // Recovery via timelock (new fee system) (abort2_case 1, 2, 3)(abort3_case 1, 2)
59910, // Recovery via Hashlock (abort3_case3)
500912, // Recovery via Hashlock(abort3_case1)
0 // No spending
],
"Taker spendable balance change mismatch"
);
}

// Check Maker balances
makers
.iter()
.zip(org_maker_spend_balances.iter())
.enumerate()
.for_each(|(maker_index, (maker, org_spend_balance))| {
let mut wallet = maker.get_wallet().write().unwrap();
wallet.sync_and_save().unwrap();
let balances = wallet.get_balances().unwrap();

// Debug logging for makers
log::info!(
"🔍 DEBUG Maker {} - Regular: {}, Swap: {}, Contract: {}, Spendable: {}",
maker_index,
balances.regular.to_btc(),
balances.swap.to_btc(),
balances.contract.to_btc(),
balances.spendable.to_btc()
);

assert_in_range!(
balances.regular.to_sat(),
[
14555287, // First maker on successful coinswap
14555285, // First maker (with slight fee variance)
14533002, // Second maker on successful coinswap
14532998, // Second maker (with slight fee variance)
14999500, // No spending (abort2_case 2, 3)(abort3_case 1, 2)
14999518, // No spending (with slight fee variance)
14998646, // Recovery via timelock (abort2_case 1, 2)(abort3_case 1, 2)
24999502, // Multi-taker scenario
14998642
],
"Maker seed balance mismatch"
);

assert_in_range!(
balances.swap.to_sat(),
[
465918, // First maker
499724, // Second maker
442712, // Taker swap amount
465624, // One of the maker in recovery via hashlock (abort3_case3)
0, // No swap or funding tx missing + recovery via timelock (abort2_case 1, 2, 3)(abort3_case 1, 2)
],
"Maker swapcoin balance mismatch"
);

assert_eq!(balances.fidelity, Amount::from_btc(0.05).unwrap());

//TODO-: Debug why in every test run malice2 test case gives different contract balance while recovering via hashlock
// Live contract balance can be non-zero, if a maker shuts down in middle of recovery.
/* assert!(
balances.contract == Amount::ZERO
|| balances.contract == Amount::from_btc(0.00441812).unwrap() // Contract balance in recovery scenarios
);
*/

// Check spendable balance difference.
let balance_diff = match org_spend_balance.checked_sub(balances.spendable) {
None => balances.spendable.checked_sub(*org_spend_balance).unwrap(), // Successful swap as Makers balance increase by Coinswap fee.
Some(diff) => diff, // No spending or unsuccessful swap
};

log::info!(
"🔍 DEBUG Maker {} balance diff: {} sats",
maker_index,
balance_diff.to_sat()
);

assert_in_range!(
balance_diff.to_sat(),
[
21705, // First maker fee
33226, // Second maker fee
0, // No Swap (abort2_case 1, 2, 3)(abort3_case 1, 2)
858, // Recovery via timelock (abort2_case 1, 2, 3)(abort3_case 1, 2)
444213, // Taker abort after setup - first maker recovery cost (abort1 test case)
443624, // Taker abort after setup - second maker recovery cost (abort1 test case)
466498, // Maker abort after setup(abort3_case3)
410176, // Multi-taker first maker (previous run)
410118, // Multi-taker first maker (current run)
21411 // Recovery via hashlock (abort3_case3)
],
"Maker spendable balance change mismatch"
);
});

log::info!("✅ Swap results verification complete");
}

#[allow(dead_code)]
pub fn verify_maker_pre_swap_balances(balances: &Balances, assert_regular_balance: u64) {
assert_in_range!(
Expand Down