3个稳定版本
3.0.0 | 2024年3月4日 |
---|---|
2.0.0 | 2023年6月23日 |
1.0.0 | 2023年6月23日 |
#1766 在 密码学
633 每月下载量
在 17 个crate中(直接使用3个) 使用
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