16个版本 (6个稳定版)

1.1.0-rc.2 2024年8月22日
1.1.0-rc.12024年8月9日
1.0.5 2024年7月30日
1.0.1 2024年6月5日
0.21.0 2024年3月12日

#855 in 加密学

Download history 1995/week @ 2024-05-04 2163/week @ 2024-05-11 2060/week @ 2024-05-18 1716/week @ 2024-05-25 2004/week @ 2024-06-01 2013/week @ 2024-06-08 2104/week @ 2024-06-15 2484/week @ 2024-06-22 2160/week @ 2024-06-29 3429/week @ 2024-07-06 4030/week @ 2024-07-13 3625/week @ 2024-07-20 4533/week @ 2024-07-27 3672/week @ 2024-08-03 3462/week @ 2024-08-10 3154/week @ 2024-08-17

15,480 个月下载量
用于 6 个crate(直接使用2个)

Apache-2.0

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