4 个版本
0.1.3 | 2024年7月15日 |
---|---|
0.1.2 | 2024年7月13日 |
0.1.1 | 2024年7月13日 |
0.1.0 | 2024年7月10日 |
#473 在 算法 中
每月452 次下载
用于 verkle-tree
14KB
224 行
KZG 承诺库
此仓库包含 KZG 承诺的 Rust 实现,KZG 承诺是用于多项式承诺的加密原语。该库提供生成、提交和验证多项式承诺的功能。
关于实现 KZG 承诺方案 的博客文章。您可以在此找到此代码的 Python 版本 此处
功能
- 向量到多项式:将元素向量转换为多项式形式。
- 多项式承诺:对多项式进行承诺
- 证明生成:从向量中生成给定点的证明。
- 证明验证:验证生成的证明的正确性。
安装
要使用此库,请将以下内容添加到您的 Cargo.toml
kzg_commitment = "0.1.0"
使用
以下是如何使用此库的基本示例
use kzg_commitment::KZGCommitment;
use ark_bls12_381::{Fr as F};
fn main() {
let kzg = KZGCommitment::new(50);
let vector = vec![F::from(120), F::from(-15), F::from(60), F::from(80)];
let polynomial = KZGCommitment::vector_to_polynomial(&vector);
let commitment = kzg.commit_polynomial(&polynomial);
let points = vec![(F::from(0), F::from(120)), (F::from(1), F::from(-15))];
let proof = kzg.generate_proof(&polynomial, &random_points).unwrap();
let verification = kzg.verify_proof(&commitment, &random_points, &proof);
assert!(verification, "Verification failed");
}
测试
要运行测试,请使用以下命令
cargo test
示例测试
test_vec_to_poly
:测试将向量转换为多项式并在随机点上评估它。test_verify_proof_valid
:测试生成和验证有效证明。test_invalid_proof_generation
:测试生成无效证明并确保返回正确的错误。test_invalid_proof_verification
:测试验证无效证明并确保返回正确的错误。
待办事项
- 使用 BigInt 而不是 i32 作为向量
- 添加对预计算 powers_of_tau (trusted_setup) 的支持
- 添加更多无效证明验证测试
- 添加基准测试
贡献
欢迎贡献!请打开一个问题或提交一个拉取请求。
许可证
本项目采用 MIT 许可证。有关详细信息,请参阅 LICENSE 文件。
鸣谢
KZG 承诺 - 更多关于 KZG 承诺的信息。
本项目受 Dankrad Feist 的博客文章《KZG 承诺》的启发。
依赖关系
~5.5MB
~99K SLoC