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-01-27 02:33:32 +00:00
|
|
|
pub struct ExecutionParams {
|
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-03-11 04:01:55 +00:00
|
|
|
pub monero_avg_block_time: Duration,
|
2021-01-05 06:09:55 +00:00
|
|
|
pub monero_finality_confirmations: u32,
|
2021-02-15 01:19:43 +00:00
|
|
|
pub bitcoin_cancel_timelock: CancelTimelock,
|
|
|
|
pub bitcoin_punish_timelock: PunishTimelock,
|
2020-12-01 23:00:00 +00:00
|
|
|
}
|
|
|
|
|
2021-01-27 02:33:32 +00:00
|
|
|
pub trait GetExecutionParams {
|
|
|
|
fn get_execution_params() -> ExecutionParams;
|
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-01-27 02:33:32 +00:00
|
|
|
impl GetExecutionParams for Mainnet {
|
|
|
|
fn get_execution_params() -> ExecutionParams {
|
|
|
|
ExecutionParams {
|
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 04:01:55 +00:00
|
|
|
monero_avg_block_time: 2.minutes(),
|
2021-03-11 03:57:47 +00:00
|
|
|
monero_finality_confirmations: 15,
|
|
|
|
bitcoin_cancel_timelock: CancelTimelock::new(72),
|
|
|
|
bitcoin_punish_timelock: PunishTimelock::new(72),
|
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-01-27 02:33:32 +00:00
|
|
|
impl GetExecutionParams for Testnet {
|
|
|
|
fn get_execution_params() -> ExecutionParams {
|
|
|
|
ExecutionParams {
|
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 04:01:55 +00:00
|
|
|
monero_avg_block_time: 2.minutes(),
|
2021-03-11 03:57:47 +00:00
|
|
|
monero_finality_confirmations: 10,
|
|
|
|
bitcoin_cancel_timelock: CancelTimelock::new(12),
|
|
|
|
bitcoin_punish_timelock: PunishTimelock::new(6),
|
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-01-27 02:33:32 +00:00
|
|
|
impl GetExecutionParams for Regtest {
|
|
|
|
fn get_execution_params() -> ExecutionParams {
|
|
|
|
ExecutionParams {
|
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 04:01:55 +00:00
|
|
|
monero_avg_block_time: 1.seconds(),
|
2021-03-11 03:57:47 +00:00
|
|
|
monero_finality_confirmations: 10,
|
|
|
|
bitcoin_cancel_timelock: CancelTimelock::new(100),
|
|
|
|
bitcoin_punish_timelock: PunishTimelock::new(50),
|
2020-12-01 23:00:00 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|