#zero-knowledge-proofs #accumulator #membership #dynamic #verification #group #universal

no-std vb_accumulator

基于双线性映射的正向和通用累加器,以及成员和非成员证明协议

25个重大版本发布

0.26.0 2024年7月18日
0.24.0 2024年5月10日
0.22.0 2024年3月29日
0.19.0 2023年10月10日
0.7.0 2021年11月22日

#683 in 密码学

Download history 52/week @ 2024-04-20 91/week @ 2024-05-04 42/week @ 2024-05-11 6/week @ 2024-05-18 4/week @ 2024-05-25 5/week @ 2024-06-01 1/week @ 2024-06-08 116/week @ 2024-06-15 54/week @ 2024-06-22 109/week @ 2024-06-29 95/week @ 2024-07-13 17/week @ 2024-07-20 447/week @ 2024-07-27 4/week @ 2024-08-03

每月563次下载
用于 2 个crates(通过 proof_system

Apache-2.0

1.5MB
34K SLoC

基于双线性映射(配对)的累加器

vb_accumulator

根据论文《Dynamic Universal Accumulator with Batch Update over Bilinear Groups》:Dynamic Universal Accumulator with Batch Update over Bilinear Groups 实现

  • 一个动态正向累加器 PositiveAccumulator,支持成员证明。
  • 一个动态通用累加器 UniversalAccumulator,支持成员和非成员证明。
  • 在累加器中基于 ProofProtocol 进行成员和非成员零知识证明,正如论文中所描述。这些实际上是弱BB签名的知识证明
  • 基于更有效证明弱BB签名知识的协议的更有效协议的成员和非成员零知识证明的替代和更有效协议。这没有在论文中描述。
  • 密钥验证的成员和非成员证明,验证者知道密钥

允许

  • 对累加器的单次和批量更新(添加、删除或两者)。
  • 对见证的单次和批量更新。

两个累加器都实现了包含公共功能的特剧行为 Accumulator。两者都可以通过秘密密钥或使用累加器管理者发布的公开信息(称为 Omega)进行更新。大部分的更新逻辑都包含在特剧行为 Witness 中,该行为由 MembershipWitnessNonMembershipWitness 实现。实现尝试使用与论文中相同的变量名,因此在某些地方违反了 Rust 的命名约定。

kb_accumulator

根据论文:[Efficient Constructions of Pairing Based Accumulators](https://eprint.iacr.org/2021/638) 实现

  • 一个支持成员证明的动态正累加器 KBPositiveAccumulator。基于论文中的构造 2。
  • 一个支持成员和非成员证明的动态通用累加器 KBUniversalAccumulator。基于论文中的构造 3。
  • 累加器中的成员和非成员零知识证明。这些实际上是 BB 签名和弱 BB 签名知识证明。
  • 成员和非成员证明的替代且更高效的协议
  • 密钥验证的成员和非成员证明,验证者知道密钥

允许使用 vb_accumulator 技术批量更新累加器和见证者

实现使用类型 3 对称性与论文中的类型 1 对称性相比。

依赖项

~7–18MB
~189K SLoC