#多项式 #有限域 #sumcheck

无需 std ark-linear-sumcheck

高效 sumcheck 协议库

3 个版本 (破坏性更新)

0.4.0 2024年1月29日
0.3.0 2021年6月7日
0.2.0 2021年3月27日

#2547 in 加密学

MIT/Apache

63KB
1K SLoC

线性时间 sumcheck

linear-sumcheck 是一个 Rust 库,实现了 sumcheck 协议。

此 crate 实现以下协议

  • MLSumcheck:布尔超立方体上的多线性多项式乘积的评估形式 sumcheck 协议。
  • GKRRoundSumcheck:GKR 圆函数的 sumcheck 协议。此协议将 MLSumcheck 作为子例程。

警告:这是一个学术概念原型,特别是尚未经过仔细的代码审查。此实现不适合生产使用。

构建指南

此库在 Rust 编译器的 stable 工具链上编译。要安装最新版本的 Rust,首先按照此处的说明或通过您平台的软件包管理器安装 rustup。安装 rustup 后,通过调用以下命令安装 Rust 工具链

rustup install stable

之后,使用 cargo(标准的 Rust 构建工具)构建库

git clone https://github.com/arkworks-rs/sumcheck.git
cd sumcheck
cargo build --release

此库附带一些单元测试和集成测试。使用以下命令运行这些测试

cargo test

最后,此库配备了分析基础设施,可以打印执行时间的详细跟踪。要启用此功能,请使用以下命令编译:cargo build --features print-trace

基准测试

要运行基准测试,请通过 rustup install nightly 安装夜间 Rust 工具链,然后运行以下命令

cargo +nightly bench --all-features

以下所有基准测试都是在 ark-test-curves 库中实现的 BLS12-381 标量字段上进行的。基准测试在一台配备 Intel Xeon 6136 CPU,主频为 3.0 GHz 的机器上运行。

MLSumcheck 的基准测试

ml_sumcheck_prove ml_sumcheck_verify

GKRRoundSumcheck 的基准测试

gkr_round_sumcheck_prove gkr_round_sumcheck_verify

许可证

本库的许可证可以是以下任何一个,由您自行选择。

除非您明确声明,否则您提交给本库的任何贡献都应按照上述许可证(Apache v2许可证中定义)进行双许可,不附加任何额外的条款或条件。

参考文献

Libra:具有最优验证者计算的简洁零知识证明
谢天成,张嘉恒,张宇鹏,查拉拉莫斯·帕帕曼托斯,宋丹

电路评估的最优时间交互证明
Justin Thaler

依赖项

~6MB
~114K SLoC