mirror of
https://github.com/aljazceru/cdk.git
synced 2026-01-10 00:16:02 +01:00
feat: add wallet expple to cdk README
This commit is contained in:
@@ -61,6 +61,10 @@ required-features = ["wallet"]
|
||||
name = "p2pk"
|
||||
required-features = ["wallet"]
|
||||
|
||||
[[example]]
|
||||
name = "wallet"
|
||||
required-features = ["wallet"]
|
||||
|
||||
[dev-dependencies]
|
||||
rand = "0.8.5"
|
||||
bip39.workspace = true
|
||||
|
||||
@@ -18,6 +18,70 @@ The following crate feature flags are available:
|
||||
|
||||
See <https://github.com/cashubtc/cdk/blob/main/README.md>
|
||||
|
||||
## Examples
|
||||
|
||||
```rust
|
||||
//! Wallet example with memory store
|
||||
|
||||
use std::sync::Arc;
|
||||
use std::time::Duration;
|
||||
|
||||
use cdk::amount::SplitTarget;
|
||||
use cdk::cdk_database::WalletMemoryDatabase;
|
||||
use cdk::nuts::{CurrencyUnit, MintQuoteState};
|
||||
use cdk::wallet::Wallet;
|
||||
use cdk::Amount;
|
||||
use rand::Rng;
|
||||
use tokio::time::sleep;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
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 localstore = WalletMemoryDatabase::default();
|
||||
|
||||
let wallet = Wallet::new(mint_url, unit.clone(), Arc::new(localstore), &seed);
|
||||
|
||||
let quote = wallet.mint_quote(amount).await.unwrap();
|
||||
|
||||
println!("Pay request: {}", quote.request);
|
||||
|
||||
loop {
|
||||
let status = wallet.mint_quote_state("e.id).await.unwrap();
|
||||
|
||||
if status.state == MintQuoteState::Paid {
|
||||
break;
|
||||
}
|
||||
|
||||
println!("Quote state: {}", status.state);
|
||||
|
||||
sleep(Duration::from_secs(5)).await;
|
||||
}
|
||||
|
||||
let receive_amount = wallet
|
||||
.mint("e.id, SplitTarget::default(), None)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
println!("Minted {}", receive_amount);
|
||||
|
||||
let token = wallet
|
||||
.send(amount, None, None, &SplitTarget::None)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
println!("{}", token);
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
See more examples in the [examples](./examples) folder.
|
||||
|
||||
|
||||
## License
|
||||
|
||||
This project is distributed under the MIT software license - see the [LICENSE](../../LICENSE) file for details
|
||||
|
||||
55
crates/cdk/examples/wallet.rs
Normal file
55
crates/cdk/examples/wallet.rs
Normal file
@@ -0,0 +1,55 @@
|
||||
//! Wallet example with memory store
|
||||
|
||||
use std::sync::Arc;
|
||||
use std::time::Duration;
|
||||
|
||||
use cdk::amount::SplitTarget;
|
||||
use cdk::cdk_database::WalletMemoryDatabase;
|
||||
use cdk::nuts::{CurrencyUnit, MintQuoteState};
|
||||
use cdk::wallet::Wallet;
|
||||
use cdk::Amount;
|
||||
use rand::Rng;
|
||||
use tokio::time::sleep;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
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 localstore = WalletMemoryDatabase::default();
|
||||
|
||||
let wallet = Wallet::new(mint_url, unit.clone(), Arc::new(localstore), &seed);
|
||||
|
||||
let quote = wallet.mint_quote(amount).await.unwrap();
|
||||
|
||||
println!("Pay request: {}", quote.request);
|
||||
|
||||
loop {
|
||||
let status = wallet.mint_quote_state("e.id).await.unwrap();
|
||||
|
||||
if status.state == MintQuoteState::Paid {
|
||||
break;
|
||||
}
|
||||
|
||||
println!("Quote state: {}", status.state);
|
||||
|
||||
sleep(Duration::from_secs(5)).await;
|
||||
}
|
||||
|
||||
let receive_amount = wallet
|
||||
.mint("e.id, SplitTarget::default(), None)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
println!("Minted {}", receive_amount);
|
||||
|
||||
let token = wallet
|
||||
.send(amount, None, None, &SplitTarget::None)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
println!("{}", token);
|
||||
}
|
||||
@@ -175,7 +175,6 @@ where
|
||||
let vec = value
|
||||
.as_array()
|
||||
.ok_or_else(|| de::Error::custom("expected a list of strings"))?;
|
||||
println!("{:?}", vec[0]);
|
||||
for val in vec {
|
||||
let vec = val
|
||||
.as_array()
|
||||
|
||||
Reference in New Issue
Block a user