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 神奇豆
每月166次下载
在 7 crate 中使用
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("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);
}
在 示例 文件夹中查看更多示例。
许可证
本项目采用 MIT 软件许可证发布 - 有关详细信息,请参阅 LICENSE 文件。
依赖项
~18–32MB
~471K SLoC