From 744fc625aa28f1a3ca745ca1e9db4544a1536bec Mon Sep 17 00:00:00 2001 From: Franck Royer Date: Thu, 10 Dec 2020 14:59:09 +1100 Subject: [PATCH] Remove passing alice peer id The usage of the peer id is incorrect as we do not even check it when dialing. For now, we can ignore it. We can then re-introduce it and use it properly at a later stage. --- swap/src/bob/execution.rs | 20 +++++++++++--------- swap/src/bob/swap.rs | 6 ++---- swap/tests/e2e.rs | 38 ++++++++++++-------------------------- 3 files changed, 25 insertions(+), 39 deletions(-) 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 9f574b8d..ab359c9d 100644 --- a/swap/src/bob/swap.rs +++ b/swap/src/bob/swap.rs @@ -18,7 +18,6 @@ pub enum BobState { Started { state0: bob::State0, amounts: SwapAmounts, - peer_id: PeerId, addr: Multiaddr, }, Negotiated(bob::State2, PeerId), @@ -118,10 +117,9 @@ where BobState::Started { state0, amounts, - peer_id, addr, } => { - let state2 = negotiate( + let (state2, alice_peer_id) = negotiate( state0, amounts, &mut swarm, @@ -131,7 +129,7 @@ where ) .await?; run_until( - BobState::Negotiated(state2, peer_id), + BobState::Negotiated(state2, alice_peer_id), is_target_state, swarm, db, diff --git a/swap/tests/e2e.rs b/swap/tests/e2e.rs index 248b1335..9958cfc8 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; @@ -51,7 +51,6 @@ async fn happy_path() { alice_swarm_handle, alice_btc_wallet, alice_xmr_wallet, - alice_peer_id, ) = init_alice( &bitcoind, &monero, @@ -66,7 +65,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, @@ -149,28 +147,21 @@ async fn alice_punishes_if_bob_never_acts_after_fund() { .parse() .expect("failed to parse Alice's address"); - 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(), - ) - .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(), + ) + .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, @@ -226,7 +217,6 @@ async fn init_alice( alice::event_loop::EventLoopHandle, Arc, Arc, - PeerId, ) { monero .init(vec![("alice", xmr_starting_balance.as_piconero())]) @@ -277,7 +267,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) = @@ -289,14 +278,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, @@ -353,7 +340,6 @@ async fn init_bob( let bob_state = BobState::Started { state0, amounts, - peer_id: alice_peer_id, addr: alice_multiaddr, };