#bitcoin #wallet #descriptor #cryptocurrency #miniscript #private-key #order

bin+lib descriptor-wallet

基于描述符的比特币钱包构建的库和命令行工具

45 个发布版本

0.10.2 2024 年 3 月 20 日
0.10.1 2023 年 9 月 8 日
0.10.0 2023 年 4 月 26 日
0.10.0-alpha.12023 年 3 月 24 日
0.4.0 2021 年 3 月 8 日

#4#miniscript

Download history 23/week @ 2024-04-27 39/week @ 2024-05-04 24/week @ 2024-05-11 18/week @ 2024-05-18 27/week @ 2024-05-25 40/week @ 2024-06-01 23/week @ 2024-06-08 21/week @ 2024-06-15 33/week @ 2024-06-22 51/week @ 2024-06-29 7/week @ 2024-07-06 27/week @ 2024-07-13 18/week @ 2024-07-20 77/week @ 2024-07-27 25/week @ 2024-08-03 13/week @ 2024-08-10

每月 141 次下载
27 个 (14 直接)crate中使用

Apache-2.0

385KB
6.5K SLoC

描述符钱包库

Build Tests Lints codecov

crates.io Docs unsafe forbidden Apache2 licensed

用于构建基于描述符的比特币钱包的库。现代冷钱包和热钱包所需的一切,但目前还不是 rust-bitcoin 库的一部分。

该库明确区分了需要访问私钥的部分和那些永远不接触私钥的部分。建议钱包应设计为假设除了交易签名之外的所有操作都不访问私钥;这部分必须分离到其他存储库/库中,并严格管理。可以通过 bin 目录中的 btc-hotbtc-cold 钱包示例来查看如何进行此操作。

库提供

  • 对 BIP-32 导出路径的高效操作,将需要访问私钥的导出与始终无需操作的那些分离;
  • miniscript 和经典比特币描述符;
  • 使用输入描述符构造 PSBT,允许为每个输入指定关于 RBF、先前公钥 P2C 调整和自定义哈希类型的自定义信息;
  • PSBT 签署者,支持 RBF、相对和绝对时间锁、所有 sighash 类型、复杂脚本,包括基于见证和 taproot 的;
  • 脚本模板,允许将扩展公钥嵌入到比特币脚本组装中;
  • 事务和 PSBT 输入/输出的字典序排序;
  • 脚本类型系统;
  • 用于处理哈希锁合同的辅助类型;
  • PSBT 工具函数(检索先前输出,计算费用);
  • 在 Electrum 服务器 API 上提供事务解析器 API,方便计算已挖掘的交易费用等;
  • 支持 SLIP-32/132 扩展公钥类型(ypubzprv 等)。

Wallet comparison diagram

命令行钱包

可以使用以下命令安装命令行钱包(需要系统已安装rust编译器和rustup工具):

$ rustup default stable
$ rustup update
$ git clone https://github.com/BP-WG/descriptor-wallet
$ cd descriptor-wallet
$ cargo install --path . --locked --all-features

这将向系统中添加btc-hotbtc-cold命令。

使用Docker安装

构建

克隆存储库并切换到所需版本(这里为v0.8.0

$ git clone https://github.com/BP-WG/descriptor-wallet
$ cd descriptor-wallet
$ git checkout v0.8.0

构建并标记Docker镜像

$ docker build -t descriptor-wallet:v0.8.0 .

使用方法

$ docker run descriptor-wallet:v0.8.0 btc-hot --help
$ docker run descriptor-wallet:v0.8.0 btc-cold --help

使用文件的示例

$ docker run -v $PWD/data:/data descriptor-wallet:v0.8.0 btc-hot seed /data/testnet.seed
$ docker run -v $PWD/data:/data descriptor-wallet:v0.8.0 btc-hot derive --testnet /data/testnet.seed /data/testnet

依赖关系

~10–21MB
~245K SLoC