#script #bitcoin #miniscript #crypto

不使用 std miniscript-qtum

Miniscript:专为分析设计的比特币脚本的一个子集

1 个发布版本 (0 个不稳定)

10.0.0-qtum2023年12月24日

#5#miniscript

CC0 许可证

4MB
45K SLoC

Build

最低支持的 Rust 版本 1.41.1

Miniscript-qtum

这是一个支持 Qtum 区块链的 rust-miniscript 分支。

请见下方的原始 README。

Miniscript

一个用于处理 Miniscript 的库,Miniscript 是比特币脚本的一个子集,旨在支持简单的通用工具。Miniscript 表示支出条件的门限电路,因此可以轻松地将其可视化或序列化为可读的字符串。

高级功能

此库支持

  • 输出描述符 包括嵌入的 Miniscript
  • 将描述符解析和序列化为可读的字符串格式
  • 将抽象支出策略编译为 Miniscript(由 compiler 标志启用)
  • 对 Miniscript 和支出策略进行语义分析,使用用户定义的公钥类型
  • 在给定可转换为 bitcoin::PublicKey 的密钥类型的情况下,将 Miniscript 编码和解码为比特币脚本
  • 确定给定描述符的可满足性以及最优证据;使用适当的数据完成未签名的 bitcoin::TxIn
  • 确定用于在给定比特币交易中支出硬币的特定密钥、哈希预像和定时锁
  • no_std 通过禁用 default-features 并启用 "no-std" 来启用。请参阅 embedded/ 中的示例。

更多信息可以在 文档 或在 examples/ 目录 中找到

构建

默认启用了 cargo 功能 std。必须启用至少一个功能 stdno-std 或两者都启用。

启用 no-std 功能并不会禁用 std。要禁用 std 功能,您必须禁用默认功能。 no-std 功能仅启用此crate在不使用 std 的情况下所需的其他功能。两者可以同时启用而不会冲突。

最低支持的Rust版本(MSRV)

此库应该始终可以在 Rust 1.41.1Rust 1.47 上编译,无论使用哪种功能组合(除去 no-std)。

某些依赖与我们的MSRV不兼容,如果您正在运行测试,可能需要按照以下方式固定:

cargo update --package url --precise 2.2.2
cargo update --package form_urlencoded --precise 1.0.1
cargo update -p once_cell --precise 1.13.1
cargo update -p bzip2 --precise 0.4.2

贡献

贡献通常受到欢迎。如果您打算进行较大更改,请在PR之前在issue中讨论它们,以避免重复工作和架构不匹配。如果您有任何问题或想要讨论的想法,请加入我们在Libera上的##miniscript

发行说明

请参阅CHANGELOG.md

许可

本项目的代码采用Creative Commons CC0 1.0 Universal license许可。我们使用SPDX license listSPDX IDs

依赖项

~14MB
~218K SLoC