diff --git a/swap/src/bin/swap.rs b/swap/src/bin/swap.rs index 630b374f..5e643dd1 100644 --- a/swap/src/bin/swap.rs +++ b/swap/src/bin/swap.rs @@ -151,7 +151,7 @@ async fn main() -> Result<()> { let seed = Seed::from_file_or_generate(data_dir.as_path()) .context("Failed to read in seed file")?; - if monero_receive_address.network != env_config.monero_network { + if monero_receive_address.network != env_config.monero_network.into() { bail!("The given monero address is on network {:?}, expected address of network {:?}.", monero_receive_address.network, env_config.monero_network) } @@ -294,7 +294,7 @@ async fn init_monero_wallet( let monero_wallet_rpc = monero::WalletRpc::new(data_dir.join("monero")).await?; let monero_wallet_rpc_process = monero_wallet_rpc - .run(network, monero_daemon_address.as_str()) + .run(network.into(), monero_daemon_address.as_str()) .await?; let monero_wallet = monero::Wallet::open_or_create( diff --git a/swap/src/env.rs b/swap/src/env.rs index 3164c3bd..debe18c7 100644 --- a/swap/src/env.rs +++ b/swap/src/env.rs @@ -1,4 +1,5 @@ use crate::bitcoin::{CancelTimelock, PunishTimelock}; +use crate::monero; use std::cmp::max; use std::time::Duration; use time::NumericalStdDurationShort; diff --git a/swap/src/monero.rs b/swap/src/monero.rs index 6886cbf1..c56a4622 100644 --- a/swap/src/monero.rs +++ b/swap/src/monero.rs @@ -1,7 +1,7 @@ pub mod wallet; mod wallet_rpc; -pub use ::monero::{Address, Network, PrivateKey, PublicKey}; +pub use ::monero::{Address, PrivateKey, PublicKey}; pub use curve25519_dalek::scalar::Scalar; pub use wallet::Wallet; pub use wallet_rpc::{WalletRpc, WalletRpcProcess}; @@ -19,6 +19,33 @@ use std::str::FromStr; pub const PICONERO_OFFSET: u64 = 1_000_000_000_000; +#[derive(Debug, PartialEq, Eq, Hash, Clone, Copy, Serialize, Deserialize)] +pub enum Network { + Mainnet, + Stagenet, + Testnet, +} + +impl From for Network { + fn from(network: monero::Network) -> Self { + match network { + monero::Network::Mainnet => Self::Mainnet, + monero::Network::Stagenet => Self::Stagenet, + monero::Network::Testnet => Self::Testnet, + } + } +} + +impl From for monero::Network { + fn from(network: Network) -> Self { + match network { + Network::Mainnet => monero::Network::Mainnet, + Network::Stagenet => monero::Network::Stagenet, + Network::Testnet => monero::Network::Testnet, + } + } +} + pub fn private_key_from_secp256k1_scalar(scalar: bitcoin::Scalar) -> PrivateKey { let mut bytes = scalar.to_bytes(); diff --git a/swap/src/monero/wallet.rs b/swap/src/monero/wallet.rs index 4732a632..686c783c 100644 --- a/swap/src/monero/wallet.rs +++ b/swap/src/monero/wallet.rs @@ -47,7 +47,7 @@ impl Wallet { monero::Address::from_str(client.get_address(0).await?.address.as_str())?; Ok(Self { inner: Mutex::new(client), - network: env_config.monero_network, + network: env_config.monero_network.into(), name, main_address, sync_interval: env_config.monero_sync_interval(),