#zk-snarks #snark #zero-knowledge #gnark

gnark-bn254-verifier

用于BN254曲线的rust gnark验证器

3个稳定版本

新版本 1.0.2 2024年8月14日

#1013密码学

Download history 303/week @ 2024-08-10

303 每月下载量

MIT/Apache

48KB
1K SLoC

gnark BN254验证器

gnark-bn254-verifier crate用于在Bn254曲线上验证Groth16和PlonK证明,确保与由gnark库生成的证明兼容。可以将从gnark保存的证明和验证密钥加载到该库中,以便轻松验证证明。

如何从gnark保存证明和验证密钥

要从gnark保存证明和验证密钥,可以使用以下代码片段

// Write the verifier key.
vkFile, err := os.Create("vk.bin")
if err != nil {
    panic(err)
}
defer vkFile.Close()
_, err = vk.WriteTo(vkFile)
if err != nil {
    panic(err)
}

// Write the proving key.
proofFile, err := os.Create("proof.bin")
if err != nil {
    panic(err)
}
defer proofFile.Close()
_, err = proof.WriteTo(proofFile)
if err != nil {
    panic(err)
}

用法

要使用此库,请将其添加到您的Cargo.toml中的依赖项

[dependencies]
gnark-bn254-verifier = "1.0.2"

然后,您可以通过调用verify函数来验证证明

use gnark_bn254_verifier::{verify, ProvingSystem, Fr};

fn main() {

    let proof = std::fs::read("proof.bin").unwrap();
    let vk = std::fs::read("vk.bin").unwrap();

    if verify(&proof, &vk, &[Fr::from(1u8), Fr::from(7u8)], ProvingSystem::Plonk) {
        println!("Proof is valid");
    } else {
        println!("Proof is invalid");
    }
}

功能

  • 使用gnark生成的Groth16和PlonK证明的验证。
  • 易于集成到Rust项目中。

依赖项

~6.5MB
~120K SLoC