|
|
@@ -5,22 +5,34 @@ The CDK [`Wallet`] is a high level Cashu wallet. The [`Wallet`] is for a single
|
|
|
|
|
|
## Example
|
|
|
|
|
|
-### Create [`Wallet`]
|
|
|
+### Create and Initialize [`Wallet`]
|
|
|
+
|
|
|
```rust
|
|
|
- use std::sync::Arc;
|
|
|
- use cdk::nuts::CurrencyUnit;
|
|
|
- use cdk::wallet::Wallet;
|
|
|
- use cdk_sqlite::wallet::memory;
|
|
|
- use rand::random;
|
|
|
-
|
|
|
- #[tokio::main]
|
|
|
- async fn main() -> anyhow::Result<()> {
|
|
|
+use std::sync::Arc;
|
|
|
+use cdk::nuts::CurrencyUnit;
|
|
|
+use cdk::wallet::Wallet;
|
|
|
+use cdk_sqlite::wallet::memory;
|
|
|
+use rand::random;
|
|
|
+
|
|
|
+#[tokio::main]
|
|
|
+async fn main() -> anyhow::Result<()> {
|
|
|
let seed = random::<[u8; 64]>();
|
|
|
let mint_url = "https://fake.thesimplekid.dev";
|
|
|
let unit = CurrencyUnit::Sat;
|
|
|
|
|
|
let localstore = memory::empty().await?;
|
|
|
- let wallet = Wallet::new(mint_url, unit, Arc::new(localstore), seed, None);
|
|
|
+ let wallet = Wallet::new(mint_url, unit, Arc::new(localstore), seed, None)?;
|
|
|
+
|
|
|
+ // Required: Recover crashed operations (swap, send, receive, melt)
|
|
|
+ // This prevents proofs from being stuck in reserved states.
|
|
|
+ let report = wallet.recover_incomplete_sagas().await?;
|
|
|
+ println!("Recovered: {}, Compensated: {}, Skipped: {}, Failed: {}",
|
|
|
+ report.recovered, report.compensated, report.skipped, report.failed);
|
|
|
+
|
|
|
+ // Optional: Check and mint pending mint quotes (makes network calls)
|
|
|
+ let minted = wallet.mint_unissued_quotes().await?;
|
|
|
+ println!("Minted {} from pending quotes", minted);
|
|
|
+
|
|
|
Ok(())
|
|
|
- }
|
|
|
+}
|
|
|
```
|