#bitcoin #wallet #descriptor #bip-32 #cryptocurrency

bitcoin_onchain

比特币描述符库(descriptor-wallet的一部分)

18个版本

0.10.2 2024年3月20日
0.10.0 2023年4月26日
0.10.0-alpha.12023年3月24日
0.9.0-rc.12022年12月25日
0.6.0-alpha.42021年12月7日

#8 in #bip32

Download history 130/week @ 2024-03-30 60/week @ 2024-04-06 66/week @ 2024-04-13 71/week @ 2024-04-20 59/week @ 2024-04-27 75/week @ 2024-05-04 57/week @ 2024-05-11 58/week @ 2024-05-18 69/week @ 2024-05-25 88/week @ 2024-06-01 38/week @ 2024-06-08 48/week @ 2024-06-15 71/week @ 2024-06-22 14/week @ 2024-06-29 20/week @ 2024-07-06 59/week @ 2024-07-13

167 每月下载量
用于 26 个crate(2直接使用)

Apache-2.0

155KB
3K 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 Server 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

依赖项

~11MB
~163K SLoC