#钱包 #比特币 #bip-32 #加密货币 #加密学

夜间版本 libbitcoin

C语言库,用于构建基于描述符的比特币钱包

2个不稳定版本

0.3.0 2022年5月2日
0.1.0 2021年8月10日

#24 in #bip-32

Apache-2.0

18KB
332

描述符钱包库

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扩展公钥类型(ypub、zprv等)。

Wallet comparison diagram

命令行钱包

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

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

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

依赖关系

~11MB
~184K SLoC