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 滚动集成中的欺诈和有效性证明逻辑。
警告 & 声明
此代码未经审计且处于建设中。这是一款实验性软件,以“现状”和“可用”为基础提供,可能根本无法正常工作。不应在生产中使用。
测试设置
- 要测试,请从 DA 资源下载提供的 G1 和 G2 点。
- 在
kzg.setup()
函数中指定这些文件,留空g2_power_of2_path
,并将srs_order
指定为 3000。
使用 EigenDA KZG 可信设置配置
- 按照设置说明从 操作员设置指南下载 G1 和 G2 的 2 的幂次点。
- 在
kzg.setup()
函数中指定这些文件,留空g2_points
,并按照指南指定srs_order
。 - 请注意,这个过程将需要几分钟来加载,因为它有点复杂。
Clippy
可以通过运行 cargo clippy --all --manifest-path Cargo.toml -- -D warnings
来触发代码检查。
快速入门
- 检查
test_compute_kzg_proof
函数中的测试,以了解快速入门时库的端到端使用。
要求
- 所需的 SRS 点格式与 EigenDA 提供的格式相同。
- 承诺以拉格朗日格式执行。所需的 IFFT 在函数内部完成,无需单独执行。
- 对于证明生成,数据被视为多项式的评估。所需的(i)FFT通过计算函数执行,无需单独执行。
函数参考
from_bytes_and_pad()
通过Blob
加载,使用from_bytes_and_pad
接受字节并“填充”数据,使其符合Eigen DA功能的要求。它还跟踪填充后的blob长度。
to_polynomial()
通过调用to_polynomial
函数,可以从Blob
获取多项式。这会将Blob转换为域元素,然后从这个域元素长度计算下一个2的幂,并为剩余长度附加zero
值元素。
data_setup_custom
和data_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