From e420aa7b329f309692c2d61f1e67250db19afed0 Mon Sep 17 00:00:00 2001 From: Ahmad Afuni Date: Wed, 30 Apr 2025 07:15:20 +1000 Subject: [PATCH] Make Plonky2 config more explicit (#209) --- src/backends/plonky2/basetypes.rs | 24 ++++++++++++++++++++---- src/backends/plonky2/mainpod/mod.rs | 2 +- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/backends/plonky2/basetypes.rs b/src/backends/plonky2/basetypes.rs index 0f17151..7a4bbf5 100644 --- a/src/backends/plonky2/basetypes.rs +++ b/src/backends/plonky2/basetypes.rs @@ -2,14 +2,30 @@ //! `backend_plonky2` feature is enabled. //! See src/middleware/basetypes.rs for more details. -use plonky2::plonk::{config::PoseidonGoldilocksConfig, proof::Proof as Plonky2Proof}; +use plonky2::{ + field::extension::quadratic::QuadraticExtension, + hash::poseidon::PoseidonHash, + plonk::{config::GenericConfig, proof::Proof as Plonky2Proof}, +}; +use serde::Serialize; use crate::middleware::F; -/// C is the Plonky2 config used in POD2 to work with Plonky2 recursion. -pub type C = PoseidonGoldilocksConfig; /// D defines the extension degree of the field used in the Plonky2 proofs (quadratic extension). pub const D: usize = 2; +/// FE is the degree D field extension used in Plonky2 proofs. +pub type FE = QuadraticExtension; + +/// C is the Plonky2 config used in POD2 to work with Plonky2 recursion. +#[derive(Debug, Copy, Clone, Default, Eq, PartialEq, Serialize)] +pub struct C; +impl GenericConfig for C { + type F = F; + type FE = FE; + type Hasher = PoseidonHash; + type InnerHasher = PoseidonHash; +} + /// proof system proof -pub type Proof = Plonky2Proof; +pub type Proof = Plonky2Proof; diff --git a/src/backends/plonky2/mainpod/mod.rs b/src/backends/plonky2/mainpod/mod.rs index c3324a3..83df6ae 100644 --- a/src/backends/plonky2/mainpod/mod.rs +++ b/src/backends/plonky2/mainpod/mod.rs @@ -352,7 +352,7 @@ pub struct MainPod { params: Params, id: PodId, public_statements: Vec, - proof: ProofWithPublicInputs, + proof: ProofWithPublicInputs, } /// Convert a Statement into middleware::Statement and replace references to SELF by `self_id`.