16个版本 (6个稳定版)
新 1.1.0-rc.2 | 2024年8月22日 |
---|---|
1.1.0-rc.1 | 2024年8月9日 |
1.0.5 | 2024年7月30日 |
1.0.1 | 2024年6月5日 |
0.21.0 | 2024年3月12日 |
#855 in 加密学
15,480 个月下载量
用于 6 个crate(直接使用2个)
1MB
37K SLoC
Groth16
此库实现了BN_254椭圆曲线上的Groth16协议的验证器。
示例
use risc0_groth16::{ProofJson, PublicInputsJson, Verifier, VerifyingKeyJson};
const TEST_VERIFICATION_KEY: &str = test_data!("verification_key.json");
const TEST_PROOF: &str = test_data!("proof.json");
const TEST_PUBLIC_INPUTS: &str = test_data!("public.json");
fn verify() {
let verifying_key: VerifyingKeyJson = serde_json::from_str(TEST_VERIFICATION_KEY).unwrap();
let proof: ProofJson = serde_json::from_str(TEST_PROOF).unwrap();
let public_inputs = PublicInputsJson {
values: serde_json::from_str(TEST_PUBLIC_INPUTS).unwrap(),
};
let verifier = Verifier::from_json(proof, public_inputs, verifying_key).unwrap();
verifier.verify().unwrap();
}
STARK到SNARK
它还提供了stark_to_snark函数,通过Docker运行Groth16递归验证器。在生成RISC Zero STARK证明后,可以使用此函数将其转换为Groth16证明。当启用prove
功能标志时,此函数可用。
重要提示:此功能需要x86架构和已安装Docker。此外,必须遵循特定的安装步骤才能使用此功能。
获取Groth16证明的推荐方法是使用risc0-zkvm crate中的ProverOpts::groth16() trait。使用它将生成Groth16证明。
依赖项
~7–19MB
~267K SLoC