fedimintd/
lib.rs

1#![deny(clippy::pedantic)]
2#![allow(clippy::cast_possible_wrap)]
3#![allow(clippy::missing_errors_doc)]
4#![allow(clippy::missing_panics_doc)]
5#![allow(clippy::must_use_candidate)]
6#![allow(clippy::return_self_not_must_use)]
7#![allow(clippy::large_futures)]
8
9/// Module for creating `fedimintd` binary with custom modules
10use bitcoin::Network;
11use fedimint_core::envs::BitcoinRpcConfig;
12use fedimint_core::util::SafeUrl;
13pub use fedimintd::*;
14
15mod fedimintd;
16
17pub mod envs;
18use crate::envs::{FM_DEFAULT_ESPLORA_API_ENV, FM_PORT_ESPLORA_ENV};
19
20#[allow(clippy::map_unwrap_or)]
21pub fn default_esplora_server(network: Network) -> BitcoinRpcConfig {
22    let url = std::env::var(FM_DEFAULT_ESPLORA_API_ENV)
23        .ok()
24        .map(|s| SafeUrl::parse(&s).expect("Failed to parse default esplora server"))
25        .unwrap_or_else(|| match network {
26            Network::Bitcoin => SafeUrl::parse("https://blockstream.info/api/")
27                .expect("Failed to parse default esplora server"),
28            Network::Testnet => SafeUrl::parse("https://blockstream.info/testnet/api/")
29                .expect("Failed to parse default esplora server"),
30            Network::Regtest => SafeUrl::parse(&format!(
31                "http://127.0.0.1:{}/",
32                std::env::var(FM_PORT_ESPLORA_ENV).unwrap_or(String::from("50002"))
33            ))
34            .expect("Failed to parse default esplora server"),
35            Network::Signet => SafeUrl::parse("https://blockstream.info/signet/api/")
36                .expect("Failed to parse default esplora server"),
37            _ => panic!("Failed to parse default esplora server"),
38        });
39    BitcoinRpcConfig {
40        kind: "esplora".to_string(),
41        url,
42    }
43}