12 个版本 (6 个稳定)

2.0.0-alpha.22022年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

Download history 318/week @ 2024-04-01 190/week @ 2024-04-08 199/week @ 2024-04-15 241/week @ 2024-04-22 173/week @ 2024-04-29 221/week @ 2024-05-06 196/week @ 2024-05-13 193/week @ 2024-05-20 235/week @ 2024-05-27 185/week @ 2024-06-03 221/week @ 2024-06-10 164/week @ 2024-06-17 204/week @ 2024-06-24 14/week @ 2024-07-01 96/week @ 2024-07-08 250/week @ 2024-07-15

570 每月下载量
用于 43 个crate (2 直接)

Apache-2.0

44KB
985

严格编码库

Build Tests Lints codecov

Docs unsafe forbidden Apache-2 licensed

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

此库实现了由 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库,该库导出所有这些库,包括当前库。

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

库导出派生宏#[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