wallet.rs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. use std::sync::Arc;
  2. use std::time::Duration;
  3. use cdk::nuts::nut00::ProofsMethods;
  4. use cdk::nuts::CurrencyUnit;
  5. use cdk::wallet::{SendOptions, Wallet};
  6. use cdk::Amount;
  7. use cdk_sqlite::wallet::memory;
  8. use rand::random;
  9. #[tokio::main]
  10. async fn main() -> Result<(), Box<dyn std::error::Error>> {
  11. // Generate a random seed for the wallet
  12. let seed = random::<[u8; 64]>();
  13. // Mint URL and currency unit
  14. let mint_url = "https://fake.thesimplekid.dev";
  15. let unit = CurrencyUnit::Sat;
  16. let amount = Amount::from(10);
  17. // Initialize the memory store
  18. let localstore = Arc::new(memory::empty().await?);
  19. // Create a new wallet
  20. let wallet = Wallet::new(mint_url, unit, localstore, seed, None)?;
  21. let quote = wallet.mint_quote(amount, None).await?;
  22. let proofs = wallet
  23. .wait_and_mint_quote(
  24. quote,
  25. Default::default(),
  26. Default::default(),
  27. Duration::from_secs(10),
  28. )
  29. .await?;
  30. // Mint the received amount
  31. let receive_amount = proofs.total_amount()?;
  32. println!("Minted {}", receive_amount);
  33. // Send the token
  34. let prepared_send = wallet.prepare_send(amount, SendOptions::default()).await?;
  35. let token = prepared_send.confirm(None).await?;
  36. println!("{}", token);
  37. Ok(())
  38. }