15 个版本
0.1.0 | 2024年5月24日 |
---|---|
0.0.1 | 2024年2月2日 |
0.0.1-beta6 | 2024年1月30日 |
0.0.1-beta1 | 2023年12月27日 |
0.0.1-alpha2 | 2023年8月31日 |
#741 in 密码学
130KB
2K SLoC
尼姆:一个 Fiat-Shamir 库
此库尚未经过外部审查,不应被视为准备就绪。
尼姆是一个对哈希无感知的库,它相信随机预言机。它便于编写多轮公共硬币协议。建立在 SAFE 框架之上,并提供生成验证者和证明者随机硬币的 API。
特性
自动转录生成。 nimue 随带电池,用于序列化和反序列化算术元素,如 arkworks 和 zkcrypto 中的域/群元素。用户可以通过扩展特性在其之上构建。
支持自定义哈希函数。 要构建安全的 Fiat-Shamir 转换,最小要求是支持字节编码的某个集合上的排列函数。它可以是一个代表 $\mathbb{F}_{2^8}$ 或任何大特征素域 $\mathbb{F}_p$ 的 u8
。
后向兼容性。 我们为满足 digest::Digest
特性的任何哈希函数提供遗留接口,例如 sha2
和 blake2
。
-
预处理。 在递归 SNARKs 中,最小化哈希调用次数同时保持安全性至关重要。我们提供工具来预处理转录(即 Fiat-Shamir 转换的状态)以实现此目标。
-
私有随机数生成。 避免为相同的证明者消息提供两个不同的挑战至关重要。我们通过将证明者随机数绑定到协议转录,而不使证明确定性,尽最大努力避免这种情况。
依赖关系
~1–2.5MB
~50K SLoC