mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-10 01:33:07 +00:00
Fibonacci example
This commit is contained in:
parent
c80e9e4ef1
commit
2e6480a97f
39
plonky2/examples/fibonacci.rs
Normal file
39
plonky2/examples/fibonacci.rs
Normal file
@ -0,0 +1,39 @@
|
||||
use anyhow::Result;
|
||||
use plonky2::iop::witness::PartialWitness;
|
||||
use plonky2::plonk::circuit_builder::CircuitBuilder;
|
||||
use plonky2::plonk::circuit_data::CircuitConfig;
|
||||
use plonky2::plonk::config::{GenericConfig, PoseidonGoldilocksConfig};
|
||||
use plonky2::field::types::Field;
|
||||
use plonky2::plonk::verifier::verify;
|
||||
|
||||
fn main() -> Result<()> {
|
||||
const D: usize = 2;
|
||||
type C = PoseidonGoldilocksConfig;
|
||||
type F = <C as GenericConfig<D>>::F;
|
||||
|
||||
let config = CircuitConfig::standard_recursion_config();
|
||||
|
||||
let pw = PartialWitness::new();
|
||||
let mut builder = CircuitBuilder::<F, D>::new(config);
|
||||
|
||||
let zero_target = builder.zero();
|
||||
let one_target = builder.one();
|
||||
let mut prev_target = zero_target;
|
||||
let mut cur_target = one_target;
|
||||
for _ in 0..99 {
|
||||
let temp = builder.add(prev_target, cur_target);
|
||||
prev_target = cur_target;
|
||||
cur_target = temp;
|
||||
}
|
||||
|
||||
let fib_100 = F::from_canonical_u64(3736710860384812976);
|
||||
let fib_100_target = builder.constant(fib_100);
|
||||
|
||||
builder.connect(fib_100_target, cur_target);
|
||||
|
||||
let data = builder.build::<C>();
|
||||
|
||||
let proof = data.prove(pw)?;
|
||||
|
||||
verify(proof, &data.verifier_only, &data.common)
|
||||
}
|
||||
@ -12,7 +12,7 @@ use crate::plonk::validate_shape::validate_proof_with_pis_shape;
|
||||
use crate::plonk::vanishing_poly::eval_vanishing_poly;
|
||||
use crate::plonk::vars::EvaluationVars;
|
||||
|
||||
pub(crate) fn verify<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>(
|
||||
pub fn verify<F: RichField + Extendable<D>, C: GenericConfig<D, F = F>, const D: usize>(
|
||||
proof_with_pis: ProofWithPublicInputs<F, C, D>,
|
||||
verifier_data: &VerifierOnlyCircuitData<C, D>,
|
||||
common_data: &CommonCircuitData<F, C, D>,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user