#commitment #kzg #integration #proofs #bn254 #rollup #fraud

rust-kzg-bn254

该库提供了一组在 Rust 中生成和交互 bn254 KZG 承诺和证明的函数,旨在支持 EigenDA 滚动集成中的欺诈和有效性证明逻辑。

2 个不稳定版本

0.2.0 2024 年 6 月 3 日
0.1.0 2024 年 5 月 31 日

#7 in #bn254

自定义许可证

64KB
1.5K SLoC

rust-kzg-bn254

描述

该库提供了一组在 Rust 中生成和交互 bn254 KZG 承诺和证明的函数,旨在支持 EigenDA 滚动集成中的欺诈和有效性证明逻辑。

警告 & 声明

此代码未经审计且处于建设中。这是一款实验性软件,以“现状”和“可用”为基础提供,可能根本无法正常工作。不应在生产中使用。

测试设置

  1. 要测试,请从 DA 资源下载提供的 G1 和 G2 点。
  2. kzg.setup() 函数中指定这些文件,留空 g2_power_of2_path,并将 srs_order 指定为 3000。

使用 EigenDA KZG 可信设置配置

  1. 按照设置说明从 操作员设置指南下载 G1 和 G2 的 2 的幂次点。
  2. kzg.setup() 函数中指定这些文件,留空 g2_points,并按照指南指定 srs_order
  3. 请注意,这个过程将需要几分钟来加载,因为它有点复杂。

Clippy

可以通过运行 cargo clippy --all --manifest-path Cargo.toml -- -D warnings 来触发代码检查。

快速入门

  1. 检查 test_compute_kzg_proof 函数中的测试,以了解快速入门时库的端到端使用。

要求

  1. 所需的 SRS 点格式与 EigenDA 提供的格式相同。
  2. 承诺以拉格朗日格式执行。所需的 IFFT 在函数内部完成,无需单独执行。
  3. 对于证明生成,数据被视为多项式的评估。所需的(i)FFT通过计算函数执行,无需单独执行。

函数参考

from_bytes_and_pad()

通过Blob加载,使用from_bytes_and_pad接受字节并“填充”数据,使其符合Eigen DA功能的要求。它还跟踪填充后的blob长度。

to_polynomial()

通过调用to_polynomial函数,可以从Blob获取多项式。这会将Blob转换为域元素,然后从这个域元素长度计算下一个2的幂,并为剩余长度附加zero值元素。

data_setup_customdata_setup_mins参数

应使用data_setup_custom(用于测试)或data_setup_mins来指定块的数量和块长度。这些参数用于计算FFT操作所需的FFT参数。

commit()

commit函数接受一个polynomial。它通过执行(i)FFT在lagrange基上进行计算。

compute_kzg_proof_with_roots_of_unity()

compute_kzg_proof_with_roots_of_unity接受一个Polynomial和一个需要计算的索引index

依赖项

~7–18MB
~232K SLoC