12 个版本 (6 个稳定)
2.0.0-alpha.2 | 2022年11月25日 |
---|---|
1.7.6 | 2021年12月6日 |
1.7.4 | 2021年8月31日 |
0.9.0 | 2023年3月11日 |
0.8.0 | 2022年6月30日 |
#2 in #internet2
570 每月下载量
用于 43 个crate (2 直接)
44KB
985 行
严格编码库
客户端验证的确定性二进制序列化。
此库实现了由 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 = "1.3"
如果您正在使用其他客户端验证库,请考虑仅导入单个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文件。
依赖项
~2MB
~45K SLoC