2021-02-15 01:19:43 +00:00
|
|
|
use crate::bitcoin::{CancelTimelock, PunishTimelock};
|
2020-12-01 23:00:00 +00:00
|
|
|
use std::time::Duration;
|
2021-03-11 03:59:57 +00:00
|
|
|
use time::NumericalStdDurationShort;
|
2020-12-01 23:00:00 +00:00
|
|
|
|
|
|
|
#[derive(Debug, Copy, Clone)]
|
2021-03-17 03:55:42 +00:00
|
|
|
pub struct Config {
|
2020-12-01 23:00:00 +00:00
|
|
|
pub bob_time_to_act: Duration,
|
|
|
|
pub bitcoin_finality_confirmations: u32,
|
|
|
|
pub bitcoin_avg_block_time: Duration,
|
2021-02-15 01:19:43 +00:00
|
|
|
pub bitcoin_cancel_timelock: CancelTimelock,
|
|
|
|
pub bitcoin_punish_timelock: PunishTimelock,
|
2021-03-17 02:36:43 +00:00
|
|
|
pub bitcoin_network: bitcoin::Network,
|
2021-03-17 02:18:49 +00:00
|
|
|
pub monero_avg_block_time: Duration,
|
|
|
|
pub monero_finality_confirmations: u32,
|
2021-03-17 02:36:43 +00:00
|
|
|
pub monero_network: monero::Network,
|
2020-12-01 23:00:00 +00:00
|
|
|
}
|
|
|
|
|
2021-03-17 03:55:42 +00:00
|
|
|
pub trait GetConfig {
|
|
|
|
fn get_config() -> Config;
|
2021-01-27 06:03:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Clone, Copy)]
|
|
|
|
pub struct Mainnet;
|
|
|
|
|
|
|
|
#[derive(Clone, Copy)]
|
|
|
|
pub struct Testnet;
|
|
|
|
|
|
|
|
#[derive(Clone, Copy)]
|
|
|
|
pub struct Regtest;
|
|
|
|
|
2021-03-17 03:55:42 +00:00
|
|
|
impl GetConfig for Mainnet {
|
|
|
|
fn get_config() -> Config {
|
|
|
|
Config {
|
2021-03-11 03:59:57 +00:00
|
|
|
bob_time_to_act: 10.minutes(),
|
2021-03-11 03:57:47 +00:00
|
|
|
bitcoin_finality_confirmations: 3,
|
2021-03-11 03:59:57 +00:00
|
|
|
bitcoin_avg_block_time: 10.minutes(),
|
2021-03-11 03:57:47 +00:00
|
|
|
bitcoin_cancel_timelock: CancelTimelock::new(72),
|
|
|
|
bitcoin_punish_timelock: PunishTimelock::new(72),
|
2021-03-17 02:36:43 +00:00
|
|
|
bitcoin_network: bitcoin::Network::Bitcoin,
|
2021-03-17 02:18:49 +00:00
|
|
|
monero_avg_block_time: 2.minutes(),
|
|
|
|
monero_finality_confirmations: 15,
|
2021-03-17 02:36:43 +00:00
|
|
|
monero_network: monero::Network::Mainnet,
|
2021-01-04 09:29:11 +00:00
|
|
|
}
|
|
|
|
}
|
2021-01-27 06:03:52 +00:00
|
|
|
}
|
2021-01-04 09:29:11 +00:00
|
|
|
|
2021-03-17 03:55:42 +00:00
|
|
|
impl GetConfig for Testnet {
|
|
|
|
fn get_config() -> Config {
|
|
|
|
Config {
|
2021-03-11 03:59:57 +00:00
|
|
|
bob_time_to_act: 60.minutes(),
|
2021-03-11 03:57:47 +00:00
|
|
|
bitcoin_finality_confirmations: 1,
|
2021-03-11 03:59:57 +00:00
|
|
|
bitcoin_avg_block_time: 5.minutes(),
|
2021-03-11 03:57:47 +00:00
|
|
|
bitcoin_cancel_timelock: CancelTimelock::new(12),
|
|
|
|
bitcoin_punish_timelock: PunishTimelock::new(6),
|
2021-03-17 02:36:43 +00:00
|
|
|
bitcoin_network: bitcoin::Network::Testnet,
|
2021-03-17 02:18:49 +00:00
|
|
|
monero_avg_block_time: 2.minutes(),
|
|
|
|
monero_finality_confirmations: 10,
|
2021-03-17 02:36:43 +00:00
|
|
|
monero_network: monero::Network::Stagenet,
|
2020-12-01 23:00:00 +00:00
|
|
|
}
|
|
|
|
}
|
2021-01-27 06:03:52 +00:00
|
|
|
}
|
2020-12-01 23:00:00 +00:00
|
|
|
|
2021-03-17 03:55:42 +00:00
|
|
|
impl GetConfig for Regtest {
|
|
|
|
fn get_config() -> Config {
|
|
|
|
Config {
|
2021-03-11 03:59:57 +00:00
|
|
|
bob_time_to_act: 30.seconds(),
|
2021-03-11 03:57:47 +00:00
|
|
|
bitcoin_finality_confirmations: 1,
|
2021-03-11 03:59:57 +00:00
|
|
|
bitcoin_avg_block_time: 5.seconds(),
|
2021-03-11 03:57:47 +00:00
|
|
|
bitcoin_cancel_timelock: CancelTimelock::new(100),
|
|
|
|
bitcoin_punish_timelock: PunishTimelock::new(50),
|
2021-03-17 02:36:43 +00:00
|
|
|
bitcoin_network: bitcoin::Network::Regtest,
|
2021-03-17 02:18:49 +00:00
|
|
|
monero_avg_block_time: 1.seconds(),
|
|
|
|
monero_finality_confirmations: 10,
|
2021-03-17 03:55:42 +00:00
|
|
|
monero_network: monero::Network::Mainnet, // yes this is strange
|
2020-12-01 23:00:00 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|