xmr-btc-swap/swap/src/lib.rs

51 lines
1.2 KiB
Rust
Raw Normal View History

use serde::{Deserialize, Serialize};
2020-10-15 23:43:32 +00:00
use std::fmt::{self, Display};
pub mod alice;
2020-10-21 02:01:10 +00:00
pub mod bitcoin;
pub mod bob;
2020-10-21 02:01:10 +00:00
pub mod monero;
pub mod network;
pub const ONE_BTC: u64 = 100_000_000;
2020-10-21 03:41:50 +00:00
const REFUND_TIMELOCK: u32 = 10; // FIXME: What should this be?
const PUNISH_TIMELOCK: u32 = 20; // FIXME: What should this be?
pub type Never = std::convert::Infallible;
/// Commands sent from Bob to the main task.
2020-10-15 23:43:32 +00:00
#[derive(Clone, Copy, Debug)]
pub enum Cmd {
VerifyAmounts(SwapParams),
}
/// Responses send from the main task back to Bob.
2020-10-15 23:43:32 +00:00
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum Rsp {
Verified,
Abort,
}
/// XMR/BTC swap parameters.
#[derive(Copy, Clone, Debug, Serialize, Deserialize)]
pub struct SwapParams {
/// Amount of BTC to swap.
2020-10-21 02:01:10 +00:00
#[serde(with = "::bitcoin::util::amount::serde::as_sat")]
2020-10-21 03:41:50 +00:00
pub btc: ::bitcoin::Amount,
/// Amount of XMR to swap.
2020-10-21 03:41:50 +00:00
#[serde(with = "crate::monero::amount_serde")]
pub xmr: xmr_btc::monero::Amount,
}
2020-10-15 23:43:32 +00:00
impl Display for SwapParams {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2020-10-21 03:41:50 +00:00
write!(
f,
"{} sats for {} piconeros",
self.btc.as_sat(),
self.xmr.as_piconero()
)
2020-10-15 23:43:32 +00:00
}
}