From 21429f24b24af313a64e7a2b290727a63958a8c6 Mon Sep 17 00:00:00 2001 From: rishflab Date: Thu, 11 Mar 2021 19:09:35 +1100 Subject: [PATCH] Inline wait_for_locked_bitcoin() that is only called once Reduce indirection. --- swap/src/protocol/alice/steps.rs | 25 ------------------------- swap/src/protocol/alice/swap.rs | 19 ++++++++++++------- 2 files changed, 12 insertions(+), 32 deletions(-) diff --git a/swap/src/protocol/alice/steps.rs b/swap/src/protocol/alice/steps.rs index f50b6e22..ec959ac7 100644 --- a/swap/src/protocol/alice/steps.rs +++ b/swap/src/protocol/alice/steps.rs @@ -2,7 +2,6 @@ use crate::bitcoin::{ poll_until_block_height_is_gte, BlockHeight, CancelTimelock, EncryptedSignature, PunishTimelock, TxCancel, TxLock, TxRefund, }; -use crate::execution_params::ExecutionParams; use crate::protocol::alice; use crate::protocol::alice::event_loop::EventLoopHandle; use crate::protocol::alice::TransferProof; @@ -14,30 +13,6 @@ use futures::future::{select, Either}; use futures::pin_mut; use libp2p::PeerId; use sha2::Sha256; -use tokio::time::timeout; - -// TODO(Franck): Use helper functions from xmr-btc instead of re-writing them -// here -pub async fn wait_for_locked_bitcoin( - lock_bitcoin_txid: bitcoin::Txid, - bitcoin_wallet: &bitcoin::Wallet, - execution_params: ExecutionParams, -) -> Result<()> { - // We assume we will see Bob's transaction in the mempool first. - timeout( - execution_params.bob_time_to_act, - bitcoin_wallet.watch_for_raw_transaction(lock_bitcoin_txid), - ) - .await - .context("Failed to find lock Bitcoin tx")??; - - // // We saw the transaction in the mempool, waiting for it to be confirmed. - bitcoin_wallet - .wait_for_transaction_finality(lock_bitcoin_txid, execution_params) - .await?; - - Ok(()) -} pub async fn lock_xmr( bob_peer_id: PeerId, diff --git a/swap/src/protocol/alice/swap.rs b/swap/src/protocol/alice/swap.rs index 28f3d751..93064260 100644 --- a/swap/src/protocol/alice/swap.rs +++ b/swap/src/protocol/alice/swap.rs @@ -9,16 +9,17 @@ use crate::protocol::alice::event_loop::EventLoopHandle; use crate::protocol::alice::steps::{ build_bitcoin_punish_transaction, build_bitcoin_redeem_transaction, extract_monero_private_key, lock_xmr, publish_cancel_transaction, wait_for_bitcoin_encrypted_signature, - wait_for_bitcoin_refund, wait_for_locked_bitcoin, + wait_for_bitcoin_refund, }; use crate::protocol::alice::AliceState; use crate::{bitcoin, database, monero}; -use anyhow::{bail, Result}; +use anyhow::{bail, Context, Result}; use async_recursion::async_recursion; use futures::future::{select, Either}; use futures::pin_mut; use rand::{CryptoRng, RngCore}; use std::sync::Arc; +use tokio::time::timeout; use tracing::{error, info}; use uuid::Uuid; @@ -80,12 +81,16 @@ async fn run_until_internal( state3, bob_peer_id, } => { - let _ = wait_for_locked_bitcoin( - state3.tx_lock.txid(), - &bitcoin_wallet, - execution_params, + timeout( + execution_params.bob_time_to_act, + bitcoin_wallet.watch_for_raw_transaction(state3.tx_lock.txid()), ) - .await?; + .await + .context("Failed to find lock Bitcoin tx")??; + + bitcoin_wallet + .wait_for_transaction_finality(state3.tx_lock.txid(), execution_params) + .await?; let state = AliceState::BtcLocked { bob_peer_id,