#零知识证明 #椭圆曲线 #SNARK #电路 # # #构造

no-std decaf377

专为在BLS12-377上用于SNARK设计的素数阶群

12个版本 (破坏性)

0.10.1 2024年7月1日
0.9.0 2024年4月3日
0.8.0 2024年2月5日
0.7.0 2023年12月12日
0.1.0 2022年12月1日

#186 in 密码学

Download history 1774/week @ 2024-04-29 1761/week @ 2024-05-06 1068/week @ 2024-05-13 1497/week @ 2024-05-20 1351/week @ 2024-05-27 1992/week @ 2024-06-03 1930/week @ 2024-06-10 1247/week @ 2024-06-17 1633/week @ 2024-06-24 2037/week @ 2024-07-01 1327/week @ 2024-07-08 2331/week @ 2024-07-15 1973/week @ 2024-07-22 2195/week @ 2024-07-29 1108/week @ 2024-08-05 729/week @ 2024-08-12

6,167 每月下载量
用于 5 crates

MIT/Apache

1MB
29K SLoC

decaf377

Crates.io

许多零知识协议需要一种可以在算术电路内部使用的加密群。这是通过定义一个“嵌入式”椭圆曲线来实现的,其基域是用于证明系统的证明曲线的标量域。

定义了BLS12-377的Zexe论文也定义了(但未命名)一个定义在BLS12-377标量域上的系数-4埃德华曲线,正好用于此目的。然而,非素数阶群是一个有漏洞的抽象,迫使所有下游构造都应注意正确处理系数。虽然通常可以安全地做到这一点,但它需要额外的注意,并且如以下讨论所示,处理系数的最佳技术在电路内外是不同的。

相反,将Decaf构造应用于此曲线给出decaf377,这是一个干净抽象,它提供了一个素数阶群,包括哈希到群功能,并且在电路内外都以相同的方式工作。

更多详情请访问Penumbra网站

特性

  • std: 默认,用于std环境,
  • alloc: 默认,用于alloc环境,
  • arkworks: 默认,使用Arkworks crates进行椭圆曲线操作,
  • u32_backend: 使用32位有限域算术(默认为64位),
  • r1cs: 启用秩-1约束系统小工具,
  • parallel: 启用并行使用。

基准测试

使用criterion基准测试运行

cargo bench

这将生成一个报告,位于target/criterion/report/index.html

依赖关系

~0.1–1.7MB
~32K SLoC