mirror of
https://github.com/comit-network/xmr-btc-swap.git
synced 2025-05-20 15:40:48 -04:00
Bob peer id can be retrieved from the DB
This remove branches where Alice resumes from the DB but cannot contact Bob.
This commit is contained in:
parent
a910bc2046
commit
33db688e3a
6 changed files with 111 additions and 56 deletions
|
@ -5,6 +5,7 @@ use crate::{
|
|||
protocol::{alice, alice::AliceState, SwapAmounts},
|
||||
};
|
||||
use ::bitcoin::hashes::core::fmt::Display;
|
||||
use libp2p::PeerId;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
// Large enum variant is fine because this is only used for database
|
||||
|
@ -16,8 +17,16 @@ pub enum Alice {
|
|||
amounts: SwapAmounts,
|
||||
state0: alice::State0,
|
||||
},
|
||||
Negotiated(alice::State3),
|
||||
BtcLocked(alice::State3),
|
||||
Negotiated {
|
||||
state3: alice::State3,
|
||||
#[serde(with = "crate::serde_peer_id")]
|
||||
bob_peer_id: PeerId,
|
||||
},
|
||||
BtcLocked {
|
||||
state3: alice::State3,
|
||||
#[serde(with = "crate::serde_peer_id")]
|
||||
bob_peer_id: PeerId,
|
||||
},
|
||||
XmrLocked(alice::State3),
|
||||
EncSigLearned {
|
||||
encrypted_signature: EncryptedSignature,
|
||||
|
@ -45,8 +54,22 @@ pub enum AliceEndState {
|
|||
impl From<&AliceState> for Alice {
|
||||
fn from(alice_state: &AliceState) -> Self {
|
||||
match alice_state {
|
||||
AliceState::Negotiated { state3, .. } => Alice::Negotiated(state3.as_ref().clone()),
|
||||
AliceState::BtcLocked { state3, .. } => Alice::BtcLocked(state3.as_ref().clone()),
|
||||
AliceState::Negotiated {
|
||||
state3,
|
||||
bob_peer_id,
|
||||
..
|
||||
} => Alice::Negotiated {
|
||||
state3: state3.as_ref().clone(),
|
||||
bob_peer_id: bob_peer_id.clone(),
|
||||
},
|
||||
AliceState::BtcLocked {
|
||||
state3,
|
||||
bob_peer_id,
|
||||
..
|
||||
} => Alice::BtcLocked {
|
||||
state3: state3.as_ref().clone(),
|
||||
bob_peer_id: bob_peer_id.clone(),
|
||||
},
|
||||
AliceState::XmrLocked { state3 } => Alice::XmrLocked(state3.as_ref().clone()),
|
||||
AliceState::EncSigLearned {
|
||||
state3,
|
||||
|
@ -82,16 +105,22 @@ impl From<Alice> for AliceState {
|
|||
fn from(db_state: Alice) -> Self {
|
||||
match db_state {
|
||||
Alice::Started { amounts, state0 } => AliceState::Started { amounts, state0 },
|
||||
Alice::Negotiated(state3) => AliceState::Negotiated {
|
||||
bob_peer_id: None,
|
||||
Alice::Negotiated {
|
||||
state3,
|
||||
bob_peer_id,
|
||||
} => AliceState::Negotiated {
|
||||
bob_peer_id,
|
||||
amounts: SwapAmounts {
|
||||
btc: state3.btc,
|
||||
xmr: state3.xmr,
|
||||
},
|
||||
state3: Box::new(state3),
|
||||
},
|
||||
Alice::BtcLocked(state3) => AliceState::BtcLocked {
|
||||
bob_peer_id: None,
|
||||
Alice::BtcLocked {
|
||||
state3,
|
||||
bob_peer_id,
|
||||
} => AliceState::BtcLocked {
|
||||
bob_peer_id,
|
||||
amounts: SwapAmounts {
|
||||
btc: state3.btc,
|
||||
xmr: state3.xmr,
|
||||
|
@ -157,8 +186,8 @@ impl Display for Alice {
|
|||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
Alice::Started { .. } => write!(f, "Started"),
|
||||
Alice::Negotiated(_) => f.write_str("Negotiated"),
|
||||
Alice::BtcLocked(_) => f.write_str("Bitcoin locked"),
|
||||
Alice::Negotiated { .. } => f.write_str("Negotiated"),
|
||||
Alice::BtcLocked { .. } => f.write_str("Bitcoin locked"),
|
||||
Alice::XmrLocked(_) => f.write_str("Monero locked"),
|
||||
Alice::CancelTimelockExpired(_) => f.write_str("Cancel timelock is expired"),
|
||||
Alice::BtcCancelled(_) => f.write_str("Bitcoin cancel transaction published"),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue