15 个版本 (7 个稳定版)

2.7.0-rc.12024年8月10日
2.7.0-beta.12024年2月15日
2.0.0 2023年10月9日
2.0.0-alpha.22023年4月20日
0.8.0 2022年6月30日

#939 in 魔法豆

Download history 5/week @ 2024-04-29 6/week @ 2024-05-06 5/week @ 2024-05-13 10/week @ 2024-05-20 20/week @ 2024-05-27 10/week @ 2024-06-03 32/week @ 2024-06-10 4/week @ 2024-06-17 4/week @ 2024-06-24 8/week @ 2024-07-15 132/week @ 2024-07-29 74/week @ 2024-08-05 30/week @ 2024-08-12

每月下载量 237
用于 5 crates

Apache-2.0

195KB
4.5K SLoC

严格编码库

Build Tests Lints codecov

crates.io Docs Apache-2 licensed

用于客户端验证的确定性二进制序列化。

本库实现了由 LNPBP-7 定义的 严格编码 标准。严格编码是一种广泛用于客户端验证的保守二进制编码,用于具有已知内部数据结构的可移植(平台无关)数据序列化。严格编码是一种无模式的编码。

作为严格编码的一部分,库还包含了网络地址 统一编码 标准(《LNPBP-42》)的实现,允许将任何类型的网络地址表示为占用37个字节的固定大小字节字符串。此标准用于网络地址的严格编码。

客户端验证是一种基于证明发布/承诺媒介层的分布式计算范式,该媒介层可以是比特币区块链或其他类型的分布式共识系统。

该库的开发得到了 LNP/BP 标准协会 的支持。

本库是在 Peter Todd 的证明打包和客户端验证数据的序列化原则以及 Dr Maxim Orlovsky 的通用网络编码思想的基础上设计的。这两者都被塑造成标准,并由 Dr Maxim Orlovsky 实现为本库的一部分。

文档

库的详细开发者和API文档可以在https://docs.rs/strict_encoding/访问。

要了解由库启用的技术,请查看我们技术展示的幻灯片LNP/BP 技术讨论视频

用法

要使用此库,您只需在项目的 Cargo.toml 文件的 [dependencies] 部分引用最新版本。

strict_encoding = "2.5"

如果您正在使用其他客户端验证库,请考虑只导入一个client_side_validation库,该库导出所有这些库,包括当前库。

库定义了两个主要特质,StrictEncodeStrictDecode,它们应该在每个需要表示为客户端验证的类型上实现。

库导出推导宏 #[derive(StrictEncode, StrictDecode)],这是 strict_encoding_derive 子包的一部分,并由默认功能 derive 控制。最后,它实现了由 Rust 标准库和常用包定义的主要数据类型的严格编码特质;后者增加了依赖项的数量,因此可以使用功能标志进行控制。

  • chrono(默认使用):来自 chrono 包的日期和时间类型
  • miniscript:在比特币 Miniscript 中定义的类型
  • crypto:非比特币加密原语,包括来自 ed25519-dalek 库的 Ed25519 曲线和 X25519 签名以及来自 grin_secp256k1zkp 库的 pedersen 承诺和 bulletproofs。其他与加密相关的类型的编码,例如 Secp256k1 和散列,始终作为库的一部分包含 - 请参阅下面的注释。

此包需要 bitcoin 作为上游依赖项,因为许多严格的编码格式都已标准化为使用 bitcoin 协议编码

贡献

贡献指南可以在 CONTRIBUTING 中找到。

许可

这些库根据 Apache 2.0 开源许可证分发。有关许可证的详细信息,请参阅 LICENCE 文件。

依赖

~2MB
~49K SLoC