15 个版本 (7 个稳定版)
2.7.0-rc.1 | 2024年8月10日 |
---|---|
2.7.0-beta.1 | 2024年2月15日 |
2.0.0 | 2023年10月9日 |
2.0.0-alpha.2 | 2023年4月20日 |
0.8.0 | 2022年6月30日 |
#939 in 魔法豆
每月下载量 237
用于 5 crates
195KB
4.5K SLoC
严格编码库
用于客户端验证的确定性二进制序列化。
本库实现了由 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
库,该库导出所有这些库,包括当前库。
库定义了两个主要特质,StrictEncode
和 StrictDecode
,它们应该在每个需要表示为客户端验证的类型上实现。
库导出推导宏 #[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