93 个版本 (55 个稳定版)
2.7.0-rc.1 | 2024 年 8 月 10 日 |
---|---|
2.7.0-beta.4 | 2024 年 5 月 24 日 |
2.7.0-beta.3 | 2024 年 4 月 18 日 |
2.7.0-beta.1 | 2024 年 2 月 15 日 |
0.8.1 | 2022 年 7 月 9 日 |
#938 in 魔法豆
每月下载量 6,675
在 92 个crate(直接使用66个)中
170KB
4.5K SLoC
严格的编码库
客户端验证的确定性二进制序列化。
此库实现了由 LNPBP-7 定义的 严格的编码 标准。严格的编码是一种广泛用于客户端验证的二进制保守编码,用于已知内部数据结构的确定性和可移植(平台无关)的数据序列化。严格的编码是一种无模式的编码。
作为严格编码的一部分,该crate还包括网络地址 统一编码 标准(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 标准库和常用 crate 定义的常用数据类型的严格编码特质;后者增加了依赖项的数量,因此可以通过功能标志进行控制
chrono
(默认使用):来自chrono
crate 的日期和时间类型miniscript
:比特币 Miniscript 中定义的类型crypto
:非比特币加密原语,包括来自ed25519-dalek
库的 Ed25519 曲线和 X25519 签名,以及来自grin_secp256k1zkp
库的 pedersen 承诺和 bulletproofs。其他与密码学相关的类型(如 Secp256k1 和散列)的编码始终作为库的一部分包含在内 - 请参阅以下注意事项。
由于许多严格编码格式都采用 比特币共识编码 标准化,因此此 crate 需要 bitcoin
作为上游依赖项。
贡献
贡献指南可在 CONTRIBUTING 中找到
许可
这些库在 Apache 2.0 开源许可的条款下分发。有关许可详情,请参阅 LICENCE 文件。
依赖项
~1.8–2.6MB
~57K SLoC