Skip to content

Commit

Permalink
Merge pull request #752 from zcash/cost-without-permutation
Browse files Browse the repository at this point in the history
`dev::cost`: Handle cost calculation for circuits without permutation
  • Loading branch information
str4d authored Mar 21, 2023
2 parents 642924d + 0e5c7a1 commit 1a53c0c
Showing 1 changed file with 40 additions and 2 deletions.
42 changes: 40 additions & 2 deletions halo2_proofs/src/dev/cost.rs
Original file line number Diff line number Diff line change
Expand Up @@ -362,8 +362,11 @@ impl<G: PrimeGroup, ConcreteCircuit: Circuit<G::Scalar>> CircuitCost<G, Concrete

// Global permutation argument:
// - chunks commitments per instance
// - 2*chunks + (chunks - 1) evals per instance
equality: ProofContribution::new(chunks, 3 * chunks - 1),
// - 2 * chunks + (chunks - 1) evals per instance
equality: ProofContribution::new(
chunks,
if chunks == 0 { chunks } else { 3 * chunks - 1 },
),

_marker: PhantomData::default(),
}
Expand Down Expand Up @@ -506,3 +509,38 @@ impl<G: PrimeGroup> From<ProofSize<G>> for usize {
+ proof.polycomm.len(point, scalar)
}
}

#[cfg(test)]
mod tests {
use pasta_curves::{Eq, Fp};

use crate::circuit::SimpleFloorPlanner;

use super::*;

#[test]
fn circuit_cost_without_permutation() {
const K: u32 = 4;

struct MyCircuit;
impl Circuit<Fp> for MyCircuit {
type Config = ();
type FloorPlanner = SimpleFloorPlanner;

fn without_witnesses(&self) -> Self {
Self
}

fn configure(_meta: &mut ConstraintSystem<Fp>) -> Self::Config {}

fn synthesize(
&self,
_config: Self::Config,
_layouter: impl crate::circuit::Layouter<Fp>,
) -> Result<(), Error> {
Ok(())
}
}
CircuitCost::<Eq, MyCircuit>::measure(K, &MyCircuit).proof_size(1);
}
}

0 comments on commit 1a53c0c

Please sign in to comment.