init_fake_wallet.rs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. use std::collections::{HashMap, HashSet};
  2. use std::sync::Arc;
  3. use anyhow::Result;
  4. use bip39::Mnemonic;
  5. use cdk::cdk_database::{self, MintDatabase};
  6. use cdk::mint::{FeeReserve, MintBuilder, MintMeltLimits};
  7. use cdk::nuts::{CurrencyUnit, PaymentMethod};
  8. use cdk::types::QuoteTTL;
  9. use cdk_fake_wallet::FakeWallet;
  10. use tracing_subscriber::EnvFilter;
  11. use crate::init_mint::start_mint;
  12. pub async fn start_fake_mint<D>(addr: &str, port: u16, database: D) -> Result<()>
  13. where
  14. D: MintDatabase<Err = cdk_database::Error> + Send + Sync + 'static,
  15. {
  16. let default_filter = "debug";
  17. let sqlx_filter = "sqlx=warn";
  18. let hyper_filter = "hyper=warn";
  19. let env_filter = EnvFilter::new(format!(
  20. "{},{},{}",
  21. default_filter, sqlx_filter, hyper_filter
  22. ));
  23. // Parse input
  24. tracing_subscriber::fmt().with_env_filter(env_filter).init();
  25. let fee_reserve = FeeReserve {
  26. min_fee_reserve: 1.into(),
  27. percent_fee_reserve: 0.0,
  28. };
  29. let fake_wallet = FakeWallet::new(fee_reserve, HashMap::default(), HashSet::default(), 0);
  30. let mut mint_builder = MintBuilder::new();
  31. let localstore = Arc::new(database);
  32. mint_builder = mint_builder.with_localstore(localstore.clone());
  33. mint_builder = mint_builder.add_ln_backend(
  34. CurrencyUnit::Sat,
  35. PaymentMethod::Bolt11,
  36. MintMeltLimits::new(1, 5_000),
  37. Arc::new(fake_wallet),
  38. );
  39. let fee_reserve = FeeReserve {
  40. min_fee_reserve: 1.into(),
  41. percent_fee_reserve: 0.0,
  42. };
  43. let fake_wallet = FakeWallet::new(fee_reserve, HashMap::default(), HashSet::default(), 0);
  44. mint_builder = mint_builder.add_ln_backend(
  45. CurrencyUnit::Usd,
  46. PaymentMethod::Bolt11,
  47. MintMeltLimits::new(1, 5_000),
  48. Arc::new(fake_wallet),
  49. );
  50. let mnemonic = Mnemonic::generate(12)?;
  51. mint_builder = mint_builder
  52. .with_name("fake test mint".to_string())
  53. .with_description("fake test mint".to_string())
  54. .with_seed(mnemonic.to_seed_normalized("").to_vec());
  55. localstore
  56. .set_mint_info(mint_builder.mint_info.clone())
  57. .await?;
  58. let quote_ttl = QuoteTTL::new(10000, 10000);
  59. localstore.set_quote_ttl(quote_ttl).await?;
  60. let mint = mint_builder.build().await?;
  61. start_mint(addr, port, mint).await?;
  62. Ok(())
  63. }