diff --git a/swap/src/bin/swap.rs b/swap/src/bin/swap.rs index f8da52e4..45414bb0 100644 --- a/swap/src/bin/swap.rs +++ b/swap/src/bin/swap.rs @@ -130,7 +130,7 @@ async fn main() -> Result<()> { } Options::BuyXmr { alice_addr, - alice_peer_id, + alice_peer_id: _, bitcoind_url, bitcoin_wallet_name, monero_wallet_rpc_url, @@ -182,7 +182,6 @@ async fn main() -> Result<()> { let bob_state = BobState::Started { state0, amounts, - peer_id: alice_peer_id, addr: alice_addr, }; diff --git a/swap/src/bob/execution.rs b/swap/src/bob/execution.rs index 486a3e0a..5f4b09a3 100644 --- a/swap/src/bob/execution.rs +++ b/swap/src/bob/execution.rs @@ -1,6 +1,6 @@ use crate::{bob::event_loop::EventLoopHandle, SwapAmounts}; use anyhow::Result; -use libp2p::core::Multiaddr; +use libp2p::{core::Multiaddr, PeerId}; use rand::{CryptoRng, RngCore}; use std::sync::Arc; use xmr_btc::bob::State2; @@ -12,32 +12,34 @@ pub async fn negotiate( addr: Multiaddr, mut rng: R, bitcoin_wallet: Arc, -) -> Result +) -> Result<(State2, PeerId)> where R: RngCore + CryptoRng + Send, { tracing::trace!("Starting negotiate"); swarm.dial_alice(addr).await?; - let alice = swarm.recv_conn_established().await?; - - swarm.request_amounts(alice.clone(), amounts.btc).await?; + let alice_peer_id = swarm.recv_conn_established().await?; swarm - .send_message0(alice.clone(), state0.next_message(&mut rng)) + .request_amounts(alice_peer_id.clone(), amounts.btc) + .await?; + + swarm + .send_message0(alice_peer_id.clone(), state0.next_message(&mut rng)) .await?; let msg0 = swarm.recv_message0().await?; let state1 = state0.receive(bitcoin_wallet.as_ref(), msg0).await?; swarm - .send_message1(alice.clone(), state1.next_message()) + .send_message1(alice_peer_id.clone(), state1.next_message()) .await?; let msg1 = swarm.recv_message1().await?; let state2 = state1.receive(msg1)?; swarm - .send_message2(alice.clone(), state2.next_message()) + .send_message2(alice_peer_id.clone(), state2.next_message()) .await?; - Ok(state2) + Ok((state2, alice_peer_id)) } diff --git a/swap/src/bob/swap.rs b/swap/src/bob/swap.rs index b37fec75..7368bb6c 100644 --- a/swap/src/bob/swap.rs +++ b/swap/src/bob/swap.rs @@ -21,7 +21,6 @@ pub enum BobState { Started { state0: bob::State0, amounts: SwapAmounts, - peer_id: PeerId, addr: Multiaddr, }, Negotiated(bob::State2, PeerId), @@ -121,10 +120,9 @@ where BobState::Started { state0, amounts, - peer_id, addr, } => { - let state2 = negotiate( + let (state2, alice_peer_id) = negotiate( state0, amounts, &mut event_loop_handle, @@ -134,7 +132,7 @@ where ) .await?; run_until( - BobState::Negotiated(state2, peer_id), + BobState::Negotiated(state2, alice_peer_id), is_target_state, event_loop_handle, db, diff --git a/swap/tests/e2e.rs b/swap/tests/e2e.rs index b53f7645..7fc281ef 100644 --- a/swap/tests/e2e.rs +++ b/swap/tests/e2e.rs @@ -1,6 +1,6 @@ use bitcoin_harness::Bitcoind; use futures::future::try_join; -use libp2p::{Multiaddr, PeerId}; +use libp2p::Multiaddr; use monero_harness::Monero; use rand::rngs::OsRng; use std::sync::Arc; @@ -52,7 +52,6 @@ async fn happy_path() { alice_swarm_handle, alice_btc_wallet, alice_xmr_wallet, - alice_peer_id, ) = init_alice( &bitcoind, &monero, @@ -68,7 +67,6 @@ async fn happy_path() { let (bob_state, bob_swarm_driver, bob_swarm_handle, bob_btc_wallet, bob_xmr_wallet, bob_db) = init_bob( alice_multiaddr, - alice_peer_id, &bitcoind, &monero, btc_to_swap, @@ -151,29 +149,22 @@ async fn alice_punishes_if_bob_never_acts_after_fund() { let config = Config::regtest(); - let ( - alice_state, - mut alice_swarm, - alice_swarm_handle, - alice_btc_wallet, - alice_xmr_wallet, - alice_peer_id, - ) = init_alice( - &bitcoind, - &monero, - btc_to_swap, - alice_btc_starting_balance, - xmr_to_swap, - alice_xmr_starting_balance, - alice_multiaddr.clone(), - config, - ) - .await; + let (alice_state, mut alice_swarm, alice_swarm_handle, alice_btc_wallet, alice_xmr_wallet) = + init_alice( + &bitcoind, + &monero, + btc_to_swap, + alice_btc_starting_balance, + xmr_to_swap, + alice_xmr_starting_balance, + alice_multiaddr.clone(), + config, + ) + .await; let (bob_state, bob_swarm_driver, bob_swarm_handle, bob_btc_wallet, bob_xmr_wallet, bob_db) = init_bob( alice_multiaddr, - alice_peer_id, &bitcoind, &monero, btc_to_swap, @@ -276,7 +267,6 @@ async fn both_refund() { alice_swarm_handle, alice_btc_wallet, alice_xmr_wallet, - alice_peer_id, ) = init_alice( &bitcoind, &monero, @@ -292,7 +282,6 @@ async fn both_refund() { let (bob_state, bob_swarm_driver, bob_swarm_handle, bob_btc_wallet, bob_xmr_wallet, bob_db) = init_bob( alice_multiaddr, - alice_peer_id, &bitcoind, &monero, btc_to_swap, @@ -398,7 +387,6 @@ async fn init_alice( alice::event_loop::EventLoopHandle, Arc, Arc, - PeerId, ) { monero .init(vec![("alice", xmr_starting_balance.as_piconero())]) @@ -448,7 +436,6 @@ async fn init_alice( ) }; - let alice_peer_id = alice_behaviour.peer_id(); let alice_transport = build(alice_behaviour.identity()).unwrap(); let (swarm_driver, handle) = @@ -460,14 +447,12 @@ async fn init_alice( handle, alice_btc_wallet, alice_xmr_wallet, - alice_peer_id, ) } #[allow(clippy::too_many_arguments)] async fn init_bob( alice_multiaddr: Multiaddr, - alice_peer_id: PeerId, bitcoind: &Bitcoind<'_>, monero: &Monero, btc_to_swap: bitcoin::Amount, @@ -525,7 +510,6 @@ async fn init_bob( let bob_state = BobState::Started { state0, amounts, - peer_id: alice_peer_id, addr: alice_multiaddr, };