#钱包 #比特币 #描述符 #taproot #psbt #命令处理器

app bdk-cli

一个基于BDK的实验性CLI钱包应用程序和沙箱

8个版本 (破坏性更新)

0.27.1 2023年4月13日
0.26.0 2023年1月12日
0.6.0 2022年9月28日
0.5.0 2022年5月25日
0.1.0 2021年1月8日

#709 in 魔法豆

每月46次下载

MIT许可证

165KB
3K SLoC

BDK-CLI

使用BDK在纯Rust中实现的比特币命令行钱包应用程序

Crate Info MIT or Apache-2.0 Licensed CI Status API Docs Rustc Version 1.56+ Chat on Discord

项目主页 | 文档

关于

本项目提供使用最新的BDK API开发的命令行比特币钱包应用程序。这个项目可能看起来小巧而简单,但它通过利用BDK的强大功能,提供了一个强大的基于描述符的通用命令行钱包工具。是的,它支持Taproot!!

本包可用于以下用途

  • 立即创建基于miniscript的钱包并连接到您选择的后端(Electrum、Esplora、Core RPC等),并快速体验您自己的复杂比特币脚本工作流程。可以连接一个或多个后端,与一个或多个钱包。
  • tests/integration.rs模块用于记录BDK与不同比特币基础设施系统(如Core、Electrum和Lightning(即将推出TM))之间的高级别复杂工作流程。
  • (计划) 通过 wasm 暴露基本命令处理程序,以便将 bdk-cli 功能原生化集成到 Web 平台。有关更多信息,请参阅沙箱页面

如果您考虑在自己的钱包项目中使用 BDK,bdk-cli 是一个很好的沙箱,可以开始尝试。它允许轻松进行测试网和回归测试钱包操作,尝试使用描述符、miniscript 和 BDK API 所能实现的功能。有关 BDK 的更多信息,请参阅网站Rust 文档

bdk-cli 可以通过不同的功能进行编译,以满足您的实验需求。

  • 数据库选项
    • key-value-db:将钱包数据库设置为 sled db。
    • sqlite-db:将钱包数据库设置为 sqlite3 db。
  • 区块链选项
    • rpc:通过 RPC 将钱包连接到比特币核心。
    • electrum:将钱包连接到 electrum 服务器。
    • esplora-ureqesplora-reqwest:同步或异步地将钱包连接到 esplora 服务器。
  • 额外实用工具
    • repl:将 bdk-cli 作为REPL shell 使用(用于快速手动测试钱包操作)。
    • compiler:打开 bdk-cli 策略编译器命令。
    • verify:在钱包的每个 sync 调用中使用 bitcoinconsensus 验证交易。
    • reserves:使用 bdk-reserves 插件打开 bdk-cli 保留证明 操作命令。(需要 electrum 功能)
  • 自动节点后端
    • regtest-bitcoin:自动部署 regtest bitcoind 节点,连接钱包,并通过 bdk-cli node 子命令暴露核心 RPC 命令。
    • regtest-electrum:自动部署 electrsd 和连接 bitcoind 节点,通过 bdk-cli node 暴露核心 RPC 命令,并提供一个连接到本地 electrsd 的钱包。

默认功能集是 replsqlite-db。使用默认功能,bdk-cli 可以用作 断网 钱包,并且可以执行所有不需要网络连接的操作。

安装 bdk-cli

从源代码

要从本地 git 仓库安装启用 electrum 区块链客户端的 bdk-cli 开发版本

cd <bdk-cli git repo directory>
cargo install --path . --features electrum
bdk-cli help # to verify it worked

如果没有启用区块链客户端功能,在线钱包命令 syncbroadcast 将被禁用。要启用这些命令,必须启用区块链客户端功能,例如 electrum 或其他区块链客户端功能。以下是如何使用带有 esplora-ureq 区块链客户端功能的 bdk-cli 二进制文件的示例。

RUST_LOG=debug cargo run --features esplora-ureq -- wallet --descriptor "wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)" sync

最多只能启用一个区块链功能,可用的区块链客户端功能有:electrumesplora-ureq(阻塞)、esplora-reqwest(异步)和 rpc

从 crates.io

您可以直接从 crates.io 使用以下命令安装 bdk-cli 最新标签的二进制文件,并带有在线钱包功能

cargo install bdk-cli --features electrum

bdk-cli 二进制文件使用示例

要获取 bdk-cli 二进制文件的使用信息,请使用以下命令,该命令将返回可用的钱包选项和命令列表

cargo run

将钱包同步到默认的Electrum服务器

cargo run --features electrum -- wallet --descriptor "wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)" sync

使用core rpc将钱包同步到Bitcoin Core节点(假设为运行在127.0.0.1:18443的regtest节点)

cargo run --features rpc -- --network regtest wallet --node 127.0.0.1:18443 --descriptor "wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)" sync

使用自定义日志获取钱包余额

RUST_LOG=debug,sled=info,rustls=info cargo run -- wallet --descriptor "wpkh(tpubEBr4i6yk5nf5DAaJpsi9N2pPYBeJ7fZ5Z9rmN4977iYLCGco1VyjB9tvvuvYtfZzjD5A8igzgw3HeWeeKFmanHYqksqZXYXGsw5zjnj7KM9/*)" get_balance

生成一个新的扩展主密钥,适用于在描述符中使用

cargo run -- key generate

资源

文档:[bitcoindevkit.org CLI部分](https://bitcoindevkit.org/bdk-cli/installation/ "bitcoindevkit.org CLI Section")
在《Bitcoin Developers Show》上的相关内容:[Youtube](https://www.youtube.com/watch?v=-Q8OD8NCEe4 "Youtube")
视频教程:[Youtube播放列表](https://www.youtube.com/playlist?list=PLmyfVqsSelG3jSobvpY3GoNKDtAumsrg3 "Youtube Playlist")

依赖项

~17–42MB
~576K SLoC