Files
cdk/crates/cdk/examples/mint-token.rs
thesimplekid 04a463be1f feat(wallet): make wallet single mint and unit
feat(wallet): cli use mint with one url and unit

feat(wallet): remove p2pk keys from wallet

feat(wallet): multimint wallet
2024-06-27 12:09:44 +01:00

57 lines
1.3 KiB
Rust

use std::sync::Arc;
use std::time::Duration;
use cdk::amount::SplitTarget;
use cdk::cdk_database::WalletMemoryDatabase;
use cdk::error::Error;
use cdk::nuts::CurrencyUnit;
use cdk::wallet::Wallet;
use cdk::Amount;
use rand::Rng;
use tokio::time::sleep;
#[tokio::main]
async fn main() -> Result<(), Error> {
let localstore = WalletMemoryDatabase::default();
let seed = rand::thread_rng().gen::<[u8; 32]>();
let mint_url = "https://testnut.cashu.space";
let unit = CurrencyUnit::Sat;
let amount = Amount::from(10);
let wallet = Wallet::new(mint_url, unit, Arc::new(localstore), &seed);
let quote = wallet.mint_quote(amount).await.unwrap();
println!("Quote: {:#?}", quote);
loop {
let status = wallet.mint_quote_status(&quote.id).await.unwrap();
println!("Quote status: {}", status.paid);
if status.paid {
break;
}
sleep(Duration::from_secs(5)).await;
}
let receive_amount = wallet
.mint(&quote.id, SplitTarget::default(), None)
.await
.unwrap();
println!("Received {receive_amount} from mint {mint_url}");
let token = wallet
.send(amount, None, None, &SplitTarget::default())
.await
.unwrap();
println!("Token:");
println!("{}", token);
Ok(())
}