#零知识证明 #记录 #零知识 #fiat-shamir

无需std dock_merlin

针对知识证明的公共币论证的可组合证明记录

3个稳定版本

3.0.0 2024年3月4日
2.0.0 2023年6月23日
1.0.0 2023年6月23日

#1766密码学

Download history 127/week @ 2024-04-17 48/week @ 2024-04-24 58/week @ 2024-05-01 73/week @ 2024-05-08 44/week @ 2024-05-15 51/week @ 2024-05-22 56/week @ 2024-05-29 48/week @ 2024-06-05 42/week @ 2024-06-12 99/week @ 2024-06-19 34/week @ 2024-06-26 6/week @ 2024-07-03 52/week @ 2024-07-10 95/week @ 2024-07-17 170/week @ 2024-07-24 309/week @ 2024-07-31

633 每月下载量
17 个crate中(直接使用3个) 使用

MIT 许可证

38KB
585

Merlin:针对知识证明的公共币论证的可组合证明记录

https://github.com/dalek-cryptography/merlin 衍生而来

Merlin 是一个基于STROBE的零知识证明记录构建工具。它自动执行Fiat-Shamir变换,因此通过使用Merlin,可以将非交互式协议实现为交互式。

这比手动执行变换更容易、更不容易出错,并且它还提供了对以下内容的自然支持:

  • 多轮协议,具有交替的提交和挑战阶段;

  • 自然域分离,确保挑战绑定到要证明的陈述;

  • 自动消息封装,防止提交数据的模糊编码;

  • 以及通过使用多个协议的通用记录进行协议组合。

最后,Merlin还提供基于记录的随机数生成器,作为防御深度攻击(如nonce重用或多个证明中的偏差)的手段。此RNG提供从整个公共记录以及证明者的证据数据和外部RNG的辅助输入中提取的合成随机数。

关于Merlin的设计以及如何将其用于证明系统的更多详细信息,请访问Merlin网站

功能

nightly功能传递给clear_on_drop;它可能会在将来被替换为空操作(因为clear_on_drop是一个实现细节)。

debug-transcript功能将注释过的证明记录打印到stdout;它仅适用于开发和测试目的,不应在发布的crate中使用,也不应被视为稳定。

一个Bulletproof rangeproof的注释记录示例可以在此处找到

关于

Merlin由Henry de Valence编写,Isis Lovecruft和Oleg Andreev提供了设计输入。这个构建工具是在与Oleg Andreev和Cathie Yun合作开发Bulletproofs实现的过程中产生的。还要感谢Trevor Perrin和Mike Hamburg在讨论中的帮助。Merlin的名字是为了纪念Arthur-Merlin协议,该协议引入了公共币论证的概念。

标题图片是由Oleg Andreev创作的,它是由Arthur Pyle的《巫师梅林》和Keccak团队的θ步骤图组合而成的。

本项目采用MIT许可协议。

依赖项

约2.2–3.5MB
约65K SLoC