From d2dfb8845246c7e3ef19cf2d31ef480a7b392ece Mon Sep 17 00:00:00 2001 From: thesimplekid Date: Wed, 31 Jul 2024 08:45:44 -0500 Subject: [PATCH] refactor: get onchain settings from config --- crates/cdk-mintd/src/config.rs | 14 +++++++ crates/cdk-mintd/src/main.rs | 71 ++++++++++++++++++++++------------ 2 files changed, 60 insertions(+), 25 deletions(-) diff --git a/crates/cdk-mintd/src/config.rs b/crates/cdk-mintd/src/config.rs index 261fc506e..422152414 100644 --- a/crates/cdk-mintd/src/config.rs +++ b/crates/cdk-mintd/src/config.rs @@ -34,6 +34,19 @@ pub struct Ln { pub reserve_fee_min: Amount, } +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +pub struct Onchain { + pub send_enabled: bool, + pub receive_enabled: bool, + pub mnemonic: String, + pub min_melt: u64, + pub max_melt: u64, + pub min_mint: u64, + pub max_mint: u64, + pub ohttp_relay: Option, + pub payjoin_directory: Option, +} + #[derive(Debug, Clone, Serialize, Deserialize, Default)] pub struct Strike { pub api_key: String, @@ -79,6 +92,7 @@ pub struct Settings { pub cln: Option, pub strike: Option, pub fake_wallet: Option, + pub onchain: Option, pub database: Database, } diff --git a/crates/cdk-mintd/src/main.rs b/crates/cdk-mintd/src/main.rs index e6bd4cb37..4c271fac6 100644 --- a/crates/cdk-mintd/src/main.rs +++ b/crates/cdk-mintd/src/main.rs @@ -29,7 +29,7 @@ use cdk_sqlite::MintSqliteDatabase; use cdk_strike::Strike; use clap::Parser; use cli::CLIArgs; -use config::{DatabaseEngine, LnBackend}; +use config::{DatabaseEngine, LnBackend, Onchain}; use futures::StreamExt; use tokio::sync::Mutex; use tower_http::cors::CorsLayer; @@ -321,35 +321,56 @@ async fn main() -> anyhow::Result<()> { .seconds_quote_is_valid_for .unwrap_or(DEFAULT_QUOTE_TTL_SECS); - let payjoing_settings = PayjoinSettings { - receive_enabled: true, - send_enabled: false, - ohttp_relay: Some("https://pj.bobspacebkk.com".to_string()), - payjoin_directory: Some("https://payjo.in".to_string()), - }; - - let onchain = BdkWallet::new(0, 0, 0, 0, Mnemonic::parse("promote actress hand galaxy metal buzz square general outside business hard mother keen sound various").unwrap(), &work_dir, payjoing_settings) - .await - .unwrap(); - - let onchain_clone = onchain.clone(); - tokio::spawn(async move { - loop { - if let Err(err) = onchain_clone.wait_handle_proposal().await { - tracing::debug!("Handle proposal stopped: {}", err); - } - } - }); - let mut onchain_backends: HashMap< LnKey, Arc + Sync + Send>, > = HashMap::new(); - onchain_backends.insert( - LnKey::new(CurrencyUnit::Sat, PaymentMethod::BtcOnChain), - Arc::new(onchain), - ); + if let Some(onchain) = settings.onchain { + let Onchain { + mnemonic, + min_melt, + max_melt, + min_mint, + max_mint, + ohttp_relay, + payjoin_directory, + send_enabled, + receive_enabled, + } = onchain; + + let payjoing_settings = PayjoinSettings { + receive_enabled, + send_enabled, + ohttp_relay, + payjoin_directory, + }; + + let onchain = BdkWallet::new( + min_melt, + max_melt, + min_mint, + max_mint, + Mnemonic::parse(mnemonic)?, + &work_dir, + payjoing_settings, + ) + .await?; + + let onchain_clone = onchain.clone(); + tokio::spawn(async move { + loop { + if let Err(err) = onchain_clone.wait_handle_proposal().await { + tracing::debug!("Handle proposal stopped: {}", err); + } + } + }); + + onchain_backends.insert( + LnKey::new(CurrencyUnit::Sat, PaymentMethod::BtcOnChain), + Arc::new(onchain), + ); + } let v1_service = cdk_axum::create_mint_router( &mint_url,