From ec39e03b10e242421d2dc3ca4dcfa623fd8a7fed Mon Sep 17 00:00:00 2001 From: M Alghazwi Date: Tue, 27 May 2025 10:27:40 +0200 Subject: [PATCH] add observe the FRI config in the challenger --- verifier/util.go | 7 +++++++ verifier/verifier.go | 21 +++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/verifier/util.go b/verifier/util.go index 150ada5..e7525ae 100644 --- a/verifier/util.go +++ b/verifier/util.go @@ -22,3 +22,10 @@ func (c *ExampleVerifierCircuit) Define(api frontend.API) error { return nil } + +func boolToUint64(b bool) uint64 { + if b { + return 1 + } + return 0 +} diff --git a/verifier/verifier.go b/verifier/verifier.go index 0d47f23..05d5ea3 100644 --- a/verifier/verifier.go +++ b/verifier/verifier.go @@ -51,6 +51,27 @@ func (c *VerifierChip) GetChallenges( numChallenges := config.NumChallenges challenger := challenger.NewChip(c.api) + // observe the FRI config + var friParams = c.commonData.FriParams + var friConfig = friParams.Config + challenger.ObserveElement(gl.NewVariable(friConfig.RateBits)) + challenger.ObserveElement(gl.NewVariable(friConfig.CapHeight)) + challenger.ObserveElement(gl.NewVariable(friConfig.ProofOfWorkBits)) + // here we fix the reduction strategy to the standard one: + // reduction_strategy: FriReductionStrategy::ConstantArityBits(4, 5) + // this is serialized as [1,4,5] + // TODO: make this work for all reduction strategies + challenger.ObserveElement(gl.One()) + challenger.ObserveElement(gl.NewVariable(4)) + challenger.ObserveElement(gl.NewVariable(5)) + challenger.ObserveElement(gl.NewVariable(friConfig.NumQueryRounds)) + var hide uint64 = boolToUint64(friParams.Hiding) + challenger.ObserveElement(gl.NewVariable(hide)) + challenger.ObserveElement(gl.NewVariable(friParams.DegreeBits)) + for _, arity := range friParams.ReductionArityBits { + challenger.ObserveElement(gl.NewVariable(arity)) + } + var circuitDigest = verifierData.CircuitDigest challenger.ObserveBN254Hash(circuitDigest)