mirror of
https://github.com/logos-storage/gnark-plonky2-verifier.git
synced 2026-01-07 23:53:08 +00:00
broken challenge array
This commit is contained in:
parent
e9f194c946
commit
df3f8082ca
@ -99,9 +99,16 @@ func (c *ChallengerChip) GetHash() Hash {
|
||||
return [4]F{c.GetChallenge(), c.GetChallenge(), c.GetChallenge(), c.GetChallenge()}
|
||||
}
|
||||
|
||||
func (c *ChallengerChip) GetFriChallenges(commitPhaseMerkleCaps []MerkleCap, finalPoly PolynomialCoeffs, powWitness F, degreeBits uint64, config FriConfig) FriChallenges {
|
||||
func (c *ChallengerChip) GetFriChallenges(commitPhaseMerkleCaps []MerkleCap, finalPoly PolynomialCoeffs, powWitness F, degreeBits uint64, config struct {
|
||||
RateBits uint64 "json:\"rate_bits\""
|
||||
CapHeight uint64 "json:\"cap_height\""
|
||||
ProofOfWorkBits uint64 "json:\"proof_of_work_bits\""
|
||||
ReductionStrategy struct {
|
||||
ConstantArityBits []int "json:\"ConstantArityBits\""
|
||||
} "json:\"reduction_strategy\""
|
||||
NumQueryRounds uint64 "json:\"num_query_rounds\""
|
||||
}) FriChallenges {
|
||||
numFriQueries := config.NumQueryRounds
|
||||
ldeSize := 1 << (degreeBits + config.RateBits)
|
||||
friAlpha := c.GetExtensionChallenge()
|
||||
|
||||
var friBetas []QuadraticExtension
|
||||
@ -118,9 +125,6 @@ func (c *ChallengerChip) GetFriChallenges(commitPhaseMerkleCaps []MerkleCap, fin
|
||||
friPowResponse := c.poseidonChip.HashNoPad(powInputs)[0]
|
||||
friQueryIndices := c.GetNChallenges(numFriQueries)
|
||||
|
||||
// need to modulo lde size on fri query indices
|
||||
_ = ldeSize
|
||||
|
||||
return FriChallenges{
|
||||
FriAlpha: friAlpha,
|
||||
FriBetas: friBetas,
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
package plonky2_verifier
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
. "gnark-ed25519/field"
|
||||
"gnark-ed25519/poseidon"
|
||||
"gnark-ed25519/utils"
|
||||
|
||||
"github.com/consensys/gnark/frontend"
|
||||
)
|
||||
@ -17,12 +19,14 @@ func (c *VerifierChip) GetPublicInputsHash(publicInputs []F) Hash {
|
||||
return c.poseidonChip.HashNoPad(publicInputs)
|
||||
}
|
||||
|
||||
func (c *VerifierChip) GetChallenges(proofWithPis ProofWithPublicInputs, publicInputsHash Hash, commonData CommonCircuitData) ProofChallenges {
|
||||
func (c *VerifierChip) GetChallenges(proofWithPis ProofWithPublicInputs, publicInputsHash Hash, commonData CommonCircuitDataRaw) ProofChallenges {
|
||||
config := commonData.Config
|
||||
numChallenges := config.NumChallenges
|
||||
challenger := NewChallengerChip(c.api, c.field, c.poseidonChip)
|
||||
|
||||
challenger.ObserveHash(commonData.CircuitDigest)
|
||||
var circuitDigest Hash
|
||||
copy(circuitDigest[:], utils.Uint64ArrayToFArray(commonData.CircuitDigest.Elements))
|
||||
challenger.ObserveHash(circuitDigest)
|
||||
challenger.ObserveHash(publicInputsHash)
|
||||
challenger.ObserveCap(proofWithPis.Proof.WiresCap)
|
||||
plonkBetas := challenger.GetNChallenges(numChallenges)
|
||||
@ -34,8 +38,6 @@ func (c *VerifierChip) GetChallenges(proofWithPis ProofWithPublicInputs, publicI
|
||||
challenger.ObserveCap(proofWithPis.Proof.QuotientPolysCap)
|
||||
plonkZeta := challenger.GetExtensionChallenge()
|
||||
|
||||
_, _, _, _ = plonkAlphas, plonkBetas, plonkGammas, plonkZeta
|
||||
|
||||
challenger.ObserveOpenings(proofWithPis.Proof.Openings.ToFriOpenings())
|
||||
|
||||
return ProofChallenges{
|
||||
@ -47,12 +49,14 @@ func (c *VerifierChip) GetChallenges(proofWithPis ProofWithPublicInputs, publicI
|
||||
proofWithPis.Proof.OpeningProof.CommitPhaseMerkleCaps,
|
||||
proofWithPis.Proof.OpeningProof.FinalPoly,
|
||||
proofWithPis.Proof.OpeningProof.PowWitness,
|
||||
commonData.DegreeBits, config.FriConfig,
|
||||
commonData.DegreeBits,
|
||||
config.FriConfig,
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
func (c *VerifierChip) Verify(proofWithPis ProofWithPublicInputs, verifierData VerifierOnlyCircuitData, commonData CommonCircuitData) {
|
||||
func (c *VerifierChip) Verify(proofWithPis ProofWithPublicInputs, verifierData VerifierOnlyCircuitData, commonData CommonCircuitDataRaw) {
|
||||
publicInputsHash := c.GetPublicInputsHash(proofWithPis.PublicInputs)
|
||||
_ = c.GetChallenges(proofWithPis, publicInputsHash, commonData)
|
||||
proofChallenges := c.GetChallenges(proofWithPis, publicInputsHash, commonData)
|
||||
fmt.Printf("%+v\n", proofChallenges)
|
||||
}
|
||||
|
||||
37
plonky2_verifier/verifier_test.go
Normal file
37
plonky2_verifier/verifier_test.go
Normal file
@ -0,0 +1,37 @@
|
||||
package plonky2_verifier
|
||||
|
||||
import (
|
||||
. "gnark-ed25519/field"
|
||||
. "gnark-ed25519/poseidon"
|
||||
"testing"
|
||||
|
||||
"github.com/consensys/gnark/frontend"
|
||||
"github.com/consensys/gnark/test"
|
||||
)
|
||||
|
||||
type TestVerifierCircuit struct{}
|
||||
|
||||
func (circuit *TestVerifierCircuit) Define(api frontend.API) error {
|
||||
field := NewFieldAPI(api)
|
||||
poseidonChip := NewPoseidonChip(api, field)
|
||||
verifierChip := VerifierChip{api: api, field: field, poseidonChip: *poseidonChip}
|
||||
proofWithPis := DeserializeProofWithPublicInputs("./data/proof_with_public_inputs.json")
|
||||
commonCircuitData := DeserializeCommonCircuitData("./data/common_circuit_data.json")
|
||||
verfierOnlyCircuitData := DeserializeVerifierOnlyCircuitData("./data/verifier_only_circuit_data.json")
|
||||
verifierChip.Verify(proofWithPis, verfierOnlyCircuitData, commonCircuitData)
|
||||
panic("look at stdout")
|
||||
return nil
|
||||
}
|
||||
|
||||
func TestVerifierWitness(t *testing.T) {
|
||||
assert := test.NewAssert(t)
|
||||
|
||||
testCase := func() {
|
||||
circuit := TestVerifierCircuit{}
|
||||
witness := TestVerifierCircuit{}
|
||||
err := test.IsSolved(&circuit, &witness, TEST_CURVE.ScalarField())
|
||||
assert.NoError(err)
|
||||
}
|
||||
|
||||
testCase()
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user