fn fri_prove_verify()

in fri/src/prover/tests.rs [21:60]


fn fri_prove_verify() {
    let trace_length = 4096;
    let lde_blowup = 8;

    let options = FriOptions::new(lde_blowup, 4, 256);
    let mut channel = build_prover_channel(trace_length, &options);
    let evaluations = build_evaluations(trace_length, lde_blowup);

    // instantiate the prover and generate the proof
    let mut prover = FriProver::new(options.clone());
    prover.build_layers(&mut channel, evaluations.clone());
    let positions = channel.draw_query_positions();
    let proof = prover.build_proof(&positions);

    // make sure the proof can be verified
    let commitments = channel.layer_commitments().to_vec();
    let max_degree = trace_length - 1;
    let result = verify_proof(
        proof.clone(),
        commitments.clone(),
        &evaluations,
        max_degree,
        trace_length * lde_blowup,
        &positions,
        &options,
    );
    assert!(result.is_ok(), "{:}", result.err().unwrap());

    // make sure proof fails for invalid degree
    let result = verify_proof(
        proof,
        commitments,
        &evaluations,
        max_degree - 256,
        trace_length * lde_blowup,
        &positions,
        &options,
    );
    assert!(result.is_err());
}