From e1b956c781de01378eaa299c88eaef4f3e4aa678 Mon Sep 17 00:00:00 2001 From: Ivo Kubjas Date: Thu, 10 Oct 2024 09:07:32 +0000 Subject: [PATCH] fix: enforce activation constraints for ecdata antichamber --- prover/zkevm/prover/ecdsa/antichamber.go | 2 +- .../prover/ecdsa/antichamber_constraints.go | 10 ++++------ prover/zkevm/prover/ecdsa/utils.go | 18 ------------------ 3 files changed, 5 insertions(+), 25 deletions(-) delete mode 100644 prover/zkevm/prover/ecdsa/utils.go diff --git a/prover/zkevm/prover/ecdsa/antichamber.go b/prover/zkevm/prover/ecdsa/antichamber.go index c5fff035c..5fb8aeb9e 100644 --- a/prover/zkevm/prover/ecdsa/antichamber.go +++ b/prover/zkevm/prover/ecdsa/antichamber.go @@ -126,7 +126,7 @@ func newAntichamber(comp *wizard.CompiledIOP, inputs *antichamberInput) *anticha res.AlignedGnarkData = plonk.DefineAlignment(comp, toAlign) // root module constraints - res.csIsActive(comp) + res.csIsActiveActivation(comp) res.csZeroWhenInactive(comp) res.csConsistentPushingFetching(comp) res.csIDSequential(comp) diff --git a/prover/zkevm/prover/ecdsa/antichamber_constraints.go b/prover/zkevm/prover/ecdsa/antichamber_constraints.go index 7fc187065..08df3a448 100644 --- a/prover/zkevm/prover/ecdsa/antichamber_constraints.go +++ b/prover/zkevm/prover/ecdsa/antichamber_constraints.go @@ -8,12 +8,10 @@ import ( commoncs "github.com/consensys/linea-monorepo/prover/zkevm/prover/common/common_constraints" ) -// csIsActive constraints that IsActive module to be only one for antichamber rounds. -func (ac *antichamber) csIsActive(comp *wizard.CompiledIOP) { - // column must be binary - commoncs.MustBeBinary(comp, ac.IsActive) - // allow becoming inactive from active but now vice versa - isZeroWhenInactive(comp, ac.IsActive, column.Shift(ac.IsActive, -1)) +// csIsActiveActivation constraints that IsActive module to be only one for antichamber rounds. +func (ac *antichamber) csIsActiveActivation(comp *wizard.CompiledIOP) { + // IsActive must be binary and cannot transition from 0 to 1 + commoncs.MustBeActivationColumns(comp, ac.IsActive) } func (ac *antichamber) csZeroWhenInactive(comp *wizard.CompiledIOP) { diff --git a/prover/zkevm/prover/ecdsa/utils.go b/prover/zkevm/prover/ecdsa/utils.go deleted file mode 100644 index 224e416cb..000000000 --- a/prover/zkevm/prover/ecdsa/utils.go +++ /dev/null @@ -1,18 +0,0 @@ -package ecdsa - -import ( - "github.com/consensys/linea-monorepo/prover/protocol/ifaces" - "github.com/consensys/linea-monorepo/prover/protocol/wizard" - sym "github.com/consensys/linea-monorepo/prover/symbolic" -) - -// -- utils. Copied from prover/zkevm/prover/statemanager/statesummary/state_summary.go - -// isZeroWhenInactive constraints the column to cancel when inactive. -func isZeroWhenInactive(comp *wizard.CompiledIOP, c, isActive ifaces.Column) { - comp.InsertGlobal( - ROUND_NR, - ifaces.QueryIDf("%v_IS_ZERO_WHEN_INACTIVE", c.GetColID()), - sym.Sub(c, sym.Mul(c, isActive)), - ) -}