#有限域 # #素域 #arkworks #专用 #优化 #椭圆曲线

nightly 无std ark-ff-optimized

优化域实现,优于arkworks中的通用域实现

2个版本

0.4.1 2023年5月16日
0.4.0 2023年2月9日

#1935 in 加密学

Download history 28/week @ 2024-03-11 23/week @ 2024-03-18 26/week @ 2024-03-25 35/week @ 2024-04-01 13/week @ 2024-04-08 19/week @ 2024-04-15 20/week @ 2024-04-22 9/week @ 2024-04-29 11/week @ 2024-05-06 12/week @ 2024-05-13 17/week @ 2024-05-20 9/week @ 2024-05-27 14/week @ 2024-06-03 15/week @ 2024-06-10 9/week @ 2024-06-17 18/week @ 2024-06-24

每月 57 次下载
用于 2 crates

MIT 许可证

45KB
1K SLoC

优化arkworks域实现

专用域实现,优于arkworks中提供的通用、Montgomery算术、域实现。目前仅添加了一个域。请贡献实现!PRs受欢迎!

素域p=18446744069414584321

use ark_ff_optimized::fp64::Fp;

一个神奇的素数,模数为p=2^642^32+1。此域具有一些良好的属性(1)两个32位值的乘积不会溢出域模数(2)检查四个16位值是否构成有效的域元素可以高效完成。此域用于Polygon Miden和Polygon Zero。实现来源于EcGFp5:一个专用椭圆曲线Facebook的Winterfell仓库

基准测试 通用 专用(此仓库)
乘积和的大小2 18.04ns 7.34 ns (🚀 2.46倍更快)
556.74ns 283.87 ns (🚀 1.96倍更快)
勒让德对于 QR 1.12我们 596.15 ns (🚀 1.88倍更快)
朴素乘积和2 15.41ns 8.68 ns (🚀 1.78倍更快)
反序列化压缩 8.82ns 4.99 纳秒 (🚀 1.77倍更快)
反序列化压缩未检查 8.80ns 4.97 纳秒 (🚀 1.77倍更快)
反序列化未压缩 8.86ns 5.16 纳秒 (🚀 1.72倍更快)
反序列化未压缩未检查 8.81ns 5.15 纳秒 (🚀 1.71倍更快)
平方根对于 QR 4.43我们 2.77 微秒 (🚀 1.60倍更快)
乘法 6.15ns 4.03 纳秒 (🚀 1.53倍更快)
BigInt 5.32ns 4.30 纳秒 (✅ 1.24倍更快)
序列化未压缩 4.72ns 3.95 纳秒 (✅ 1.20倍更快)
BigInt 4.72ns 3.92 纳秒 (✅ 1.20倍更快)
序列化压缩 4.72ns 3.96 纳秒 (✅ 1.19倍更快)
平方 5.60ns 4.88 纳秒 (✅ 1.15倍更快)
减法 4.09ns 3.77 纳秒 (✅ 1.09倍更快)
加法 4.11ns 3.79 纳秒 (✅ 1.08倍更快)
取反 4.21ns 3.90 纳秒 (✅ 1.08倍更快)
双精度 4.13ns 4.32 纳秒 (❌ 1.04倍更慢)

在M1 Max上进行了基准测试。Markdown由criterion-table生成。更详细的基准测试信息在这里

依赖

~3.5MB
~80K SLoC