Skip to main content

babylon_bitcoin/
chain_params.rs

1pub use bitcoin::consensus::Params;
2use schemars::JsonSchema;
3use serde::{Deserialize, Serialize};
4
5// we re-implement the enum here since `rust-bitcoin`'s enum implementation
6// does not have `#[derive(Serialize, Deserialize)]
7#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)]
8#[serde(rename_all = "snake_case")]
9pub enum Network {
10    Mainnet,
11    Testnet,
12    Signet,
13    Regtest,
14}
15
16impl Network {
17    pub fn chain_params(&self) -> Params {
18        match self {
19            Self::Mainnet => Params::new(bitcoin::Network::Bitcoin),
20            Self::Testnet => Params::new(bitcoin::Network::Testnet),
21            Self::Signet => Params::new(bitcoin::Network::Signet),
22            Self::Regtest => Params::new(bitcoin::Network::Regtest),
23        }
24    }
25
26    pub fn bitcoin_network(&self) -> bitcoin::Network {
27        match self {
28            Self::Mainnet => bitcoin::Network::Bitcoin,
29            Self::Testnet => bitcoin::Network::Testnet,
30            Self::Signet => bitcoin::Network::Signet,
31            Self::Regtest => bitcoin::Network::Regtest,
32        }
33    }
34}