diff --git a/swap/src/asb/config.rs b/swap/src/asb/config.rs index 08ba65c5..c27a04da 100644 --- a/swap/src/asb/config.rs +++ b/swap/src/asb/config.rs @@ -293,10 +293,12 @@ pub fn query_user_for_initial_config(testnet: bool) -> Result { bitcoin: Bitcoin { electrum_rpc_url, target_block, + finality_confirmations: None, network: bitcoin_network, }, monero: Monero { wallet_rpc_url: monero_wallet_rpc_url, + finality_confirmations: None, network: monero_network, }, tor: TorConf { @@ -330,6 +332,7 @@ mod tests { bitcoin: Bitcoin { electrum_rpc_url: defaults.electrum_rpc_url, target_block: defaults.bitcoin_confirmation_target, + finality_confirmations: None, network: bitcoin::Network::Testnet, }, network: Network { @@ -338,6 +341,7 @@ mod tests { monero: Monero { wallet_rpc_url: defaults.monero_wallet_rpc_url, + finality_confirmations: None, network: monero::Network::Stagenet, }, tor: Default::default(), @@ -368,6 +372,7 @@ mod tests { bitcoin: Bitcoin { electrum_rpc_url: defaults.electrum_rpc_url, target_block: defaults.bitcoin_confirmation_target, + finality_confirmations: None, network: bitcoin::Network::Bitcoin, }, network: Network { @@ -376,6 +381,7 @@ mod tests { monero: Monero { wallet_rpc_url: defaults.monero_wallet_rpc_url, + finality_confirmations: None, network: monero::Network::Mainnet, }, tor: Default::default(), diff --git a/swap/src/bin/asb.rs b/swap/src/bin/asb.rs index 511955ac..d32ba3af 100644 --- a/swap/src/bin/asb.rs +++ b/swap/src/bin/asb.rs @@ -26,7 +26,6 @@ use swap::asb::config::{ GetDefaults, }; use swap::database::Database; -use swap::env::GetConfig; use swap::monero::Amount; use swap::network::swarm; use swap::protocol::alice; @@ -69,11 +68,7 @@ async fn main() -> Result<()> { } }; - let env_config = if testnet { - env::Testnet::get_config() - } else { - env::Mainnet::get_config() - }; + let env_config = env::new(testnet, &config); if config.monero.network != env_config.monero_network { bail!(format!( diff --git a/swap/src/env.rs b/swap/src/env.rs index 3164c3bd..e7834e6a 100644 --- a/swap/src/env.rs +++ b/swap/src/env.rs @@ -1,3 +1,4 @@ +use crate::asb; use crate::bitcoin::{CancelTimelock, PunishTimelock}; use std::cmp::max; use std::time::Duration; @@ -91,6 +92,33 @@ fn sync_interval(avg_block_time: Duration) -> Duration { max(avg_block_time / 10, Duration::from_secs(1)) } +pub fn new(is_testnet: bool, asb_config: &asb::config::Config) -> Config { + let env_config = if is_testnet { + Testnet::get_config() + } else { + Mainnet::get_config() + }; + + let env_config = + if let Some(bitcoin_finality_confirmations) = asb_config.bitcoin.finality_confirmations { + Config { + bitcoin_finality_confirmations, + ..env_config + } + } else { + env_config + }; + + if let Some(monero_finality_confirmations) = asb_config.monero.finality_confirmations { + Config { + monero_finality_confirmations, + ..env_config + } + } else { + env_config + } +} + #[cfg(test)] mod tests { use super::*;