45 个版本 (27 个破坏性)
1.0.0-alpha.11 | 2024 年 5 月 10 日 |
---|---|
1.0.0-alpha.9 | 2024 年 4 月 15 日 |
1.0.0-alpha.8 | 2024 年 3 月 27 日 |
1.0.0-alpha.2 | 2023 年 10 月 12 日 |
0.1.0-beta.1+stub |
|
#1 in #psbt
每月下载量 13,453
在 22 个crate中使用 (19 直接)
795KB
14K SLoC
bdk
bdk
crate 提供了 Wallet
类型,这是一个简单的高级接口,由 bdk_chain
的低级组件构建而成。Wallet
是许多简单应用程序的良好起点,也是如何使用其他机制构建钱包的良好示例。它有两个密钥库(外部和内部),由 miniscript 描述符 定义,并使用它们生成地址。当你给它链数据时,它也使用描述符来查找它们拥有的交易输出。从那里,你可以创建和签署交易。
有关 Wallet
API 的详细信息,请参阅 模块级文档。
区块链数据
为了获取区块链数据供 Wallet
消费,您应从可用的链源配置一个客户端。通常,您向链源发出请求并获取一个响应,该响应是 Wallet
可以用来更新其链视图的。
区块链数据源
bdk_esplora
:从 Esplora 抓取区块链数据以更新 BDK 结构。bdk_electrum
:从 Electrum 抓取区块链数据以更新 BDK 结构。bdk_bitcoind_rpc
:从 Bitcoin Core 抓取区块链数据以更新 BDK 结构。
示例
示例-crates/wallet_esplora_async
示例-crates/wallet_esplora_blocking
示例-crates/wallet_electrum
示例-crates/wallet_rpc
持久性
要在磁盘上持久化 Wallet
,它必须使用一个 PersistBackend
实现来构建。
实现
bdk_file_store
:一个简单的平面文件实现PersistBackend
。
示例
use bdk::{bitcoin::Network, wallet::{ChangeSet, Wallet}};
fn main() {
// Create a new file `Store`.
let db = bdk_file_store::Store::<ChangeSet>::open_or_create_new(b"magic_bytes", "path/to/my_wallet.db").expect("create store");
let descriptor = "wpkh(tprv8ZgxMBicQKsPdcAqYBpzAFwU5yxBUo88ggoBqu1qPcHUfSbKK1sKMLmC7EAk438btHQrSdu3jGGQa6PA71nvH5nkDexhLteJqkM4dQmWF9g/84'/1'/0'/0/*)";
let mut wallet = Wallet::new_or_load(descriptor, None, db, Network::Testnet).expect("create or load wallet");
// Insert a single `TxOut` at `OutPoint` into the wallet.
let _ = wallet.insert_txout(outpoint, txout);
wallet.commit().expect("must write to database");
}
测试
单元测试
cargo test
许可
许可协议为以下之一
- Apache License,版本 2.0,(LICENSE-APACHE 或 https://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可协议 (LICENSE-MIT 或 https://opensource.org/licenses/MIT)
任选其一。
贡献
除非你明确声明,否则根据 Apache-2.0 许可证定义,你故意提交的任何旨在包含在作品中的贡献,应如上所述双许可,而不附加任何额外条款或条件。
依赖关系
~15MB
~197K SLoC