#mint #wallet #kit #protocols #cashu #change #memory

cdk

Cashu 协议的核心开发工具包库

4 个版本 (2 个破坏性版本)

0.2.0 2024年7月11日
0.1.1 2024年6月29日
0.1.0 2024年6月29日
0.0.0 2024年4月6日

#2452 in 神奇豆

Download history 3/week @ 2024-04-13 4/week @ 2024-04-20 4/week @ 2024-05-18 1/week @ 2024-05-25 4/week @ 2024-06-01 2/week @ 2024-06-08 239/week @ 2024-06-29 123/week @ 2024-07-06 27/week @ 2024-07-13 2/week @ 2024-07-20 9/week @ 2024-07-27

每月166次下载
7 crate 中使用

MIT 许可证

405KB
9K SLoC

Cashu 开发工具包

ALPHA 该库处于早期开发阶段,API 将会更改,应谨慎使用。

CDK 是实现 Cashu 协议的核心 crate,用于钱包和 Mint。

crate 功能标志

以下 crate 功能标志可用

功能 默认 描述
wallet 启用 cashu 钱包功能
mint 启用 cashu Mint 钱包功能

实现了 NUTs

详见 https://github.com/cashubtc/cdk/blob/main/README.md

示例

//! 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, Arc::new(localstore), &seed);

    let quote = wallet.mint_quote(amount).await.unwrap();

    println!("Pay request: {}", quote.request);

    loop {
        let status = wallet.mint_quote_state(&quote.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(&quote.id, SplitTarget::default(), None)
        .await
        .unwrap();

    println!("Minted {}", receive_amount);

    let token = wallet
        .send(amount, None, None, &SplitTarget::None)
        .await
        .unwrap();

    println!("{}", token);
}

示例 文件夹中查看更多示例。

许可证

本项目采用 MIT 软件许可证发布 - 有关详细信息,请参阅 LICENSE 文件。

依赖项

~18–32MB
~471K SLoC