diff --git a/src/swaps/bitcoinv2.rs b/src/swaps/bitcoinv2.rs index 3f66e94..039f8cb 100644 --- a/src/swaps/bitcoinv2.rs +++ b/src/swaps/bitcoinv2.rs @@ -116,6 +116,20 @@ impl BtcSwapScriptV2 { }) } + pub fn musig_keyagg_cache(&self) -> MusigKeyAggCache { + match self.swap_type { + SwapType::Submarine => { + let pubkeys = [self.receiver_pubkey.inner, self.sender_pubkey.inner]; + MusigKeyAggCache::new(&Secp256k1::new(), &pubkeys) + } + + SwapType::ReverseSubmarine => { + let pubkeys = [self.sender_pubkey.inner, self.receiver_pubkey.inner]; + MusigKeyAggCache::new(&Secp256k1::new(), &pubkeys) + } + } + } + /// Create the struct from a reverse swap create request. pub fn reverse_from_swap_resp( reverse_response: &ReverseResp, @@ -219,7 +233,7 @@ impl BtcSwapScriptV2 { // Setup Key Aggregation cache let pubkeys = [self.receiver_pubkey.inner, self.sender_pubkey.inner]; - let mut key_agg_cache = MusigKeyAggCache::new(&secp, &pubkeys); + let mut key_agg_cache = self.musig_keyagg_cache(); // Construct the Taproot let internal_key = key_agg_cache.agg_pk(); @@ -414,7 +428,7 @@ impl BtcSwapTxV2 { self.swap_script.sender_pubkey.inner, ]; - let mut key_agg_cache = MusigKeyAggCache::new(&secp, &pubkeys); + let mut key_agg_cache = self.swap_script.musig_keyagg_cache(); let tweak = SecretKey::from_slice( self.swap_script @@ -553,13 +567,7 @@ impl BtcSwapTxV2 { // Step 2: Get the Public and Secret nonces - let mut key_agg_cache = MusigKeyAggCache::new( - &secp, - &[ - self.swap_script.receiver_pubkey.inner, - self.swap_script.sender_pubkey.inner, - ], - ); + let mut key_agg_cache = self.swap_script.musig_keyagg_cache(); let tweak = SecretKey::from_slice( self.swap_script diff --git a/tests/bitcoin_v2.rs b/tests/bitcoin_v2.rs index 0ad053f..2b657f4 100644 --- a/tests/bitcoin_v2.rs +++ b/tests/bitcoin_v2.rs @@ -1,4 +1,4 @@ -use std::str::FromStr; +use std::{str::FromStr, time::Duration}; use boltz_client::{ network::electrum::ElectrumConfig, @@ -262,6 +262,8 @@ fn bitcoin_v2_reverse() { if update.status == "transaction.mempool" { log::info!("Boltz broadcasted funding tx"); + std::thread::sleep(Duration::from_secs(30)); + let claim_tx = BtcSwapTxV2::new_claim( swap_script.clone(), claim_address.clone(),