devimint/federation/
config.rs
1use bitcoincore_rpc::bitcoin::Network;
2use fedimint_core::config::{EmptyGenParams, ServerModuleConfigGenParamsRegistry};
3use fedimint_core::default_esplora_server;
4use fedimint_core::envs::{BitcoinRpcConfig, FM_USE_UNKNOWN_MODULE_ENV, is_env_var_set};
5use fedimint_ln_server::LightningInit;
6use fedimint_ln_server::common::config::{
7 LightningGenParams, LightningGenParamsConsensus, LightningGenParamsLocal,
8};
9use fedimint_meta_server::{MetaGenParams, MetaInit};
10use fedimint_mint_server::MintInit;
11use fedimint_mint_server::common::config::{MintGenParams, MintGenParamsConsensus};
12use fedimint_server::core::ServerModuleInit as _;
13use fedimint_unknown_server::UnknownInit;
14use fedimint_unknown_server::common::config::UnknownGenParams;
15use fedimint_wallet_client::config::{
16 WalletGenParams, WalletGenParamsConsensus, WalletGenParamsLocal,
17};
18use fedimint_wallet_server::WalletInit;
19use fedimintd::envs::{FM_DISABLE_META_MODULE_ENV, FM_PORT_ESPLORA_ENV};
20
21use crate::util::supports_lnv2;
22
23pub fn attach_default_module_init_params(
25 bitcoin_rpc: &BitcoinRpcConfig,
26 module_init_params: &mut ServerModuleConfigGenParamsRegistry,
27 network: Network,
28 finality_delay: u32,
29) {
30 module_init_params.attach_config_gen_params(
31 LightningInit::kind(),
32 LightningGenParams {
33 local: LightningGenParamsLocal {
34 bitcoin_rpc: bitcoin_rpc.clone(),
35 },
36 consensus: LightningGenParamsConsensus { network },
37 },
38 );
39
40 module_init_params.attach_config_gen_params(
41 MintInit::kind(),
42 MintGenParams {
43 local: EmptyGenParams::default(),
44 consensus: MintGenParamsConsensus::new(
45 2,
46 fedimint_mint_common::config::FeeConsensus::zero(),
47 ),
48 },
49 );
50
51 module_init_params.attach_config_gen_params(
52 WalletInit::kind(),
53 WalletGenParams {
54 local: WalletGenParamsLocal {
55 bitcoin_rpc: bitcoin_rpc.clone(),
56 },
57 consensus: WalletGenParamsConsensus {
58 network,
59 finality_delay,
60 client_default_bitcoin_rpc: default_esplora_server(
61 network,
62 std::env::var(FM_PORT_ESPLORA_ENV).ok(),
63 ),
64 fee_consensus: fedimint_wallet_client::config::FeeConsensus::default(),
65 },
66 },
67 );
68
69 if supports_lnv2() {
70 module_init_params.attach_config_gen_params(
71 fedimint_lnv2_server::LightningInit::kind(),
72 fedimint_lnv2_common::config::LightningGenParams {
73 local: fedimint_lnv2_common::config::LightningGenParamsLocal {
74 bitcoin_rpc: bitcoin_rpc.clone(),
75 },
76 consensus: fedimint_lnv2_common::config::LightningGenParamsConsensus {
77 fee_consensus: fedimint_lnv2_common::config::FeeConsensus::new(1000)
78 .expect("Relative fee is within range"),
79 network,
80 },
81 },
82 );
83 }
84
85 if !is_env_var_set(FM_DISABLE_META_MODULE_ENV) {
86 module_init_params.attach_config_gen_params(MetaInit::kind(), MetaGenParams::default());
87 }
88
89 if is_env_var_set(FM_USE_UNKNOWN_MODULE_ENV) {
90 module_init_params
91 .attach_config_gen_params(UnknownInit::kind(), UnknownGenParams::default());
92 }
93}