diff --git a/benchmark.go b/benchmark.go index 730286c..37070d6 100644 --- a/benchmark.go +++ b/benchmark.go @@ -12,12 +12,14 @@ import ( "github.com/consensys/gnark-crypto/ecc" "github.com/consensys/gnark/backend/groth16" + "github.com/consensys/gnark/constraint" "github.com/consensys/gnark/frontend" "github.com/consensys/gnark/frontend/cs/r1cs" + "github.com/consensys/gnark/profile" ) type BenchmarkPlonky2VerifierCircuit struct { - proofWithPis common.ProofWithPublicInputs + ProofWithPis common.ProofWithPublicInputs `gnark:",public"` verifierChip *verifier.VerifierChip plonky2CircuitName string @@ -25,39 +27,42 @@ type BenchmarkPlonky2VerifierCircuit struct { func (circuit *BenchmarkPlonky2VerifierCircuit) Define(api frontend.API) error { circuitDirname := "./verifier/data/" + circuit.plonky2CircuitName + "/" - proofWithPis := utils.DeserializeProofWithPublicInputs(circuitDirname + "proof_with_public_inputs.json") commonCircuitData := utils.DeserializeCommonCircuitData(circuitDirname + "common_circuit_data.json") verifierOnlyCircuitData := utils.DeserializeVerifierOnlyCircuitData(circuitDirname + "verifier_only_circuit_data.json") circuit.verifierChip = verifier.NewVerifierChip(api, commonCircuitData) - circuit.verifierChip.Verify(proofWithPis, verifierOnlyCircuitData, commonCircuitData) + circuit.verifierChip.Verify(circuit.ProofWithPis, verifierOnlyCircuitData, commonCircuitData) return nil } -func compileCircuit(plonky2Circuit string) frontend.CompiledConstraintSystem { +func compileCircuit(plonky2Circuit string) constraint.ConstraintSystem { circuit := BenchmarkPlonky2VerifierCircuit{ plonky2CircuitName: plonky2Circuit, } proofWithPis := utils.DeserializeProofWithPublicInputs("./verifier/data/" + plonky2Circuit + "/proof_with_public_inputs.json") - circuit.proofWithPis = proofWithPis + circuit.ProofWithPis = proofWithPis + p := profile.Start() r1cs, err := frontend.Compile(ecc.BN254.ScalarField(), r1cs.NewBuilder, &circuit) if err != nil { fmt.Println("error in building circuit", err) os.Exit(1) } + p.Stop() + fmt.Println(p.NbConstraints()) + fmt.Println(p.Top()) return r1cs } -func createProof(r1cs frontend.CompiledConstraintSystem, plonky2Circuit string) groth16.Proof { +func createProof(r1cs constraint.ConstraintSystem, plonky2Circuit string) groth16.Proof { proofWithPis := utils.DeserializeProofWithPublicInputs("./verifier/data/" + plonky2Circuit + "/proof_with_public_inputs.json") // Witness assignment := &BenchmarkPlonky2VerifierCircuit{ - proofWithPis: proofWithPis, + ProofWithPis: proofWithPis, } fmt.Println("Generating witness", time.Now()) @@ -97,6 +102,14 @@ func main() { } r1cs := compileCircuit(*plonky2Circuit) - proof := createProof(r1cs, *plonky2Circuit) - fmt.Println(proof.CurveID(), time.Now()) + println("r1cs.GetNbCoefficients(): ", r1cs.GetNbCoefficients()) + println("r1cs.GetNbConstraints(): ", r1cs.GetNbConstraints()) + println("r1cs.GetNbSecretVariables(): ", r1cs.GetNbSecretVariables()) + println("r1cs.GetNbPublicVariables(): ", r1cs.GetNbPublicVariables()) + println("r1cs.GetNbInternalVariables(): ", r1cs.GetNbInternalVariables()) + + /* + proof := createProof(r1cs, *plonky2Circuit) + fmt.Println(proof.CurveID(), time.Now()) + */ } diff --git a/field/goldilocks.go b/field/goldilocks.go index b5f9324..a48271d 100644 --- a/field/goldilocks.go +++ b/field/goldilocks.go @@ -8,29 +8,32 @@ import ( ) type EmulatedField = emulated.Goldilocks -type F = emulated.Element[EmulatedField] +type F = *emulated.Element[EmulatedField] +type FieldAPI = *emulated.Field[emulated.Goldilocks] var TEST_CURVE = ecc.BN254 -func NewFieldElement(x uint64) F { - return emulated.NewElement[EmulatedField](x) +func NewFieldAPI(api frontend.API) FieldAPI { + fieldAPI, err := emulated.NewField[EmulatedField](api) + if err != nil { + panic(err) + } + return fieldAPI } -func NewFieldElementFromString(x string) F { - return emulated.NewElement[EmulatedField](x) +func NewFieldConst(x uint64) F { + val := emulated.ValueOf[EmulatedField](x) + return &val } -func NewFieldAPI(api frontend.API) frontend.API { - field, err := emulated.NewField[EmulatedField](api) - if err != nil { - panic(err) - } - return field +func NewFieldConstFromString(x string) F { + val := emulated.ValueOf[EmulatedField](x) + return &val } -var ONE_F = NewFieldElement(1) -var ZERO_F = NewFieldElement(0) -var NEG_ONE_F = NewFieldElement(EmulatedField{}.Modulus().Uint64() - 1) +var ONE_F = NewFieldConst(1) +var ZERO_F = NewFieldConst(0) +var NEG_ONE_F = NewFieldConst(EmulatedField{}.Modulus().Uint64() - 1) var GOLDILOCKS_MULTIPLICATIVE_GROUP_GENERATOR = goldilocks.NewElement(7) var GOLDILOCKS_TWO_ADICITY = uint64(32) @@ -65,3 +68,16 @@ func TwoAdicSubgroup(nLog uint64) []goldilocks.Element { return res } + +func IsZero(api frontend.API, fieldAPI *emulated.Field[emulated.Goldilocks], x F) frontend.Variable { + reduced := fieldAPI.Reduce(x) + limbs := reduced.Limbs + + isZero := api.IsZero(limbs[0]) + for i := 1; i < len(limbs); i++ { + isZero = api.Mul(isZero, api.IsZero(limbs[i])) + } + + return isZero + +} diff --git a/field/quadratic_extension.go b/field/quadratic_extension.go index 42443ba..9168740 100644 --- a/field/quadratic_extension.go +++ b/field/quadratic_extension.go @@ -1,7 +1,6 @@ package field import ( - "fmt" "math/bits" "github.com/consensys/gnark-crypto/field/goldilocks" @@ -14,7 +13,8 @@ type QuadraticExtension = [2]F type QEAlgebra = [D]QuadraticExtension type QuadraticExtensionAPI struct { - fieldAPI frontend.API + api frontend.API + fieldAPI FieldAPI W F DTH_ROOT F @@ -25,7 +25,7 @@ type QuadraticExtensionAPI struct { ZERO_QE_ALGEBRA QEAlgebra } -func NewQuadraticExtensionAPI(fieldAPI frontend.API, degreeBits uint64) *QuadraticExtensionAPI { +func NewQuadraticExtensionAPI(api frontend.API, fieldAPI FieldAPI, degreeBits uint64) *QuadraticExtensionAPI { // TODO: Should degreeBits be verified that it fits within the field and that degree is within uint64? var ZERO_QE = QuadraticExtension{ZERO_F, ZERO_F} @@ -37,10 +37,11 @@ func NewQuadraticExtensionAPI(fieldAPI frontend.API, degreeBits uint64) *Quadrat } return &QuadraticExtensionAPI{ + api: api, fieldAPI: fieldAPI, - W: NewFieldElement(7), - DTH_ROOT: NewFieldElement(18446744069414584320), + W: NewFieldConst(7), + DTH_ROOT: NewFieldConst(18446744069414584320), ONE_QE: QuadraticExtension{ONE_F, ZERO_F}, ZERO_QE: ZERO_QE, @@ -54,20 +55,20 @@ func (c *QuadraticExtensionAPI) SquareExtension(a QuadraticExtension) QuadraticE } func (c *QuadraticExtensionAPI) MulExtension(a QuadraticExtension, b QuadraticExtension) QuadraticExtension { - c_0 := c.fieldAPI.Add(c.fieldAPI.Mul(a[0], b[0]).(F), c.fieldAPI.Mul(c.W, a[1], b[1])).(F) - c_1 := c.fieldAPI.Add(c.fieldAPI.Mul(a[0], b[1]).(F), c.fieldAPI.Mul(a[1], b[0])).(F) + c_0 := c.fieldAPI.Add(c.fieldAPI.Mul(a[0], b[0]), c.fieldAPI.Mul(c.fieldAPI.Mul(c.W, a[1]), b[1])) + c_1 := c.fieldAPI.Add(c.fieldAPI.Mul(a[0], b[1]), c.fieldAPI.Mul(a[1], b[0])) return QuadraticExtension{c_0, c_1} } func (c *QuadraticExtensionAPI) AddExtension(a QuadraticExtension, b QuadraticExtension) QuadraticExtension { - c_0 := c.fieldAPI.Add(a[0], b[0]).(F) - c_1 := c.fieldAPI.Add(a[1], b[1]).(F) + c_0 := c.fieldAPI.Add(a[0], b[0]) + c_1 := c.fieldAPI.Add(a[1], b[1]) return QuadraticExtension{c_0, c_1} } func (c *QuadraticExtensionAPI) SubExtension(a QuadraticExtension, b QuadraticExtension) QuadraticExtension { - c_0 := c.fieldAPI.Sub(a[0], b[0]).(F) - c_1 := c.fieldAPI.Sub(a[1], b[1]).(F) + c_0 := c.fieldAPI.Sub(a[0], b[0]) + c_1 := c.fieldAPI.Sub(a[1], b[1]) return QuadraticExtension{c_0, c_1} } @@ -76,26 +77,26 @@ func (c *QuadraticExtensionAPI) DivExtension(a QuadraticExtension, b QuadraticEx } func (c *QuadraticExtensionAPI) IsZero(a QuadraticExtension) frontend.Variable { - return c.fieldAPI.Mul(c.fieldAPI.IsZero(a[0]), c.fieldAPI.IsZero(a[1])) + return c.api.Mul(IsZero(c.api, c.fieldAPI, a[0]), IsZero(c.api, c.fieldAPI, a[1])) } // TODO: Instead of calculating the inverse within the circuit, can witness the // inverse and assert that a_inverse * a = 1. Should reduce # of constraints. func (c *QuadraticExtensionAPI) InverseExtension(a QuadraticExtension) QuadraticExtension { // First assert that a doesn't have 0 value coefficients - a0_is_zero := c.fieldAPI.IsZero(a[0]) - a1_is_zero := c.fieldAPI.IsZero(a[1]) + a0_is_zero := IsZero(c.api, c.fieldAPI, a[0]) + a1_is_zero := IsZero(c.api, c.fieldAPI, a[1]) // assert that a0_is_zero OR a1_is_zero == false - c.fieldAPI.AssertIsEqual(c.fieldAPI.Mul(a0_is_zero, a1_is_zero).(F), ZERO_F) + c.api.AssertIsEqual(c.api.Mul(a0_is_zero, a1_is_zero), frontend.Variable(0)) - a_pow_r_minus_1 := QuadraticExtension{a[0], c.fieldAPI.Mul(a[1], c.DTH_ROOT).(F)} + a_pow_r_minus_1 := QuadraticExtension{a[0], c.fieldAPI.Mul(a[1], c.DTH_ROOT)} a_pow_r := c.MulExtension(a_pow_r_minus_1, a) - return c.ScalarMulExtension(a_pow_r_minus_1, c.fieldAPI.Inverse(a_pow_r[0]).(F)) + return c.ScalarMulExtension(a_pow_r_minus_1, c.fieldAPI.Inverse(a_pow_r[0])) } func (c *QuadraticExtensionAPI) ScalarMulExtension(a QuadraticExtension, scalar F) QuadraticExtension { - return QuadraticExtension{c.fieldAPI.Mul(a[0], scalar).(F), c.fieldAPI.Mul(a[1], scalar).(F)} + return QuadraticExtension{c.fieldAPI.Mul(a[0], scalar), c.fieldAPI.Mul(a[1], scalar)} } func (c *QuadraticExtensionAPI) FieldToQE(a F) QuadraticExtension { @@ -150,7 +151,7 @@ func (c *QuadraticExtensionAPI) Select(b frontend.Variable, qe0, qe1 QuadraticEx var retQE QuadraticExtension for i := 0; i < 2; i++ { - retQE[i] = c.fieldAPI.Select(b, qe0[i], qe1[i]).(F) + retQE[i] = c.fieldAPI.Select(b, qe0[i], qe1[i]) } return retQE @@ -160,7 +161,7 @@ func (c *QuadraticExtensionAPI) Lookup2(b0 frontend.Variable, b1 frontend.Variab var retQE QuadraticExtension for i := 0; i < 2; i++ { - retQE[i] = c.fieldAPI.Lookup2(b0, b1, qe0[i], qe1[i], qe2[i], qe3[i]).(F) + retQE[i] = c.fieldAPI.Lookup2(b0, b1, qe0[i], qe1[i], qe2[i], qe3[i]) } return retQE @@ -186,6 +187,7 @@ func (c *QuadraticExtensionAPI) InnerProductExtension(constant F, startingAcc Qu return acc } +/* func (c *QuadraticExtensionAPI) Println(a QuadraticExtension) { fmt.Print("Degree 0 coefficient") c.fieldAPI.Println(a[0]) @@ -193,6 +195,7 @@ func (c *QuadraticExtensionAPI) Println(a QuadraticExtension) { fmt.Print("Degree 1 coefficient") c.fieldAPI.Println(a[1]) } +*/ func (c *QuadraticExtensionAPI) MulExtensionAlgebra(a, b QEAlgebra) QEAlgebra { var inner [D][][2]QuadraticExtension @@ -210,7 +213,7 @@ func (c *QuadraticExtensionAPI) MulExtensionAlgebra(a, b QEAlgebra) QEAlgebra { var product QEAlgebra for i := 0; i < D; i++ { - acc := c.InnerProductExtension(NewFieldElement(7), c.ZERO_QE, inner_w[i]) + acc := c.InnerProductExtension(c.W, c.ZERO_QE, inner_w[i]) product[i] = c.InnerProductExtension(ONE_F, acc, inner[i]) } @@ -268,10 +271,10 @@ func (c *QuadraticExtensionAPI) PartialInterpolateExtAlgebra( for i := 0; i < n; i++ { val := values[i] x := domain[i] - xField := NewFieldElement(x.Uint64()) + xField := NewFieldConst(x.Uint64()) xQE := QuadraticExtension{xField, ZERO_F} xQEAlgebra := QEAlgebra{xQE, c.ZERO_QE} - weight := QuadraticExtension{NewFieldElement(barycentricWeights[i].Uint64()), ZERO_F} + weight := QuadraticExtension{NewFieldConst(barycentricWeights[i].Uint64()), ZERO_F} term := c.SubExtensionAlgebra(point, xQEAlgebra) weightedVal := c.ScalarMulExtensionAlgebra(weight, val) newEval = c.MulExtensionAlgebra(newEval, term) diff --git a/field/quadratic_extension_test.go b/field/quadratic_extension_test.go index 787cae4..a3e93be 100644 --- a/field/quadratic_extension_test.go +++ b/field/quadratic_extension_test.go @@ -13,32 +13,32 @@ import ( type TestQuadraticExtensionMulCircuit struct { qeAPI *QuadraticExtensionAPI - operand1 QuadraticExtension - operand2 QuadraticExtension - expectedResult QuadraticExtension + Operand1 QuadraticExtension + Operand2 QuadraticExtension + ExpectedResult QuadraticExtension } func (c *TestQuadraticExtensionMulCircuit) Define(api frontend.API) error { fieldAPI := NewFieldAPI(api) degreeBits := 3 - c.qeAPI = NewQuadraticExtensionAPI(fieldAPI, uint64(degreeBits)) + c.qeAPI = NewQuadraticExtensionAPI(api, fieldAPI, uint64(degreeBits)) - actualRes := c.qeAPI.MulExtension(c.operand1, c.operand2) + actualRes := c.qeAPI.MulExtension(c.Operand1, c.Operand2) - fieldAPI.AssertIsEqual(actualRes[0], c.expectedResult[0]) - fieldAPI.AssertIsEqual(actualRes[1], c.expectedResult[1]) + fieldAPI.AssertIsEqual(actualRes[0], c.ExpectedResult[0]) + fieldAPI.AssertIsEqual(actualRes[1], c.ExpectedResult[1]) return nil } func TestQuadraticExtensionMul(t *testing.T) { assert := test.NewAssert(t) - operand1 := QuadraticExtension{NewFieldElement(4994088319481652598), NewFieldElement(16489566008211790727)} - operand2 := QuadraticExtension{NewFieldElement(3797605683985595697), NewFieldElement(13424401189265534004)} - expectedResult := QuadraticExtension{NewFieldElement(15052319864161058789), NewFieldElement(16841416332519902625)} + operand1 := QuadraticExtension{NewFieldConst(4994088319481652598), NewFieldConst(16489566008211790727)} + operand2 := QuadraticExtension{NewFieldConst(3797605683985595697), NewFieldConst(13424401189265534004)} + expectedResult := QuadraticExtension{NewFieldConst(15052319864161058789), NewFieldConst(16841416332519902625)} - circuit := TestQuadraticExtensionMulCircuit{operand1: operand1, operand2: operand2, expectedResult: expectedResult} - witness := TestQuadraticExtensionMulCircuit{operand1: operand1, operand2: operand2, expectedResult: expectedResult} + circuit := TestQuadraticExtensionMulCircuit{Operand1: operand1, Operand2: operand2, ExpectedResult: expectedResult} + witness := TestQuadraticExtensionMulCircuit{Operand1: operand1, Operand2: operand2, ExpectedResult: expectedResult} err := test.IsSolved(&circuit, &witness, TEST_CURVE.ScalarField()) assert.NoError(err) } @@ -47,20 +47,20 @@ func TestQuadraticExtensionMul(t *testing.T) { type TestQuadraticExtensionDivCircuit struct { qeAPI *QuadraticExtensionAPI - operand1 QuadraticExtension - operand2 QuadraticExtension - expectedResult QuadraticExtension + Operand1 QuadraticExtension + Operand2 QuadraticExtension + ExpectedResult QuadraticExtension } func (c *TestQuadraticExtensionDivCircuit) Define(api frontend.API) error { fieldAPI := NewFieldAPI(api) degreeBits := 3 - c.qeAPI = NewQuadraticExtensionAPI(fieldAPI, uint64(degreeBits)) + c.qeAPI = NewQuadraticExtensionAPI(api, fieldAPI, uint64(degreeBits)) - actualRes := c.qeAPI.DivExtension(c.operand1, c.operand2) + actualRes := c.qeAPI.DivExtension(c.Operand1, c.Operand2) - fieldAPI.AssertIsEqual(actualRes[0], c.expectedResult[0]) - fieldAPI.AssertIsEqual(actualRes[1], c.expectedResult[1]) + fieldAPI.AssertIsEqual(actualRes[0], c.ExpectedResult[0]) + fieldAPI.AssertIsEqual(actualRes[1], c.ExpectedResult[1]) return nil } @@ -68,12 +68,12 @@ func (c *TestQuadraticExtensionDivCircuit) Define(api frontend.API) error { func TestQuadraticExtensionDiv(t *testing.T) { assert := test.NewAssert(t) - operand1 := QuadraticExtension{NewFieldElement(4994088319481652598), NewFieldElement(16489566008211790727)} - operand2 := QuadraticExtension{NewFieldElement(7166004739148609569), NewFieldElement(14655965871663555016)} - expectedResult := QuadraticExtension{NewFieldElement(15052319864161058789), NewFieldElement(16841416332519902625)} + operand1 := QuadraticExtension{NewFieldConst(4994088319481652598), NewFieldConst(16489566008211790727)} + operand2 := QuadraticExtension{NewFieldConst(7166004739148609569), NewFieldConst(14655965871663555016)} + expectedResult := QuadraticExtension{NewFieldConst(15052319864161058789), NewFieldConst(16841416332519902625)} - circuit := TestQuadraticExtensionDivCircuit{operand1: operand1, operand2: operand2, expectedResult: expectedResult} - witness := TestQuadraticExtensionDivCircuit{operand1: operand1, operand2: operand2, expectedResult: expectedResult} + circuit := TestQuadraticExtensionDivCircuit{Operand1: operand1, Operand2: operand2, ExpectedResult: expectedResult} + witness := TestQuadraticExtensionDivCircuit{Operand1: operand1, Operand2: operand2, ExpectedResult: expectedResult} err := test.IsSolved(&circuit, &witness, TEST_CURVE.ScalarField()) assert.NoError(err) } diff --git a/go.mod b/go.mod index 5cf7038..02ea085 100644 --- a/go.mod +++ b/go.mod @@ -3,31 +3,27 @@ module github.com/succinctlabs/gnark-plonky2-verifier go 1.19 require ( - github.com/consensys/gnark v0.7.2-0.20220921094618-a121a3074ee8 - github.com/consensys/gnark-crypto v0.8.1-0.20220819163559-143c75519b0e + github.com/consensys/gnark v0.8.0 + github.com/consensys/gnark-crypto v0.9.1 ) require ( github.com/blang/semver/v4 v4.0.0 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/fxamacker/cbor/v2 v2.2.0 // indirect - github.com/google/pprof v0.0.0-20220729232143-a41b82acbcb1 // indirect + github.com/fxamacker/cbor/v2 v2.4.0 // indirect + github.com/google/pprof v0.0.0-20230207041349-798e818bf904 // indirect github.com/kr/text v0.2.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.16 // indirect github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.9.0 // indirect - github.com/rs/zerolog v1.28.0 // indirect - github.com/stretchr/testify v1.8.0 // indirect + github.com/rs/zerolog v1.29.0 // indirect + github.com/stretchr/testify v1.8.1 // indirect github.com/x448/float16 v0.8.4 // indirect - golang.org/x/exp v0.0.0-20220713135740-79cabaa25d75 // indirect - golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec // indirect + golang.org/x/exp v0.0.0-20230213192124-5e25df0256eb // indirect + golang.org/x/sys v0.5.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect rsc.io/tmplfunc v0.0.3 // indirect ) - -// For now, use a forked version of gnark so that the emaulated fields are -// mod'ed when printed. See here: https://github.com/kevjue/gnark/commit/0b216679a380b4b8d29f10dd96f34e8a5702463e -replace github.com/consensys/gnark v0.7.2-0.20220921094618-a121a3074ee8 => github.com/kevjue/gnark v0.7.2-0.20221123002814-bcc0d7d32d60 diff --git a/go.sum b/go.sum index 82aeb74..109bf9c 100644 --- a/go.sum +++ b/go.sum @@ -2,23 +2,23 @@ github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= -github.com/consensys/gnark-crypto v0.8.1-0.20220819163559-143c75519b0e h1:FyL5vcbvCIoD20M4Fvy+TXRbXKjT16gq7Uq0QDkyytM= -github.com/consensys/gnark-crypto v0.8.1-0.20220819163559-143c75519b0e/go.mod h1:ZTnSzNlt98CpwYIJyk6q/KVcshYWr3fOXXFrrY8a0QQ= +github.com/consensys/gnark v0.8.0 h1:0bQ2MyDG4oNjMQpNyL8HjrrUSSL3yYJg0Elzo6LzmcU= +github.com/consensys/gnark v0.8.0/go.mod h1:aKmA7dIiLbTm0OV37xTq0z+Bpe4xER8EhRLi6necrm8= +github.com/consensys/gnark-crypto v0.9.1 h1:mru55qKdWl3E035hAoh1jj9d7hVnYY5pfb6tmovSmII= +github.com/consensys/gnark-crypto v0.9.1/go.mod h1:a2DQL4+5ywF6safEeZFEPGRiiGbjzGFRUN2sg06VuU4= github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/fxamacker/cbor/v2 v2.2.0 h1:6eXqdDDe588rSYAi1HfZKbx6YYQO4mxQ9eC6xYpU/JQ= -github.com/fxamacker/cbor/v2 v2.2.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= +github.com/fxamacker/cbor/v2 v2.4.0 h1:ri0ArlOR+5XunOP8CRUowT0pSJOwhW098ZCUyskZD88= +github.com/fxamacker/cbor/v2 v2.4.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= -github.com/google/pprof v0.0.0-20220729232143-a41b82acbcb1 h1:8pyqKJvrJqUYaKS851Ule26pwWvey6IDMiczaBLDKLQ= -github.com/google/pprof v0.0.0-20220729232143-a41b82acbcb1/go.mod h1:gSuNB+gJaOiQKLEZ+q+PK9Mq3SOzhRcw2GsGS/FhYDk= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/pprof v0.0.0-20230207041349-798e818bf904 h1:4/hN5RUoecvl+RmJRE2YxKWtnnQls6rQjjW5oV7qg2U= +github.com/google/pprof v0.0.0-20230207041349-798e818bf904/go.mod h1:uglQLonpP8qtYCYyzA+8c/9qtqgA3qsXGYqCPKARAFg= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/kevjue/gnark v0.7.2-0.20221123002814-bcc0d7d32d60 h1:Z7hWN0/Spz1H18rBm9qpqzy0dX1/uWhGSMxMMEaruVY= -github.com/kevjue/gnark v0.7.2-0.20221123002814-bcc0d7d32d60/go.mod h1:iN7/IRE6Eu2QKnTJEsoS48suBV0O5XrM+Nzo1ipp6Zw= -github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= @@ -37,22 +37,24 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.28.0 h1:MirSo27VyNi7RJYP3078AA1+Cyzd2GB66qy3aUHvsWY= -github.com/rs/zerolog v1.28.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= +github.com/rs/zerolog v1.29.0 h1:Zes4hju04hjbvkVkOhdl2HpZa+0PmVwigmo8XoORE5w= +github.com/rs/zerolog v1.29.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= -golang.org/x/exp v0.0.0-20220713135740-79cabaa25d75 h1:x03zeu7B2B11ySp+daztnwM5oBJ/8wGUSqrwcw9L0RA= -golang.org/x/exp v0.0.0-20220713135740-79cabaa25d75/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= +golang.org/x/exp v0.0.0-20230213192124-5e25df0256eb h1:PaBZQdo+iSDyHT053FjUCgZQ/9uqVwPOcl7KSWhKn6w= +golang.org/x/exp v0.0.0-20230213192124-5e25df0256eb/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec h1:BkDtF2Ih9xZ7le9ndzTA7KJow28VbQW3odyk/8drmuI= -golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/poseidon/constants.go b/poseidon/constants.go index 22b4f8f..3d6dc87 100644 --- a/poseidon/constants.go +++ b/poseidon/constants.go @@ -1,1131 +1,1488 @@ package poseidon -var ALL_ROUND_CONSTANTS = []uint64{ - 0xb585f766f2144405, - 0x7746a55f43921ad7, - 0xb2fb0d31cee799b4, - 0x0f6760a4803427d7, - 0xe10d666650f4e012, - 0x8cae14cb07d09bf1, - 0xd438539c95f63e9f, - 0xef781c7ce35b4c3d, - 0xcdc4a239b0c44426, - 0x277fa208bf337bff, - 0xe17653a29da578a1, - 0xc54302f225db2c76, - 0x86287821f722c881, - 0x59cd1a8a41c18e55, - 0xc3b919ad495dc574, - 0xa484c4c5ef6a0781, - 0x308bbd23dc5416cc, - 0x6e4a40c18f30c09c, - 0x9a2eedb70d8f8cfa, - 0xe360c6e0ae486f38, - 0xd5c7718fbfc647fb, - 0xc35eae071903ff0b, - 0x849c2656969c4be7, - 0xc0572c8c08cbbbad, - 0xe9fa634a21de0082, - 0xf56f6d48959a600d, - 0xf7d713e806391165, - 0x8297132b32825daf, - 0xad6805e0e30b2c8a, - 0xac51d9f5fcf8535e, - 0x502ad7dc18c2ad87, - 0x57a1550c110b3041, - 0x66bbd30e6ce0e583, - 0x0da2abef589d644e, - 0xf061274fdb150d61, - 0x28b8ec3ae9c29633, - 0x92a756e67e2b9413, - 0x70e741ebfee96586, - 0x019d5ee2af82ec1c, - 0x6f6f2ed772466352, - 0x7cf416cfe7e14ca1, - 0x61df517b86a46439, - 0x85dc499b11d77b75, - 0x4b959b48b9c10733, - 0xe8be3e5da8043e57, - 0xf5c0bc1de6da8699, - 0x40b12cbf09ef74bf, - 0xa637093ecb2ad631, - 0x3cc3f892184df408, - 0x2e479dc157bf31bb, - 0x6f49de07a6234346, - 0x213ce7bede378d7b, - 0x5b0431345d4dea83, - 0xa2de45780344d6a1, - 0x7103aaf94a7bf308, - 0x5326fc0d97279301, - 0xa9ceb74fec024747, - 0x27f8ec88bb21b1a3, - 0xfceb4fda1ded0893, - 0xfac6ff1346a41675, - 0x7131aa45268d7d8c, - 0x9351036095630f9f, - 0xad535b24afc26bfb, - 0x4627f5c6993e44be, - 0x645cf794b8f1cc58, - 0x241c70ed0af61617, - 0xacb8e076647905f1, - 0x3737e9db4c4f474d, - 0xe7ea5e33e75fffb6, - 0x90dee49fc9bfc23a, - 0xd1b1edf76bc09c92, - 0x0b65481ba645c602, - 0x99ad1aab0814283b, - 0x438a7c91d416ca4d, - 0xb60de3bcc5ea751c, - 0xc99cab6aef6f58bc, - 0x69a5ed92a72ee4ff, - 0x5e7b329c1ed4ad71, - 0x5fc0ac0800144885, - 0x32db829239774eca, - 0x0ade699c5830f310, - 0x7cc5583b10415f21, - 0x85df9ed2e166d64f, - 0x6604df4fee32bcb1, - 0xeb84f608da56ef48, - 0xda608834c40e603d, - 0x8f97fe408061f183, - 0xa93f485c96f37b89, - 0x6704e8ee8f18d563, - 0xcee3e9ac1e072119, - 0x510d0e65e2b470c1, - 0xf6323f486b9038f0, - 0x0b508cdeffa5ceef, - 0xf2417089e4fb3cbd, - 0x60e75c2890d15730, - 0xa6217d8bf660f29c, - 0x7159cd30c3ac118e, - 0x839b4e8fafead540, - 0x0d3f3e5e82920adc, - 0x8f7d83bddee7bba8, - 0x780f2243ea071d06, - 0xeb915845f3de1634, - 0xd19e120d26b6f386, - 0x016ee53a7e5fecc6, - 0xcb5fd54e7933e477, - 0xacb8417879fd449f, - 0x9c22190be7f74732, - 0x5d693c1ba3ba3621, - 0xdcef0797c2b69ec7, - 0x3d639263da827b13, - 0xe273fd971bc8d0e7, - 0x418f02702d227ed5, - 0x8c25fda3b503038c, - 0x2cbaed4daec8c07c, - 0x5f58e6afcdd6ddc2, - 0x284650ac5e1b0eba, - 0x635b337ee819dab5, - 0x9f9a036ed4f2d49f, - 0xb93e260cae5c170e, - 0xb0a7eae879ddb76d, - 0xd0762cbc8ca6570c, - 0x34c6efb812b04bf5, - 0x40bf0ab5fa14c112, - 0xb6b570fc7c5740d3, - 0x5a27b9002de33454, - 0xb1a5b165b6d2b2d2, - 0x8722e0ace9d1be22, - 0x788ee3b37e5680fb, - 0x14a726661551e284, - 0x98b7672f9ef3b419, - 0xbb93ae776bb30e3a, - 0x28fd3b046380f850, - 0x30a4680593258387, - 0x337dc00c61bd9ce1, - 0xd5eca244c7a4ff1d, - 0x7762638264d279bd, - 0xc1e434bedeefd767, - 0x0299351a53b8ec22, - 0xb2d456e4ad251b80, - 0x3e9ed1fda49cea0b, - 0x2972a92ba450bed8, - 0x20216dd77be493de, - 0xadffe8cf28449ec6, - 0x1c4dbb1c4c27d243, - 0x15a16a8a8322d458, - 0x388a128b7fd9a609, - 0x2300e5d6baedf0fb, - 0x2f63aa8647e15104, - 0xf1c36ce86ecec269, - 0x27181125183970c9, - 0xe584029370dca96d, - 0x4d9bbc3e02f1cfb2, - 0xea35bc29692af6f8, - 0x18e21b4beabb4137, - 0x1e3b9fc625b554f4, - 0x25d64362697828fd, - 0x5a3f1bb1c53a9645, - 0xdb7f023869fb8d38, - 0xb462065911d4e1fc, - 0x49c24ae4437d8030, - 0xd793862c112b0566, - 0xaadd1106730d8feb, - 0xc43b6e0e97b0d568, - 0xe29024c18ee6fca2, - 0x5e50c27535b88c66, - 0x10383f20a4ff9a87, - 0x38e8ee9d71a45af8, - 0xdd5118375bf1a9b9, - 0x775005982d74d7f7, - 0x86ab99b4dde6c8b0, - 0xb1204f603f51c080, - 0xef61ac8470250ecf, - 0x1bbcd90f132c603f, - 0x0cd1dabd964db557, - 0x11a3ae5beb9d1ec9, - 0xf755bfeea585d11d, - 0xa3b83250268ea4d7, - 0x516306f4927c93af, - 0xddb4ac49c9efa1da, - 0x64bb6dec369d4418, - 0xf9cc95c22b4c1fcc, - 0x08d37f755f4ae9f6, - 0xeec49b613478675b, - 0xf143933aed25e0b0, - 0xe4c5dd8255dfc622, - 0xe7ad7756f193198e, - 0x92c2318b87fff9cb, - 0x739c25f8fd73596d, - 0x5636cac9f16dfed0, - 0xdd8f909a938e0172, - 0xc6401fe115063f5b, - 0x8ad97b33f1ac1455, - 0x0c49366bb25e8513, - 0x0784d3d2f1698309, - 0x530fb67ea1809a81, - 0x410492299bb01f49, - 0x139542347424b9ac, - 0x9cb0bd5ea1a1115e, - 0x02e3f615c38f49a1, - 0x985d4f4a9c5291ef, - 0x775b9feafdcd26e7, - 0x304265a6384f0f2d, - 0x593664c39773012c, - 0x4f0a2e5fb028f2ce, - 0xdd611f1000c17442, - 0xd8185f9adfea4fd0, - 0xef87139ca9a3ab1e, - 0x3ba71336c34ee133, - 0x7d3a455d56b70238, - 0x660d32e130182684, - 0x297a863f48cd1f43, - 0x90e0a736a751ebb7, - 0x549f80ce550c4fd3, - 0x0f73b2922f38bd64, - 0x16bf1f73fb7a9c3f, - 0x6d1f5a59005bec17, - 0x02ff876fa5ef97c4, - 0xc5cb72a2a51159b0, - 0x8470f39d2d5c900e, - 0x25abb3f1d39fcb76, - 0x23eb8cc9b372442f, - 0xd687ba55c64f6364, - 0xda8d9e90fd8ff158, - 0xe3cbdc7d2fe45ea7, - 0xb9a8c9b3aee52297, - 0xc0d28a5c10960bd3, - 0x45d7ac9b68f71a34, - 0xeeb76e397069e804, - 0x3d06c8bd1514e2d9, - 0x9c9c98207cb10767, - 0x65700b51aedfb5ef, - 0x911f451539869408, - 0x7ae6849fbc3a0ec6, - 0x3bb340eba06afe7e, - 0xb46e9d8b682ea65e, - 0x8dcf22f9a3b34356, - 0x77bdaeda586257a7, - 0xf19e400a5104d20d, - 0xc368a348e46d950f, - 0x9ef1cd60e679f284, - 0xe89cd854d5d01d33, - 0x5cd377dc8bb882a2, - 0xa7b0fb7883eee860, - 0x7684403ec392950d, - 0x5fa3f06f4fed3b52, - 0x8df57ac11bc04831, - 0x2db01efa1e1e1897, - 0x54846de4aadb9ca2, - 0xba6745385893c784, - 0x541d496344d2c75b, - 0xe909678474e687fe, - 0xdfe89923f6c9c2ff, - 0xece5a71e0cfedc75, - 0x5ff98fd5d51fe610, - 0x83e8941918964615, - 0x5922040b47f150c1, - 0xf97d750e3dd94521, - 0x5080d4c2b86f56d7, - 0xa7de115b56c78d70, - 0x6a9242ac87538194, - 0xf7856ef7f9173e44, - 0x2265fc92feb0dc09, - 0x17dfc8e4f7ba8a57, - 0x9001a64209f21db8, - 0x90004c1371b893c5, - 0xb932b7cf752e5545, - 0xa0b1df81b6fe59fc, - 0x8ef1dd26770af2c2, - 0x0541a4f9cfbeed35, - 0x9e61106178bfc530, - 0xb3767e80935d8af2, - 0x0098d5782065af06, - 0x31d191cd5c1466c7, - 0x410fefafa319ac9d, - 0xbdf8f242e316c4ab, - 0x9e8cd55b57637ed0, - 0xde122bebe9a39368, - 0x4d001fd58f002526, - 0xca6637000eb4a9f8, - 0x2f2339d624f91f78, - 0x6d1a7918c80df518, - 0xdf9a4939342308e9, - 0xebc2151ee6c8398c, - 0x03cc2ba8a1116515, - 0xd341d037e840cf83, - 0x387cb5d25af4afcc, - 0xbba2515f22909e87, - 0x7248fe7705f38e47, - 0x4d61e56a525d225a, - 0x262e963c8da05d3d, - 0x59e89b094d220ec2, - 0x055d5b52b78b9c5e, - 0x82b27eb33514ef99, - 0xd30094ca96b7ce7b, - 0xcf5cb381cd0a1535, - 0xfeed4db6919e5a7c, - 0x41703f53753be59f, - 0x5eeea940fcde8b6f, - 0x4cd1f1b175100206, - 0x4a20358574454ec0, - 0x1478d361dbbf9fac, - 0x6f02dc07d141875c, - 0x296a202ed8e556a2, - 0x2afd67999bf32ee5, - 0x7acfd96efa95491d, - 0x6798ba0c0abb2c6d, - 0x34c6f57b26c92122, - 0x5736e1bad206b5de, - 0x20057d2a0056521b, - 0x3dea5bd5d0578bd7, - 0x16e50d897d4634ac, - 0x29bff3ecb9b7a6e3, - 0x475cd3205a3bdcde, - 0x18a42105c31b7e88, - 0x023e7414af663068, - 0x15147108121967d7, - 0xe4a3dff1d7d6fef9, - 0x01a8d1a588085737, - 0x11b4c74eda62beef, - 0xe587cc0d69a73346, - 0x1ff7327017aa2a6e, - 0x594e29c42473d06b, - 0xf6f31db1899b12d5, - 0xc02ac5e47312d3ca, - 0xe70201e960cb78b8, - 0x6f90ff3b6a65f108, - 0x42747a7245e7fa84, - 0xd1f507e43ab749b2, - 0x1c86d265f15750cd, - 0x3996ce73dd832c1c, - 0x8e7fba02983224bd, - 0xba0dec7103255dd4, - 0x9e9cbd781628fc5b, - 0xdae8645996edd6a5, - 0xdebe0853b1a1d378, - 0xa49229d24d014343, - 0x7be5b9ffda905e1c, - 0xa3c95eaec244aa30, - 0x0230bca8f4df0544, - 0x4135c2bebfe148c6, - 0x166fc0cc438a3c72, - 0x3762b59a8ae83efa, - 0xe8928a4c89114750, - 0x2a440b51a4945ee5, - 0x80cefd2b7d99ff83, - 0xbb9879c6e61fd62a, - 0x6e7c8f1a84265034, - 0x164bb2de1bbeddc8, - 0xf3c12fe54d5c653b, - 0x40b9e922ed9771e2, - 0x551f5b0fbe7b1840, - 0x25032aa7c4cb1811, - 0xaaed34074b164346, - 0x8ffd96bbf9c9c81d, - 0x70fc91eb5937085c, - 0x7f795e2a5f915440, - 0x4543d9df5476d3cb, - 0xf172d73e004fc90d, - 0xdfd1c4febcc81238, - 0xbc8dfb627fe558fc, +import ( + "github.com/consensys/gnark/frontend" + "github.com/succinctlabs/gnark-plonky2-verifier/field" +) + +var ALL_ROUND_CONSTANTS = []field.F{ + field.NewFieldConst(0xb585f766f2144405), + field.NewFieldConst(0x7746a55f43921ad7), + field.NewFieldConst(0xb2fb0d31cee799b4), + field.NewFieldConst(0x0f6760a4803427d7), + field.NewFieldConst(0xe10d666650f4e012), + field.NewFieldConst(0x8cae14cb07d09bf1), + field.NewFieldConst(0xd438539c95f63e9f), + field.NewFieldConst(0xef781c7ce35b4c3d), + field.NewFieldConst(0xcdc4a239b0c44426), + field.NewFieldConst(0x277fa208bf337bff), + field.NewFieldConst(0xe17653a29da578a1), + field.NewFieldConst(0xc54302f225db2c76), + field.NewFieldConst(0x86287821f722c881), + field.NewFieldConst(0x59cd1a8a41c18e55), + field.NewFieldConst(0xc3b919ad495dc574), + field.NewFieldConst(0xa484c4c5ef6a0781), + field.NewFieldConst(0x308bbd23dc5416cc), + field.NewFieldConst(0x6e4a40c18f30c09c), + field.NewFieldConst(0x9a2eedb70d8f8cfa), + field.NewFieldConst(0xe360c6e0ae486f38), + field.NewFieldConst(0xd5c7718fbfc647fb), + field.NewFieldConst(0xc35eae071903ff0b), + field.NewFieldConst(0x849c2656969c4be7), + field.NewFieldConst(0xc0572c8c08cbbbad), + field.NewFieldConst(0xe9fa634a21de0082), + field.NewFieldConst(0xf56f6d48959a600d), + field.NewFieldConst(0xf7d713e806391165), + field.NewFieldConst(0x8297132b32825daf), + field.NewFieldConst(0xad6805e0e30b2c8a), + field.NewFieldConst(0xac51d9f5fcf8535e), + field.NewFieldConst(0x502ad7dc18c2ad87), + field.NewFieldConst(0x57a1550c110b3041), + field.NewFieldConst(0x66bbd30e6ce0e583), + field.NewFieldConst(0x0da2abef589d644e), + field.NewFieldConst(0xf061274fdb150d61), + field.NewFieldConst(0x28b8ec3ae9c29633), + field.NewFieldConst(0x92a756e67e2b9413), + field.NewFieldConst(0x70e741ebfee96586), + field.NewFieldConst(0x019d5ee2af82ec1c), + field.NewFieldConst(0x6f6f2ed772466352), + field.NewFieldConst(0x7cf416cfe7e14ca1), + field.NewFieldConst(0x61df517b86a46439), + field.NewFieldConst(0x85dc499b11d77b75), + field.NewFieldConst(0x4b959b48b9c10733), + field.NewFieldConst(0xe8be3e5da8043e57), + field.NewFieldConst(0xf5c0bc1de6da8699), + field.NewFieldConst(0x40b12cbf09ef74bf), + field.NewFieldConst(0xa637093ecb2ad631), + field.NewFieldConst(0x3cc3f892184df408), + field.NewFieldConst(0x2e479dc157bf31bb), + field.NewFieldConst(0x6f49de07a6234346), + field.NewFieldConst(0x213ce7bede378d7b), + field.NewFieldConst(0x5b0431345d4dea83), + field.NewFieldConst(0xa2de45780344d6a1), + field.NewFieldConst(0x7103aaf94a7bf308), + field.NewFieldConst(0x5326fc0d97279301), + field.NewFieldConst(0xa9ceb74fec024747), + field.NewFieldConst(0x27f8ec88bb21b1a3), + field.NewFieldConst(0xfceb4fda1ded0893), + field.NewFieldConst(0xfac6ff1346a41675), + field.NewFieldConst(0x7131aa45268d7d8c), + field.NewFieldConst(0x9351036095630f9f), + field.NewFieldConst(0xad535b24afc26bfb), + field.NewFieldConst(0x4627f5c6993e44be), + field.NewFieldConst(0x645cf794b8f1cc58), + field.NewFieldConst(0x241c70ed0af61617), + field.NewFieldConst(0xacb8e076647905f1), + field.NewFieldConst(0x3737e9db4c4f474d), + field.NewFieldConst(0xe7ea5e33e75fffb6), + field.NewFieldConst(0x90dee49fc9bfc23a), + field.NewFieldConst(0xd1b1edf76bc09c92), + field.NewFieldConst(0x0b65481ba645c602), + field.NewFieldConst(0x99ad1aab0814283b), + field.NewFieldConst(0x438a7c91d416ca4d), + field.NewFieldConst(0xb60de3bcc5ea751c), + field.NewFieldConst(0xc99cab6aef6f58bc), + field.NewFieldConst(0x69a5ed92a72ee4ff), + field.NewFieldConst(0x5e7b329c1ed4ad71), + field.NewFieldConst(0x5fc0ac0800144885), + field.NewFieldConst(0x32db829239774eca), + field.NewFieldConst(0x0ade699c5830f310), + field.NewFieldConst(0x7cc5583b10415f21), + field.NewFieldConst(0x85df9ed2e166d64f), + field.NewFieldConst(0x6604df4fee32bcb1), + field.NewFieldConst(0xeb84f608da56ef48), + field.NewFieldConst(0xda608834c40e603d), + field.NewFieldConst(0x8f97fe408061f183), + field.NewFieldConst(0xa93f485c96f37b89), + field.NewFieldConst(0x6704e8ee8f18d563), + field.NewFieldConst(0xcee3e9ac1e072119), + field.NewFieldConst(0x510d0e65e2b470c1), + field.NewFieldConst(0xf6323f486b9038f0), + field.NewFieldConst(0x0b508cdeffa5ceef), + field.NewFieldConst(0xf2417089e4fb3cbd), + field.NewFieldConst(0x60e75c2890d15730), + field.NewFieldConst(0xa6217d8bf660f29c), + field.NewFieldConst(0x7159cd30c3ac118e), + field.NewFieldConst(0x839b4e8fafead540), + field.NewFieldConst(0x0d3f3e5e82920adc), + field.NewFieldConst(0x8f7d83bddee7bba8), + field.NewFieldConst(0x780f2243ea071d06), + field.NewFieldConst(0xeb915845f3de1634), + field.NewFieldConst(0xd19e120d26b6f386), + field.NewFieldConst(0x016ee53a7e5fecc6), + field.NewFieldConst(0xcb5fd54e7933e477), + field.NewFieldConst(0xacb8417879fd449f), + field.NewFieldConst(0x9c22190be7f74732), + field.NewFieldConst(0x5d693c1ba3ba3621), + field.NewFieldConst(0xdcef0797c2b69ec7), + field.NewFieldConst(0x3d639263da827b13), + field.NewFieldConst(0xe273fd971bc8d0e7), + field.NewFieldConst(0x418f02702d227ed5), + field.NewFieldConst(0x8c25fda3b503038c), + field.NewFieldConst(0x2cbaed4daec8c07c), + field.NewFieldConst(0x5f58e6afcdd6ddc2), + field.NewFieldConst(0x284650ac5e1b0eba), + field.NewFieldConst(0x635b337ee819dab5), + field.NewFieldConst(0x9f9a036ed4f2d49f), + field.NewFieldConst(0xb93e260cae5c170e), + field.NewFieldConst(0xb0a7eae879ddb76d), + field.NewFieldConst(0xd0762cbc8ca6570c), + field.NewFieldConst(0x34c6efb812b04bf5), + field.NewFieldConst(0x40bf0ab5fa14c112), + field.NewFieldConst(0xb6b570fc7c5740d3), + field.NewFieldConst(0x5a27b9002de33454), + field.NewFieldConst(0xb1a5b165b6d2b2d2), + field.NewFieldConst(0x8722e0ace9d1be22), + field.NewFieldConst(0x788ee3b37e5680fb), + field.NewFieldConst(0x14a726661551e284), + field.NewFieldConst(0x98b7672f9ef3b419), + field.NewFieldConst(0xbb93ae776bb30e3a), + field.NewFieldConst(0x28fd3b046380f850), + field.NewFieldConst(0x30a4680593258387), + field.NewFieldConst(0x337dc00c61bd9ce1), + field.NewFieldConst(0xd5eca244c7a4ff1d), + field.NewFieldConst(0x7762638264d279bd), + field.NewFieldConst(0xc1e434bedeefd767), + field.NewFieldConst(0x0299351a53b8ec22), + field.NewFieldConst(0xb2d456e4ad251b80), + field.NewFieldConst(0x3e9ed1fda49cea0b), + field.NewFieldConst(0x2972a92ba450bed8), + field.NewFieldConst(0x20216dd77be493de), + field.NewFieldConst(0xadffe8cf28449ec6), + field.NewFieldConst(0x1c4dbb1c4c27d243), + field.NewFieldConst(0x15a16a8a8322d458), + field.NewFieldConst(0x388a128b7fd9a609), + field.NewFieldConst(0x2300e5d6baedf0fb), + field.NewFieldConst(0x2f63aa8647e15104), + field.NewFieldConst(0xf1c36ce86ecec269), + field.NewFieldConst(0x27181125183970c9), + field.NewFieldConst(0xe584029370dca96d), + field.NewFieldConst(0x4d9bbc3e02f1cfb2), + field.NewFieldConst(0xea35bc29692af6f8), + field.NewFieldConst(0x18e21b4beabb4137), + field.NewFieldConst(0x1e3b9fc625b554f4), + field.NewFieldConst(0x25d64362697828fd), + field.NewFieldConst(0x5a3f1bb1c53a9645), + field.NewFieldConst(0xdb7f023869fb8d38), + field.NewFieldConst(0xb462065911d4e1fc), + field.NewFieldConst(0x49c24ae4437d8030), + field.NewFieldConst(0xd793862c112b0566), + field.NewFieldConst(0xaadd1106730d8feb), + field.NewFieldConst(0xc43b6e0e97b0d568), + field.NewFieldConst(0xe29024c18ee6fca2), + field.NewFieldConst(0x5e50c27535b88c66), + field.NewFieldConst(0x10383f20a4ff9a87), + field.NewFieldConst(0x38e8ee9d71a45af8), + field.NewFieldConst(0xdd5118375bf1a9b9), + field.NewFieldConst(0x775005982d74d7f7), + field.NewFieldConst(0x86ab99b4dde6c8b0), + field.NewFieldConst(0xb1204f603f51c080), + field.NewFieldConst(0xef61ac8470250ecf), + field.NewFieldConst(0x1bbcd90f132c603f), + field.NewFieldConst(0x0cd1dabd964db557), + field.NewFieldConst(0x11a3ae5beb9d1ec9), + field.NewFieldConst(0xf755bfeea585d11d), + field.NewFieldConst(0xa3b83250268ea4d7), + field.NewFieldConst(0x516306f4927c93af), + field.NewFieldConst(0xddb4ac49c9efa1da), + field.NewFieldConst(0x64bb6dec369d4418), + field.NewFieldConst(0xf9cc95c22b4c1fcc), + field.NewFieldConst(0x08d37f755f4ae9f6), + field.NewFieldConst(0xeec49b613478675b), + field.NewFieldConst(0xf143933aed25e0b0), + field.NewFieldConst(0xe4c5dd8255dfc622), + field.NewFieldConst(0xe7ad7756f193198e), + field.NewFieldConst(0x92c2318b87fff9cb), + field.NewFieldConst(0x739c25f8fd73596d), + field.NewFieldConst(0x5636cac9f16dfed0), + field.NewFieldConst(0xdd8f909a938e0172), + field.NewFieldConst(0xc6401fe115063f5b), + field.NewFieldConst(0x8ad97b33f1ac1455), + field.NewFieldConst(0x0c49366bb25e8513), + field.NewFieldConst(0x0784d3d2f1698309), + field.NewFieldConst(0x530fb67ea1809a81), + field.NewFieldConst(0x410492299bb01f49), + field.NewFieldConst(0x139542347424b9ac), + field.NewFieldConst(0x9cb0bd5ea1a1115e), + field.NewFieldConst(0x02e3f615c38f49a1), + field.NewFieldConst(0x985d4f4a9c5291ef), + field.NewFieldConst(0x775b9feafdcd26e7), + field.NewFieldConst(0x304265a6384f0f2d), + field.NewFieldConst(0x593664c39773012c), + field.NewFieldConst(0x4f0a2e5fb028f2ce), + field.NewFieldConst(0xdd611f1000c17442), + field.NewFieldConst(0xd8185f9adfea4fd0), + field.NewFieldConst(0xef87139ca9a3ab1e), + field.NewFieldConst(0x3ba71336c34ee133), + field.NewFieldConst(0x7d3a455d56b70238), + field.NewFieldConst(0x660d32e130182684), + field.NewFieldConst(0x297a863f48cd1f43), + field.NewFieldConst(0x90e0a736a751ebb7), + field.NewFieldConst(0x549f80ce550c4fd3), + field.NewFieldConst(0x0f73b2922f38bd64), + field.NewFieldConst(0x16bf1f73fb7a9c3f), + field.NewFieldConst(0x6d1f5a59005bec17), + field.NewFieldConst(0x02ff876fa5ef97c4), + field.NewFieldConst(0xc5cb72a2a51159b0), + field.NewFieldConst(0x8470f39d2d5c900e), + field.NewFieldConst(0x25abb3f1d39fcb76), + field.NewFieldConst(0x23eb8cc9b372442f), + field.NewFieldConst(0xd687ba55c64f6364), + field.NewFieldConst(0xda8d9e90fd8ff158), + field.NewFieldConst(0xe3cbdc7d2fe45ea7), + field.NewFieldConst(0xb9a8c9b3aee52297), + field.NewFieldConst(0xc0d28a5c10960bd3), + field.NewFieldConst(0x45d7ac9b68f71a34), + field.NewFieldConst(0xeeb76e397069e804), + field.NewFieldConst(0x3d06c8bd1514e2d9), + field.NewFieldConst(0x9c9c98207cb10767), + field.NewFieldConst(0x65700b51aedfb5ef), + field.NewFieldConst(0x911f451539869408), + field.NewFieldConst(0x7ae6849fbc3a0ec6), + field.NewFieldConst(0x3bb340eba06afe7e), + field.NewFieldConst(0xb46e9d8b682ea65e), + field.NewFieldConst(0x8dcf22f9a3b34356), + field.NewFieldConst(0x77bdaeda586257a7), + field.NewFieldConst(0xf19e400a5104d20d), + field.NewFieldConst(0xc368a348e46d950f), + field.NewFieldConst(0x9ef1cd60e679f284), + field.NewFieldConst(0xe89cd854d5d01d33), + field.NewFieldConst(0x5cd377dc8bb882a2), + field.NewFieldConst(0xa7b0fb7883eee860), + field.NewFieldConst(0x7684403ec392950d), + field.NewFieldConst(0x5fa3f06f4fed3b52), + field.NewFieldConst(0x8df57ac11bc04831), + field.NewFieldConst(0x2db01efa1e1e1897), + field.NewFieldConst(0x54846de4aadb9ca2), + field.NewFieldConst(0xba6745385893c784), + field.NewFieldConst(0x541d496344d2c75b), + field.NewFieldConst(0xe909678474e687fe), + field.NewFieldConst(0xdfe89923f6c9c2ff), + field.NewFieldConst(0xece5a71e0cfedc75), + field.NewFieldConst(0x5ff98fd5d51fe610), + field.NewFieldConst(0x83e8941918964615), + field.NewFieldConst(0x5922040b47f150c1), + field.NewFieldConst(0xf97d750e3dd94521), + field.NewFieldConst(0x5080d4c2b86f56d7), + field.NewFieldConst(0xa7de115b56c78d70), + field.NewFieldConst(0x6a9242ac87538194), + field.NewFieldConst(0xf7856ef7f9173e44), + field.NewFieldConst(0x2265fc92feb0dc09), + field.NewFieldConst(0x17dfc8e4f7ba8a57), + field.NewFieldConst(0x9001a64209f21db8), + field.NewFieldConst(0x90004c1371b893c5), + field.NewFieldConst(0xb932b7cf752e5545), + field.NewFieldConst(0xa0b1df81b6fe59fc), + field.NewFieldConst(0x8ef1dd26770af2c2), + field.NewFieldConst(0x0541a4f9cfbeed35), + field.NewFieldConst(0x9e61106178bfc530), + field.NewFieldConst(0xb3767e80935d8af2), + field.NewFieldConst(0x0098d5782065af06), + field.NewFieldConst(0x31d191cd5c1466c7), + field.NewFieldConst(0x410fefafa319ac9d), + field.NewFieldConst(0xbdf8f242e316c4ab), + field.NewFieldConst(0x9e8cd55b57637ed0), + field.NewFieldConst(0xde122bebe9a39368), + field.NewFieldConst(0x4d001fd58f002526), + field.NewFieldConst(0xca6637000eb4a9f8), + field.NewFieldConst(0x2f2339d624f91f78), + field.NewFieldConst(0x6d1a7918c80df518), + field.NewFieldConst(0xdf9a4939342308e9), + field.NewFieldConst(0xebc2151ee6c8398c), + field.NewFieldConst(0x03cc2ba8a1116515), + field.NewFieldConst(0xd341d037e840cf83), + field.NewFieldConst(0x387cb5d25af4afcc), + field.NewFieldConst(0xbba2515f22909e87), + field.NewFieldConst(0x7248fe7705f38e47), + field.NewFieldConst(0x4d61e56a525d225a), + field.NewFieldConst(0x262e963c8da05d3d), + field.NewFieldConst(0x59e89b094d220ec2), + field.NewFieldConst(0x055d5b52b78b9c5e), + field.NewFieldConst(0x82b27eb33514ef99), + field.NewFieldConst(0xd30094ca96b7ce7b), + field.NewFieldConst(0xcf5cb381cd0a1535), + field.NewFieldConst(0xfeed4db6919e5a7c), + field.NewFieldConst(0x41703f53753be59f), + field.NewFieldConst(0x5eeea940fcde8b6f), + field.NewFieldConst(0x4cd1f1b175100206), + field.NewFieldConst(0x4a20358574454ec0), + field.NewFieldConst(0x1478d361dbbf9fac), + field.NewFieldConst(0x6f02dc07d141875c), + field.NewFieldConst(0x296a202ed8e556a2), + field.NewFieldConst(0x2afd67999bf32ee5), + field.NewFieldConst(0x7acfd96efa95491d), + field.NewFieldConst(0x6798ba0c0abb2c6d), + field.NewFieldConst(0x34c6f57b26c92122), + field.NewFieldConst(0x5736e1bad206b5de), + field.NewFieldConst(0x20057d2a0056521b), + field.NewFieldConst(0x3dea5bd5d0578bd7), + field.NewFieldConst(0x16e50d897d4634ac), + field.NewFieldConst(0x29bff3ecb9b7a6e3), + field.NewFieldConst(0x475cd3205a3bdcde), + field.NewFieldConst(0x18a42105c31b7e88), + field.NewFieldConst(0x023e7414af663068), + field.NewFieldConst(0x15147108121967d7), + field.NewFieldConst(0xe4a3dff1d7d6fef9), + field.NewFieldConst(0x01a8d1a588085737), + field.NewFieldConst(0x11b4c74eda62beef), + field.NewFieldConst(0xe587cc0d69a73346), + field.NewFieldConst(0x1ff7327017aa2a6e), + field.NewFieldConst(0x594e29c42473d06b), + field.NewFieldConst(0xf6f31db1899b12d5), + field.NewFieldConst(0xc02ac5e47312d3ca), + field.NewFieldConst(0xe70201e960cb78b8), + field.NewFieldConst(0x6f90ff3b6a65f108), + field.NewFieldConst(0x42747a7245e7fa84), + field.NewFieldConst(0xd1f507e43ab749b2), + field.NewFieldConst(0x1c86d265f15750cd), + field.NewFieldConst(0x3996ce73dd832c1c), + field.NewFieldConst(0x8e7fba02983224bd), + field.NewFieldConst(0xba0dec7103255dd4), + field.NewFieldConst(0x9e9cbd781628fc5b), + field.NewFieldConst(0xdae8645996edd6a5), + field.NewFieldConst(0xdebe0853b1a1d378), + field.NewFieldConst(0xa49229d24d014343), + field.NewFieldConst(0x7be5b9ffda905e1c), + field.NewFieldConst(0xa3c95eaec244aa30), + field.NewFieldConst(0x0230bca8f4df0544), + field.NewFieldConst(0x4135c2bebfe148c6), + field.NewFieldConst(0x166fc0cc438a3c72), + field.NewFieldConst(0x3762b59a8ae83efa), + field.NewFieldConst(0xe8928a4c89114750), + field.NewFieldConst(0x2a440b51a4945ee5), + field.NewFieldConst(0x80cefd2b7d99ff83), + field.NewFieldConst(0xbb9879c6e61fd62a), + field.NewFieldConst(0x6e7c8f1a84265034), + field.NewFieldConst(0x164bb2de1bbeddc8), + field.NewFieldConst(0xf3c12fe54d5c653b), + field.NewFieldConst(0x40b9e922ed9771e2), + field.NewFieldConst(0x551f5b0fbe7b1840), + field.NewFieldConst(0x25032aa7c4cb1811), + field.NewFieldConst(0xaaed34074b164346), + field.NewFieldConst(0x8ffd96bbf9c9c81d), + field.NewFieldConst(0x70fc91eb5937085c), + field.NewFieldConst(0x7f795e2a5f915440), + field.NewFieldConst(0x4543d9df5476d3cb), + field.NewFieldConst(0xf172d73e004fc90d), + field.NewFieldConst(0xdfd1c4febcc81238), + field.NewFieldConst(0xbc8dfb627fe558fc), +} + +var MDS_MATRIX_CIRC = []field.F{ + field.NewFieldConst(17), + field.NewFieldConst(15), + field.NewFieldConst(41), + field.NewFieldConst(16), + field.NewFieldConst(2), + field.NewFieldConst(28), + field.NewFieldConst(13), + field.NewFieldConst(13), + field.NewFieldConst(39), + field.NewFieldConst(18), + field.NewFieldConst(34), + field.NewFieldConst(20), } -var MDS_MATRIX_CIRC = []uint64{17, 15, 41, 16, 2, 28, 13, 13, 39, 18, 34, 20} -var MDS_MATRIX_DIAG = []uint64{8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +var MDS_MATRIX_CIRC_VARS = []frontend.Variable{ + frontend.Variable(17), + frontend.Variable(15), + frontend.Variable(41), + frontend.Variable(16), + frontend.Variable(2), + frontend.Variable(28), + frontend.Variable(13), + frontend.Variable(13), + frontend.Variable(39), + frontend.Variable(18), + frontend.Variable(34), + frontend.Variable(20), +} + +var MDS_MATRIX_DIAG = []field.F{ + field.NewFieldConst(8), + field.ZERO_F, + field.ZERO_F, + field.ZERO_F, + field.ZERO_F, + field.ZERO_F, + field.ZERO_F, + field.ZERO_F, + field.ZERO_F, + field.ZERO_F, + field.ZERO_F, + field.ZERO_F, +} + +var ZERO_VAR = frontend.Variable(0) + +var MDS_MATRIX_DIAG_VARS = []frontend.Variable{ + frontend.Variable(8), + ZERO_VAR, + ZERO_VAR, + ZERO_VAR, + ZERO_VAR, + ZERO_VAR, + ZERO_VAR, + ZERO_VAR, + ZERO_VAR, + ZERO_VAR, + ZERO_VAR, + ZERO_VAR, +} + +var MDS0TO0 = field.NewFieldConst(25) + +var MDS0TO0_VAR = frontend.Variable(25) -var FAST_PARTIAL_FIRST_ROUND_CONSTANT = []uint64{ - 0x3cc3f892184df408, - 0xe993fd841e7e97f1, - 0xf2831d3575f0f3af, - 0xd2500e0a350994ca, - 0xc5571f35d7288633, - 0x91d89c5184109a02, - 0xf37f925d04e5667b, - 0x2d6e448371955a69, - 0x740ef19ce01398a1, - 0x694d24c0752fdf45, - 0x60936af96ee2f148, - 0xc33448feadc78f0c, +var FAST_PARTIAL_FIRST_ROUND_CONSTANT = []field.F{ + field.NewFieldConst(0x3cc3f892184df408), + field.NewFieldConst(0xe993fd841e7e97f1), + field.NewFieldConst(0xf2831d3575f0f3af), + field.NewFieldConst(0xd2500e0a350994ca), + field.NewFieldConst(0xc5571f35d7288633), + field.NewFieldConst(0x91d89c5184109a02), + field.NewFieldConst(0xf37f925d04e5667b), + field.NewFieldConst(0x2d6e448371955a69), + field.NewFieldConst(0x740ef19ce01398a1), + field.NewFieldConst(0x694d24c0752fdf45), + field.NewFieldConst(0x60936af96ee2f148), + field.NewFieldConst(0xc33448feadc78f0c), } -var FAST_PARTIAL_ROUND_CONSTANTS = []uint64{ - 0x74cb2e819ae421ab, - 0xd2559d2370e7f663, - 0x62bf78acf843d17c, - 0xd5ab7b67e14d1fb4, - 0xb9fe2ae6e0969bdc, - 0xe33fdf79f92a10e8, - 0x0ea2bb4c2b25989b, - 0xca9121fbf9d38f06, - 0xbdd9b0aa81f58fa4, - 0x83079fa4ecf20d7e, - 0x650b838edfcc4ad3, - 0x77180c88583c76ac, - 0xaf8c20753143a180, - 0xb8ccfe9989a39175, - 0x954a1729f60cc9c5, - 0xdeb5b550c4dca53b, - 0xf01bb0b00f77011e, - 0xa1ebb404b676afd9, - 0x860b6e1597a0173e, - 0x308bb65a036acbce, - 0x1aca78f31c97c876, - 0x0, +var FAST_PARTIAL_ROUND_CONSTANTS = []field.F{ + field.NewFieldConst(0x74cb2e819ae421ab), + field.NewFieldConst(0xd2559d2370e7f663), + field.NewFieldConst(0x62bf78acf843d17c), + field.NewFieldConst(0xd5ab7b67e14d1fb4), + field.NewFieldConst(0xb9fe2ae6e0969bdc), + field.NewFieldConst(0xe33fdf79f92a10e8), + field.NewFieldConst(0x0ea2bb4c2b25989b), + field.NewFieldConst(0xca9121fbf9d38f06), + field.NewFieldConst(0xbdd9b0aa81f58fa4), + field.NewFieldConst(0x83079fa4ecf20d7e), + field.NewFieldConst(0x650b838edfcc4ad3), + field.NewFieldConst(0x77180c88583c76ac), + field.NewFieldConst(0xaf8c20753143a180), + field.NewFieldConst(0xb8ccfe9989a39175), + field.NewFieldConst(0x954a1729f60cc9c5), + field.NewFieldConst(0xdeb5b550c4dca53b), + field.NewFieldConst(0xf01bb0b00f77011e), + field.NewFieldConst(0xa1ebb404b676afd9), + field.NewFieldConst(0x860b6e1597a0173e), + field.NewFieldConst(0x308bb65a036acbce), + field.NewFieldConst(0x1aca78f31c97c876), + field.NewFieldConst(0x0), +} + +var FAST_PARTIAL_ROUND_VS = [N_PARTIAL_ROUNDS][11]field.F{ + { + field.NewFieldConst(0x94877900674181c3), + field.NewFieldConst(0xc6c67cc37a2a2bbd), + field.NewFieldConst(0xd667c2055387940f), + field.NewFieldConst(0x0ba63a63e94b5ff0), + field.NewFieldConst(0x99460cc41b8f079f), + field.NewFieldConst(0x7ff02375ed524bb3), + field.NewFieldConst(0xea0870b47a8caf0e), + field.NewFieldConst(0xabcad82633b7bc9d), + field.NewFieldConst(0x3b8d135261052241), + field.NewFieldConst(0xfb4515f5e5b0d539), + field.NewFieldConst(0x3ee8011c2b37f77c), + }, + { + field.NewFieldConst(0x0adef3740e71c726), + field.NewFieldConst(0xa37bf67c6f986559), + field.NewFieldConst(0xc6b16f7ed4fa1b00), + field.NewFieldConst(0x6a065da88d8bfc3c), + field.NewFieldConst(0x4cabc0916844b46f), + field.NewFieldConst(0x407faac0f02e78d1), + field.NewFieldConst(0x07a786d9cf0852cf), + field.NewFieldConst(0x42433fb6949a629a), + field.NewFieldConst(0x891682a147ce43b0), + field.NewFieldConst(0x26cfd58e7b003b55), + field.NewFieldConst(0x2bbf0ed7b657acb3), + }, + { + field.NewFieldConst(0x481ac7746b159c67), + field.NewFieldConst(0xe367de32f108e278), + field.NewFieldConst(0x73f260087ad28bec), + field.NewFieldConst(0x5cfc82216bc1bdca), + field.NewFieldConst(0xcaccc870a2663a0e), + field.NewFieldConst(0xdb69cd7b4298c45d), + field.NewFieldConst(0x7bc9e0c57243e62d), + field.NewFieldConst(0x3cc51c5d368693ae), + field.NewFieldConst(0x366b4e8cc068895b), + field.NewFieldConst(0x2bd18715cdabbca4), + field.NewFieldConst(0xa752061c4f33b8cf), + }, + { + field.NewFieldConst(0xb22d2432b72d5098), + field.NewFieldConst(0x9e18a487f44d2fe4), + field.NewFieldConst(0x4b39e14ce22abd3c), + field.NewFieldConst(0x9e77fde2eb315e0d), + field.NewFieldConst(0xca5e0385fe67014d), + field.NewFieldConst(0x0c2cb99bf1b6bddb), + field.NewFieldConst(0x99ec1cd2a4460bfe), + field.NewFieldConst(0x8577a815a2ff843f), + field.NewFieldConst(0x7d80a6b4fd6518a5), + field.NewFieldConst(0xeb6c67123eab62cb), + field.NewFieldConst(0x8f7851650eca21a5), + }, + { + field.NewFieldConst(0x11ba9a1b81718c2a), + field.NewFieldConst(0x9f7d798a3323410c), + field.NewFieldConst(0xa821855c8c1cf5e5), + field.NewFieldConst(0x535e8d6fac0031b2), + field.NewFieldConst(0x404e7c751b634320), + field.NewFieldConst(0xa729353f6e55d354), + field.NewFieldConst(0x4db97d92e58bb831), + field.NewFieldConst(0xb53926c27897bf7d), + field.NewFieldConst(0x965040d52fe115c5), + field.NewFieldConst(0x9565fa41ebd31fd7), + field.NewFieldConst(0xaae4438c877ea8f4), + }, + { + field.NewFieldConst(0x37f4e36af6073c6e), + field.NewFieldConst(0x4edc0918210800e9), + field.NewFieldConst(0xc44998e99eae4188), + field.NewFieldConst(0x9f4310d05d068338), + field.NewFieldConst(0x9ec7fe4350680f29), + field.NewFieldConst(0xc5b2c1fdc0b50874), + field.NewFieldConst(0xa01920c5ef8b2ebe), + field.NewFieldConst(0x59fa6f8bd91d58ba), + field.NewFieldConst(0x8bfc9eb89b515a82), + field.NewFieldConst(0xbe86a7a2555ae775), + field.NewFieldConst(0xcbb8bbaa3810babf), + }, + { + field.NewFieldConst(0x577f9a9e7ee3f9c2), + field.NewFieldConst(0x88c522b949ace7b1), + field.NewFieldConst(0x82f07007c8b72106), + field.NewFieldConst(0x8283d37c6675b50e), + field.NewFieldConst(0x98b074d9bbac1123), + field.NewFieldConst(0x75c56fb7758317c1), + field.NewFieldConst(0xfed24e206052bc72), + field.NewFieldConst(0x26d7c3d1bc07dae5), + field.NewFieldConst(0xf88c5e441e28dbb4), + field.NewFieldConst(0x4fe27f9f96615270), + field.NewFieldConst(0x514d4ba49c2b14fe), + }, + { + field.NewFieldConst(0xf02a3ac068ee110b), + field.NewFieldConst(0x0a3630dafb8ae2d7), + field.NewFieldConst(0xce0dc874eaf9b55c), + field.NewFieldConst(0x9a95f6cff5b55c7e), + field.NewFieldConst(0x626d76abfed00c7b), + field.NewFieldConst(0xa0c1cf1251c204ad), + field.NewFieldConst(0xdaebd3006321052c), + field.NewFieldConst(0x3d4bd48b625a8065), + field.NewFieldConst(0x7f1e584e071f6ed2), + field.NewFieldConst(0x720574f0501caed3), + field.NewFieldConst(0xe3260ba93d23540a), + }, + { + field.NewFieldConst(0xab1cbd41d8c1e335), + field.NewFieldConst(0x9322ed4c0bc2df01), + field.NewFieldConst(0x51c3c0983d4284e5), + field.NewFieldConst(0x94178e291145c231), + field.NewFieldConst(0xfd0f1a973d6b2085), + field.NewFieldConst(0xd427ad96e2b39719), + field.NewFieldConst(0x8a52437fecaac06b), + field.NewFieldConst(0xdc20ee4b8c4c9a80), + field.NewFieldConst(0xa2c98e9549da2100), + field.NewFieldConst(0x1603fe12613db5b6), + field.NewFieldConst(0x0e174929433c5505), + }, + { + field.NewFieldConst(0x3d4eab2b8ef5f796), + field.NewFieldConst(0xcfff421583896e22), + field.NewFieldConst(0x4143cb32d39ac3d9), + field.NewFieldConst(0x22365051b78a5b65), + field.NewFieldConst(0x6f7fd010d027c9b6), + field.NewFieldConst(0xd9dd36fba77522ab), + field.NewFieldConst(0xa44cf1cb33e37165), + field.NewFieldConst(0x3fc83d3038c86417), + field.NewFieldConst(0xc4588d418e88d270), + field.NewFieldConst(0xce1320f10ab80fe2), + field.NewFieldConst(0xdb5eadbbec18de5d), + }, + { + field.NewFieldConst(0x1183dfce7c454afd), + field.NewFieldConst(0x21cea4aa3d3ed949), + field.NewFieldConst(0x0fce6f70303f2304), + field.NewFieldConst(0x19557d34b55551be), + field.NewFieldConst(0x4c56f689afc5bbc9), + field.NewFieldConst(0xa1e920844334f944), + field.NewFieldConst(0xbad66d423d2ec861), + field.NewFieldConst(0xf318c785dc9e0479), + field.NewFieldConst(0x99e2032e765ddd81), + field.NewFieldConst(0x400ccc9906d66f45), + field.NewFieldConst(0xe1197454db2e0dd9), + }, + { + field.NewFieldConst(0x84d1ecc4d53d2ff1), + field.NewFieldConst(0xd8af8b9ceb4e11b6), + field.NewFieldConst(0x335856bb527b52f4), + field.NewFieldConst(0xc756f17fb59be595), + field.NewFieldConst(0xc0654e4ea5553a78), + field.NewFieldConst(0x9e9a46b61f2ea942), + field.NewFieldConst(0x14fc8b5b3b809127), + field.NewFieldConst(0xd7009f0f103be413), + field.NewFieldConst(0x3e0ee7b7a9fb4601), + field.NewFieldConst(0xa74e888922085ed7), + field.NewFieldConst(0xe80a7cde3d4ac526), + }, + { + field.NewFieldConst(0x238aa6daa612186d), + field.NewFieldConst(0x9137a5c630bad4b4), + field.NewFieldConst(0xc7db3817870c5eda), + field.NewFieldConst(0x217e4f04e5718dc9), + field.NewFieldConst(0xcae814e2817bd99d), + field.NewFieldConst(0xe3292e7ab770a8ba), + field.NewFieldConst(0x7bb36ef70b6b9482), + field.NewFieldConst(0x3c7835fb85bca2d3), + field.NewFieldConst(0xfe2cdf8ee3c25e86), + field.NewFieldConst(0x61b3915ad7274b20), + field.NewFieldConst(0xeab75ca7c918e4ef), + }, + { + field.NewFieldConst(0xd6e15ffc055e154e), + field.NewFieldConst(0xec67881f381a32bf), + field.NewFieldConst(0xfbb1196092bf409c), + field.NewFieldConst(0xdc9d2e07830ba226), + field.NewFieldConst(0x0698ef3245ff7988), + field.NewFieldConst(0x194fae2974f8b576), + field.NewFieldConst(0x7a5d9bea6ca4910e), + field.NewFieldConst(0x7aebfea95ccdd1c9), + field.NewFieldConst(0xf9bd38a67d5f0e86), + field.NewFieldConst(0xfa65539de65492d8), + field.NewFieldConst(0xf0dfcbe7653ff787), + }, + { + field.NewFieldConst(0x0bd87ad390420258), + field.NewFieldConst(0x0ad8617bca9e33c8), + field.NewFieldConst(0x0c00ad377a1e2666), + field.NewFieldConst(0x0ac6fc58b3f0518f), + field.NewFieldConst(0x0c0cc8a892cc4173), + field.NewFieldConst(0x0c210accb117bc21), + field.NewFieldConst(0x0b73630dbb46ca18), + field.NewFieldConst(0x0c8be4920cbd4a54), + field.NewFieldConst(0x0bfe877a21be1690), + field.NewFieldConst(0x0ae790559b0ded81), + field.NewFieldConst(0x0bf50db2f8d6ce31), + }, + { + field.NewFieldConst(0x000cf29427ff7c58), + field.NewFieldConst(0x000bd9b3cf49eec8), + field.NewFieldConst(0x000d1dc8aa81fb26), + field.NewFieldConst(0x000bc792d5c394ef), + field.NewFieldConst(0x000d2ae0b2266453), + field.NewFieldConst(0x000d413f12c496c1), + field.NewFieldConst(0x000c84128cfed618), + field.NewFieldConst(0x000db5ebd48fc0d4), + field.NewFieldConst(0x000d1b77326dcb90), + field.NewFieldConst(0x000beb0ccc145421), + field.NewFieldConst(0x000d10e5b22b11d1), + }, + { + field.NewFieldConst(0x00000e24c99adad8), + field.NewFieldConst(0x00000cf389ed4bc8), + field.NewFieldConst(0x00000e580cbf6966), + field.NewFieldConst(0x00000cde5fd7e04f), + field.NewFieldConst(0x00000e63628041b3), + field.NewFieldConst(0x00000e7e81a87361), + field.NewFieldConst(0x00000dabe78f6d98), + field.NewFieldConst(0x00000efb14cac554), + field.NewFieldConst(0x00000e5574743b10), + field.NewFieldConst(0x00000d05709f42c1), + field.NewFieldConst(0x00000e4690c96af1), + }, + { + field.NewFieldConst(0x0000000f7157bc98), + field.NewFieldConst(0x0000000e3006d948), + field.NewFieldConst(0x0000000fa65811e6), + field.NewFieldConst(0x0000000e0d127e2f), + field.NewFieldConst(0x0000000fc18bfe53), + field.NewFieldConst(0x0000000fd002d901), + field.NewFieldConst(0x0000000eed6461d8), + field.NewFieldConst(0x0000001068562754), + field.NewFieldConst(0x0000000fa0236f50), + field.NewFieldConst(0x0000000e3af13ee1), + field.NewFieldConst(0x0000000fa460f6d1), + }, + { + field.NewFieldConst(0x0000000011131738), + field.NewFieldConst(0x000000000f56d588), + field.NewFieldConst(0x0000000011050f86), + field.NewFieldConst(0x000000000f848f4f), + field.NewFieldConst(0x00000000111527d3), + field.NewFieldConst(0x00000000114369a1), + field.NewFieldConst(0x00000000106f2f38), + field.NewFieldConst(0x0000000011e2ca94), + field.NewFieldConst(0x00000000110a29f0), + field.NewFieldConst(0x000000000fa9f5c1), + field.NewFieldConst(0x0000000010f625d1), + }, + { + field.NewFieldConst(0x000000000011f718), + field.NewFieldConst(0x000000000010b6c8), + field.NewFieldConst(0x0000000000134a96), + field.NewFieldConst(0x000000000010cf7f), + field.NewFieldConst(0x0000000000124d03), + field.NewFieldConst(0x000000000013f8a1), + field.NewFieldConst(0x0000000000117c58), + field.NewFieldConst(0x0000000000132c94), + field.NewFieldConst(0x0000000000134fc0), + field.NewFieldConst(0x000000000010a091), + field.NewFieldConst(0x0000000000128961), + }, + { + field.NewFieldConst(0x0000000000001300), + field.NewFieldConst(0x0000000000001750), + field.NewFieldConst(0x000000000000114e), + field.NewFieldConst(0x000000000000131f), + field.NewFieldConst(0x000000000000167b), + field.NewFieldConst(0x0000000000001371), + field.NewFieldConst(0x0000000000001230), + field.NewFieldConst(0x000000000000182c), + field.NewFieldConst(0x0000000000001368), + field.NewFieldConst(0x0000000000000f31), + field.NewFieldConst(0x00000000000015c9), + }, + { + field.NewFieldConst(0x0000000000000014), + field.NewFieldConst(0x0000000000000022), + field.NewFieldConst(0x0000000000000012), + field.NewFieldConst(0x0000000000000027), + field.NewFieldConst(0x000000000000000d), + field.NewFieldConst(0x000000000000000d), + field.NewFieldConst(0x000000000000001c), + field.NewFieldConst(0x0000000000000002), + field.NewFieldConst(0x0000000000000010), + field.NewFieldConst(0x0000000000000029), + field.NewFieldConst(0x000000000000000f), + }, } -var FAST_PARTIAL_ROUND_VS = [N_PARTIAL_ROUNDS][11]uint64{ - { - 0x94877900674181c3, - 0xc6c67cc37a2a2bbd, - 0xd667c2055387940f, - 0x0ba63a63e94b5ff0, - 0x99460cc41b8f079f, - 0x7ff02375ed524bb3, - 0xea0870b47a8caf0e, - 0xabcad82633b7bc9d, - 0x3b8d135261052241, - 0xfb4515f5e5b0d539, - 0x3ee8011c2b37f77c, - }, - { - 0x0adef3740e71c726, - 0xa37bf67c6f986559, - 0xc6b16f7ed4fa1b00, - 0x6a065da88d8bfc3c, - 0x4cabc0916844b46f, - 0x407faac0f02e78d1, - 0x07a786d9cf0852cf, - 0x42433fb6949a629a, - 0x891682a147ce43b0, - 0x26cfd58e7b003b55, - 0x2bbf0ed7b657acb3, - }, - { - 0x481ac7746b159c67, - 0xe367de32f108e278, - 0x73f260087ad28bec, - 0x5cfc82216bc1bdca, - 0xcaccc870a2663a0e, - 0xdb69cd7b4298c45d, - 0x7bc9e0c57243e62d, - 0x3cc51c5d368693ae, - 0x366b4e8cc068895b, - 0x2bd18715cdabbca4, - 0xa752061c4f33b8cf, - }, - { - 0xb22d2432b72d5098, - 0x9e18a487f44d2fe4, - 0x4b39e14ce22abd3c, - 0x9e77fde2eb315e0d, - 0xca5e0385fe67014d, - 0x0c2cb99bf1b6bddb, - 0x99ec1cd2a4460bfe, - 0x8577a815a2ff843f, - 0x7d80a6b4fd6518a5, - 0xeb6c67123eab62cb, - 0x8f7851650eca21a5, - }, - { - 0x11ba9a1b81718c2a, - 0x9f7d798a3323410c, - 0xa821855c8c1cf5e5, - 0x535e8d6fac0031b2, - 0x404e7c751b634320, - 0xa729353f6e55d354, - 0x4db97d92e58bb831, - 0xb53926c27897bf7d, - 0x965040d52fe115c5, - 0x9565fa41ebd31fd7, - 0xaae4438c877ea8f4, - }, - { - 0x37f4e36af6073c6e, - 0x4edc0918210800e9, - 0xc44998e99eae4188, - 0x9f4310d05d068338, - 0x9ec7fe4350680f29, - 0xc5b2c1fdc0b50874, - 0xa01920c5ef8b2ebe, - 0x59fa6f8bd91d58ba, - 0x8bfc9eb89b515a82, - 0xbe86a7a2555ae775, - 0xcbb8bbaa3810babf, - }, - { - 0x577f9a9e7ee3f9c2, - 0x88c522b949ace7b1, - 0x82f07007c8b72106, - 0x8283d37c6675b50e, - 0x98b074d9bbac1123, - 0x75c56fb7758317c1, - 0xfed24e206052bc72, - 0x26d7c3d1bc07dae5, - 0xf88c5e441e28dbb4, - 0x4fe27f9f96615270, - 0x514d4ba49c2b14fe, - }, - { - 0xf02a3ac068ee110b, - 0x0a3630dafb8ae2d7, - 0xce0dc874eaf9b55c, - 0x9a95f6cff5b55c7e, - 0x626d76abfed00c7b, - 0xa0c1cf1251c204ad, - 0xdaebd3006321052c, - 0x3d4bd48b625a8065, - 0x7f1e584e071f6ed2, - 0x720574f0501caed3, - 0xe3260ba93d23540a, - }, - { - 0xab1cbd41d8c1e335, - 0x9322ed4c0bc2df01, - 0x51c3c0983d4284e5, - 0x94178e291145c231, - 0xfd0f1a973d6b2085, - 0xd427ad96e2b39719, - 0x8a52437fecaac06b, - 0xdc20ee4b8c4c9a80, - 0xa2c98e9549da2100, - 0x1603fe12613db5b6, - 0x0e174929433c5505, - }, - { - 0x3d4eab2b8ef5f796, - 0xcfff421583896e22, - 0x4143cb32d39ac3d9, - 0x22365051b78a5b65, - 0x6f7fd010d027c9b6, - 0xd9dd36fba77522ab, - 0xa44cf1cb33e37165, - 0x3fc83d3038c86417, - 0xc4588d418e88d270, - 0xce1320f10ab80fe2, - 0xdb5eadbbec18de5d, - }, - { - 0x1183dfce7c454afd, - 0x21cea4aa3d3ed949, - 0x0fce6f70303f2304, - 0x19557d34b55551be, - 0x4c56f689afc5bbc9, - 0xa1e920844334f944, - 0xbad66d423d2ec861, - 0xf318c785dc9e0479, - 0x99e2032e765ddd81, - 0x400ccc9906d66f45, - 0xe1197454db2e0dd9, - }, - { - 0x84d1ecc4d53d2ff1, - 0xd8af8b9ceb4e11b6, - 0x335856bb527b52f4, - 0xc756f17fb59be595, - 0xc0654e4ea5553a78, - 0x9e9a46b61f2ea942, - 0x14fc8b5b3b809127, - 0xd7009f0f103be413, - 0x3e0ee7b7a9fb4601, - 0xa74e888922085ed7, - 0xe80a7cde3d4ac526, - }, - { - 0x238aa6daa612186d, - 0x9137a5c630bad4b4, - 0xc7db3817870c5eda, - 0x217e4f04e5718dc9, - 0xcae814e2817bd99d, - 0xe3292e7ab770a8ba, - 0x7bb36ef70b6b9482, - 0x3c7835fb85bca2d3, - 0xfe2cdf8ee3c25e86, - 0x61b3915ad7274b20, - 0xeab75ca7c918e4ef, - }, - { - 0xd6e15ffc055e154e, - 0xec67881f381a32bf, - 0xfbb1196092bf409c, - 0xdc9d2e07830ba226, - 0x0698ef3245ff7988, - 0x194fae2974f8b576, - 0x7a5d9bea6ca4910e, - 0x7aebfea95ccdd1c9, - 0xf9bd38a67d5f0e86, - 0xfa65539de65492d8, - 0xf0dfcbe7653ff787, - }, - { - 0x0bd87ad390420258, - 0x0ad8617bca9e33c8, - 0x0c00ad377a1e2666, - 0x0ac6fc58b3f0518f, - 0x0c0cc8a892cc4173, - 0x0c210accb117bc21, - 0x0b73630dbb46ca18, - 0x0c8be4920cbd4a54, - 0x0bfe877a21be1690, - 0x0ae790559b0ded81, - 0x0bf50db2f8d6ce31, - }, - { - 0x000cf29427ff7c58, - 0x000bd9b3cf49eec8, - 0x000d1dc8aa81fb26, - 0x000bc792d5c394ef, - 0x000d2ae0b2266453, - 0x000d413f12c496c1, - 0x000c84128cfed618, - 0x000db5ebd48fc0d4, - 0x000d1b77326dcb90, - 0x000beb0ccc145421, - 0x000d10e5b22b11d1, - }, - { - 0x00000e24c99adad8, - 0x00000cf389ed4bc8, - 0x00000e580cbf6966, - 0x00000cde5fd7e04f, - 0x00000e63628041b3, - 0x00000e7e81a87361, - 0x00000dabe78f6d98, - 0x00000efb14cac554, - 0x00000e5574743b10, - 0x00000d05709f42c1, - 0x00000e4690c96af1, - }, - { - 0x0000000f7157bc98, - 0x0000000e3006d948, - 0x0000000fa65811e6, - 0x0000000e0d127e2f, - 0x0000000fc18bfe53, - 0x0000000fd002d901, - 0x0000000eed6461d8, - 0x0000001068562754, - 0x0000000fa0236f50, - 0x0000000e3af13ee1, - 0x0000000fa460f6d1, - }, - { - 0x0000000011131738, - 0x000000000f56d588, - 0x0000000011050f86, - 0x000000000f848f4f, - 0x00000000111527d3, - 0x00000000114369a1, - 0x00000000106f2f38, - 0x0000000011e2ca94, - 0x00000000110a29f0, - 0x000000000fa9f5c1, - 0x0000000010f625d1, - }, - { - 0x000000000011f718, - 0x000000000010b6c8, - 0x0000000000134a96, - 0x000000000010cf7f, - 0x0000000000124d03, - 0x000000000013f8a1, - 0x0000000000117c58, - 0x0000000000132c94, - 0x0000000000134fc0, - 0x000000000010a091, - 0x0000000000128961, - }, - { - 0x0000000000001300, - 0x0000000000001750, - 0x000000000000114e, - 0x000000000000131f, - 0x000000000000167b, - 0x0000000000001371, - 0x0000000000001230, - 0x000000000000182c, - 0x0000000000001368, - 0x0000000000000f31, - 0x00000000000015c9, - }, - { - 0x0000000000000014, - 0x0000000000000022, - 0x0000000000000012, - 0x0000000000000027, - 0x000000000000000d, - 0x000000000000000d, - 0x000000000000001c, - 0x0000000000000002, - 0x0000000000000010, - 0x0000000000000029, - 0x000000000000000f, +var FAST_PARTIAL_ROUND_W_HATS = [N_PARTIAL_ROUNDS][11]field.F{ + { + field.NewFieldConst(0x3d999c961b7c63b0), + field.NewFieldConst(0x814e82efcd172529), + field.NewFieldConst(0x2421e5d236704588), + field.NewFieldConst(0x887af7d4dd482328), + field.NewFieldConst(0xa5e9c291f6119b27), + field.NewFieldConst(0xbdc52b2676a4b4aa), + field.NewFieldConst(0x64832009d29bcf57), + field.NewFieldConst(0x09c4155174a552cc), + field.NewFieldConst(0x463f9ee03d290810), + field.NewFieldConst(0xc810936e64982542), + field.NewFieldConst(0x043b1c289f7bc3ac), + }, + { + field.NewFieldConst(0x673655aae8be5a8b), + field.NewFieldConst(0xd510fe714f39fa10), + field.NewFieldConst(0x2c68a099b51c9e73), + field.NewFieldConst(0xa667bfa9aa96999d), + field.NewFieldConst(0x4d67e72f063e2108), + field.NewFieldConst(0xf84dde3e6acda179), + field.NewFieldConst(0x40f9cc8c08f80981), + field.NewFieldConst(0x5ead032050097142), + field.NewFieldConst(0x6591b02092d671bb), + field.NewFieldConst(0x00e18c71963dd1b7), + field.NewFieldConst(0x8a21bcd24a14218a), + }, + { + field.NewFieldConst(0x202800f4addbdc87), + field.NewFieldConst(0xe4b5bdb1cc3504ff), + field.NewFieldConst(0xbe32b32a825596e7), + field.NewFieldConst(0x8e0f68c5dc223b9a), + field.NewFieldConst(0x58022d9e1c256ce3), + field.NewFieldConst(0x584d29227aa073ac), + field.NewFieldConst(0x8b9352ad04bef9e7), + field.NewFieldConst(0xaead42a3f445ecbf), + field.NewFieldConst(0x3c667a1d833a3cca), + field.NewFieldConst(0xda6f61838efa1ffe), + field.NewFieldConst(0xe8f749470bd7c446), + }, + { + field.NewFieldConst(0xc5b85bab9e5b3869), + field.NewFieldConst(0x45245258aec51cf7), + field.NewFieldConst(0x16e6b8e68b931830), + field.NewFieldConst(0xe2ae0f051418112c), + field.NewFieldConst(0x0470e26a0093a65b), + field.NewFieldConst(0x6bef71973a8146ed), + field.NewFieldConst(0x119265be51812daf), + field.NewFieldConst(0xb0be7356254bea2e), + field.NewFieldConst(0x8584defff7589bd7), + field.NewFieldConst(0x3c5fe4aeb1fb52ba), + field.NewFieldConst(0x9e7cd88acf543a5e), + }, + { + field.NewFieldConst(0x179be4bba87f0a8c), + field.NewFieldConst(0xacf63d95d8887355), + field.NewFieldConst(0x6696670196b0074f), + field.NewFieldConst(0xd99ddf1fe75085f9), + field.NewFieldConst(0xc2597881fef0283b), + field.NewFieldConst(0xcf48395ee6c54f14), + field.NewFieldConst(0x15226a8e4cd8d3b6), + field.NewFieldConst(0xc053297389af5d3b), + field.NewFieldConst(0x2c08893f0d1580e2), + field.NewFieldConst(0x0ed3cbcff6fcc5ba), + field.NewFieldConst(0xc82f510ecf81f6d0), + }, + { + field.NewFieldConst(0x94b06183acb715cc), + field.NewFieldConst(0x500392ed0d431137), + field.NewFieldConst(0x861cc95ad5c86323), + field.NewFieldConst(0x05830a443f86c4ac), + field.NewFieldConst(0x3b68225874a20a7c), + field.NewFieldConst(0x10b3309838e236fb), + field.NewFieldConst(0x9b77fc8bcd559e2c), + field.NewFieldConst(0xbdecf5e0cb9cb213), + field.NewFieldConst(0x30276f1221ace5fa), + field.NewFieldConst(0x7935dd342764a144), + field.NewFieldConst(0xeac6db520bb03708), + }, + { + field.NewFieldConst(0x7186a80551025f8f), + field.NewFieldConst(0x622247557e9b5371), + field.NewFieldConst(0xc4cbe326d1ad9742), + field.NewFieldConst(0x55f1523ac6a23ea2), + field.NewFieldConst(0xa13dfe77a3d52f53), + field.NewFieldConst(0xe30750b6301c0452), + field.NewFieldConst(0x08bd488070a3a32b), + field.NewFieldConst(0xcd800caef5b72ae3), + field.NewFieldConst(0x83329c90f04233ce), + field.NewFieldConst(0xb5b99e6664a0a3ee), + field.NewFieldConst(0x6b0731849e200a7f), + }, + { + field.NewFieldConst(0xec3fabc192b01799), + field.NewFieldConst(0x382b38cee8ee5375), + field.NewFieldConst(0x3bfb6c3f0e616572), + field.NewFieldConst(0x514abd0cf6c7bc86), + field.NewFieldConst(0x47521b1361dcc546), + field.NewFieldConst(0x178093843f863d14), + field.NewFieldConst(0xad1003c5d28918e7), + field.NewFieldConst(0x738450e42495bc81), + field.NewFieldConst(0xaf947c59af5e4047), + field.NewFieldConst(0x4653fb0685084ef2), + field.NewFieldConst(0x057fde2062ae35bf), + }, + { + field.NewFieldConst(0xe376678d843ce55e), + field.NewFieldConst(0x66f3860d7514e7fc), + field.NewFieldConst(0x7817f3dfff8b4ffa), + field.NewFieldConst(0x3929624a9def725b), + field.NewFieldConst(0x0126ca37f215a80a), + field.NewFieldConst(0xfce2f5d02762a303), + field.NewFieldConst(0x1bc927375febbad7), + field.NewFieldConst(0x85b481e5243f60bf), + field.NewFieldConst(0x2d3c5f42a39c91a0), + field.NewFieldConst(0x0811719919351ae8), + field.NewFieldConst(0xf669de0add993131), + }, + { + field.NewFieldConst(0x7de38bae084da92d), + field.NewFieldConst(0x5b848442237e8a9b), + field.NewFieldConst(0xf6c705da84d57310), + field.NewFieldConst(0x31e6a4bdb6a49017), + field.NewFieldConst(0x889489706e5c5c0f), + field.NewFieldConst(0x0e4a205459692a1b), + field.NewFieldConst(0xbac3fa75ee26f299), + field.NewFieldConst(0x5f5894f4057d755e), + field.NewFieldConst(0xb0dc3ecd724bb076), + field.NewFieldConst(0x5e34d8554a6452ba), + field.NewFieldConst(0x04f78fd8c1fdcc5f), + }, + { + field.NewFieldConst(0x4dd19c38779512ea), + field.NewFieldConst(0xdb79ba02704620e9), + field.NewFieldConst(0x92a29a3675a5d2be), + field.NewFieldConst(0xd5177029fe495166), + field.NewFieldConst(0xd32b3298a13330c1), + field.NewFieldConst(0x251c4a3eb2c5f8fd), + field.NewFieldConst(0xe1c48b26e0d98825), + field.NewFieldConst(0x3301d3362a4ffccb), + field.NewFieldConst(0x09bb6c88de8cd178), + field.NewFieldConst(0xdc05b676564f538a), + field.NewFieldConst(0x60192d883e473fee), + }, + { + field.NewFieldConst(0x16b9774801ac44a0), + field.NewFieldConst(0x3cb8411e786d3c8e), + field.NewFieldConst(0xa86e9cf505072491), + field.NewFieldConst(0x0178928152e109ae), + field.NewFieldConst(0x5317b905a6e1ab7b), + field.NewFieldConst(0xda20b3be7f53d59f), + field.NewFieldConst(0xcb97dedecebee9ad), + field.NewFieldConst(0x4bd545218c59f58d), + field.NewFieldConst(0x77dc8d856c05a44a), + field.NewFieldConst(0x87948589e4f243fd), + field.NewFieldConst(0x7e5217af969952c2), + }, + { + field.NewFieldConst(0xbc58987d06a84e4d), + field.NewFieldConst(0x0b5d420244c9cae3), + field.NewFieldConst(0xa3c4711b938c02c0), + field.NewFieldConst(0x3aace640a3e03990), + field.NewFieldConst(0x865a0f3249aacd8a), + field.NewFieldConst(0x8d00b2a7dbed06c7), + field.NewFieldConst(0x6eacb905beb7e2f8), + field.NewFieldConst(0x045322b216ec3ec7), + field.NewFieldConst(0xeb9de00d594828e6), + field.NewFieldConst(0x088c5f20df9e5c26), + field.NewFieldConst(0xf555f4112b19781f), + }, + { + field.NewFieldConst(0xa8cedbff1813d3a7), + field.NewFieldConst(0x50dcaee0fd27d164), + field.NewFieldConst(0xf1cb02417e23bd82), + field.NewFieldConst(0xfaf322786e2abe8b), + field.NewFieldConst(0x937a4315beb5d9b6), + field.NewFieldConst(0x1b18992921a11d85), + field.NewFieldConst(0x7d66c4368b3c497b), + field.NewFieldConst(0x0e7946317a6b4e99), + field.NewFieldConst(0xbe4430134182978b), + field.NewFieldConst(0x3771e82493ab262d), + field.NewFieldConst(0xa671690d8095ce82), + }, + { + field.NewFieldConst(0xb035585f6e929d9d), + field.NewFieldConst(0xba1579c7e219b954), + field.NewFieldConst(0xcb201cf846db4ba3), + field.NewFieldConst(0x287bf9177372cf45), + field.NewFieldConst(0xa350e4f61147d0a6), + field.NewFieldConst(0xd5d0ecfb50bcff99), + field.NewFieldConst(0x2e166aa6c776ed21), + field.NewFieldConst(0xe1e66c991990e282), + field.NewFieldConst(0x662b329b01e7bb38), + field.NewFieldConst(0x8aa674b36144d9a9), + field.NewFieldConst(0xcbabf78f97f95e65), + }, + { + field.NewFieldConst(0xeec24b15a06b53fe), + field.NewFieldConst(0xc8a7aa07c5633533), + field.NewFieldConst(0xefe9c6fa4311ad51), + field.NewFieldConst(0xb9173f13977109a1), + field.NewFieldConst(0x69ce43c9cc94aedc), + field.NewFieldConst(0xecf623c9cd118815), + field.NewFieldConst(0x28625def198c33c7), + field.NewFieldConst(0xccfc5f7de5c3636a), + field.NewFieldConst(0xf5e6c40f1621c299), + field.NewFieldConst(0xcec0e58c34cb64b1), + field.NewFieldConst(0xa868ea113387939f), + }, + { + field.NewFieldConst(0xd8dddbdc5ce4ef45), + field.NewFieldConst(0xacfc51de8131458c), + field.NewFieldConst(0x146bb3c0fe499ac0), + field.NewFieldConst(0x9e65309f15943903), + field.NewFieldConst(0x80d0ad980773aa70), + field.NewFieldConst(0xf97817d4ddbf0607), + field.NewFieldConst(0xe4626620a75ba276), + field.NewFieldConst(0x0dfdc7fd6fc74f66), + field.NewFieldConst(0xf464864ad6f2bb93), + field.NewFieldConst(0x02d55e52a5d44414), + field.NewFieldConst(0xdd8de62487c40925), + }, + { + field.NewFieldConst(0xc15acf44759545a3), + field.NewFieldConst(0xcbfdcf39869719d4), + field.NewFieldConst(0x33f62042e2f80225), + field.NewFieldConst(0x2599c5ead81d8fa3), + field.NewFieldConst(0x0b306cb6c1d7c8d0), + field.NewFieldConst(0x658c80d3df3729b1), + field.NewFieldConst(0xe8d1b2b21b41429c), + field.NewFieldConst(0xa1b67f09d4b3ccb8), + field.NewFieldConst(0x0e1adf8b84437180), + field.NewFieldConst(0x0d593a5e584af47b), + field.NewFieldConst(0xa023d94c56e151c7), + }, + { + field.NewFieldConst(0x49026cc3a4afc5a6), + field.NewFieldConst(0xe06dff00ab25b91b), + field.NewFieldConst(0x0ab38c561e8850ff), + field.NewFieldConst(0x92c3c8275e105eeb), + field.NewFieldConst(0xb65256e546889bd0), + field.NewFieldConst(0x3c0468236ea142f6), + field.NewFieldConst(0xee61766b889e18f2), + field.NewFieldConst(0xa206f41b12c30415), + field.NewFieldConst(0x02fe9d756c9f12d1), + field.NewFieldConst(0xe9633210630cbf12), + field.NewFieldConst(0x1ffea9fe85a0b0b1), + }, + { + field.NewFieldConst(0x81d1ae8cc50240f3), + field.NewFieldConst(0xf4c77a079a4607d7), + field.NewFieldConst(0xed446b2315e3efc1), + field.NewFieldConst(0x0b0a6b70915178c3), + field.NewFieldConst(0xb11ff3e089f15d9a), + field.NewFieldConst(0x1d4dba0b7ae9cc18), + field.NewFieldConst(0x65d74e2f43b48d05), + field.NewFieldConst(0xa2df8c6b8ae0804a), + field.NewFieldConst(0xa4e6f0a8c33348a6), + field.NewFieldConst(0xc0a26efc7be5669b), + field.NewFieldConst(0xa6b6582c547d0d60), + }, + { + field.NewFieldConst(0x84afc741f1c13213), + field.NewFieldConst(0x2f8f43734fc906f3), + field.NewFieldConst(0xde682d72da0a02d9), + field.NewFieldConst(0x0bb005236adb9ef2), + field.NewFieldConst(0x5bdf35c10a8b5624), + field.NewFieldConst(0x0739a8a343950010), + field.NewFieldConst(0x52f515f44785cfbc), + field.NewFieldConst(0xcbaf4e5d82856c60), + field.NewFieldConst(0xac9ea09074e3e150), + field.NewFieldConst(0x8f0fa011a2035fb0), + field.NewFieldConst(0x1a37905d8450904a), + }, + { + field.NewFieldConst(0x3abeb80def61cc85), + field.NewFieldConst(0x9d19c9dd4eac4133), + field.NewFieldConst(0x075a652d9641a985), + field.NewFieldConst(0x9daf69ae1b67e667), + field.NewFieldConst(0x364f71da77920a18), + field.NewFieldConst(0x50bd769f745c95b1), + field.NewFieldConst(0xf223d1180dbbf3fc), + field.NewFieldConst(0x2f885e584e04aa99), + field.NewFieldConst(0xb69a0fa70aea684a), + field.NewFieldConst(0x09584acaa6e062a0), + field.NewFieldConst(0x0bc051640145b19b), }, } -var FAST_PARTIAL_ROUND_W_HATS = [N_PARTIAL_ROUNDS][11]uint64{ - { - 0x3d999c961b7c63b0, - 0x814e82efcd172529, - 0x2421e5d236704588, - 0x887af7d4dd482328, - 0xa5e9c291f6119b27, - 0xbdc52b2676a4b4aa, - 0x64832009d29bcf57, - 0x09c4155174a552cc, - 0x463f9ee03d290810, - 0xc810936e64982542, - 0x043b1c289f7bc3ac, - }, - { - 0x673655aae8be5a8b, - 0xd510fe714f39fa10, - 0x2c68a099b51c9e73, - 0xa667bfa9aa96999d, - 0x4d67e72f063e2108, - 0xf84dde3e6acda179, - 0x40f9cc8c08f80981, - 0x5ead032050097142, - 0x6591b02092d671bb, - 0x00e18c71963dd1b7, - 0x8a21bcd24a14218a, - }, - { - 0x202800f4addbdc87, - 0xe4b5bdb1cc3504ff, - 0xbe32b32a825596e7, - 0x8e0f68c5dc223b9a, - 0x58022d9e1c256ce3, - 0x584d29227aa073ac, - 0x8b9352ad04bef9e7, - 0xaead42a3f445ecbf, - 0x3c667a1d833a3cca, - 0xda6f61838efa1ffe, - 0xe8f749470bd7c446, - }, - { - 0xc5b85bab9e5b3869, - 0x45245258aec51cf7, - 0x16e6b8e68b931830, - 0xe2ae0f051418112c, - 0x0470e26a0093a65b, - 0x6bef71973a8146ed, - 0x119265be51812daf, - 0xb0be7356254bea2e, - 0x8584defff7589bd7, - 0x3c5fe4aeb1fb52ba, - 0x9e7cd88acf543a5e, - }, - { - 0x179be4bba87f0a8c, - 0xacf63d95d8887355, - 0x6696670196b0074f, - 0xd99ddf1fe75085f9, - 0xc2597881fef0283b, - 0xcf48395ee6c54f14, - 0x15226a8e4cd8d3b6, - 0xc053297389af5d3b, - 0x2c08893f0d1580e2, - 0x0ed3cbcff6fcc5ba, - 0xc82f510ecf81f6d0, - }, - { - 0x94b06183acb715cc, - 0x500392ed0d431137, - 0x861cc95ad5c86323, - 0x05830a443f86c4ac, - 0x3b68225874a20a7c, - 0x10b3309838e236fb, - 0x9b77fc8bcd559e2c, - 0xbdecf5e0cb9cb213, - 0x30276f1221ace5fa, - 0x7935dd342764a144, - 0xeac6db520bb03708, - }, - { - 0x7186a80551025f8f, - 0x622247557e9b5371, - 0xc4cbe326d1ad9742, - 0x55f1523ac6a23ea2, - 0xa13dfe77a3d52f53, - 0xe30750b6301c0452, - 0x08bd488070a3a32b, - 0xcd800caef5b72ae3, - 0x83329c90f04233ce, - 0xb5b99e6664a0a3ee, - 0x6b0731849e200a7f, - }, - { - 0xec3fabc192b01799, - 0x382b38cee8ee5375, - 0x3bfb6c3f0e616572, - 0x514abd0cf6c7bc86, - 0x47521b1361dcc546, - 0x178093843f863d14, - 0xad1003c5d28918e7, - 0x738450e42495bc81, - 0xaf947c59af5e4047, - 0x4653fb0685084ef2, - 0x057fde2062ae35bf, - }, - { - 0xe376678d843ce55e, - 0x66f3860d7514e7fc, - 0x7817f3dfff8b4ffa, - 0x3929624a9def725b, - 0x0126ca37f215a80a, - 0xfce2f5d02762a303, - 0x1bc927375febbad7, - 0x85b481e5243f60bf, - 0x2d3c5f42a39c91a0, - 0x0811719919351ae8, - 0xf669de0add993131, - }, - { - 0x7de38bae084da92d, - 0x5b848442237e8a9b, - 0xf6c705da84d57310, - 0x31e6a4bdb6a49017, - 0x889489706e5c5c0f, - 0x0e4a205459692a1b, - 0xbac3fa75ee26f299, - 0x5f5894f4057d755e, - 0xb0dc3ecd724bb076, - 0x5e34d8554a6452ba, - 0x04f78fd8c1fdcc5f, - }, - { - 0x4dd19c38779512ea, - 0xdb79ba02704620e9, - 0x92a29a3675a5d2be, - 0xd5177029fe495166, - 0xd32b3298a13330c1, - 0x251c4a3eb2c5f8fd, - 0xe1c48b26e0d98825, - 0x3301d3362a4ffccb, - 0x09bb6c88de8cd178, - 0xdc05b676564f538a, - 0x60192d883e473fee, - }, - { - 0x16b9774801ac44a0, - 0x3cb8411e786d3c8e, - 0xa86e9cf505072491, - 0x0178928152e109ae, - 0x5317b905a6e1ab7b, - 0xda20b3be7f53d59f, - 0xcb97dedecebee9ad, - 0x4bd545218c59f58d, - 0x77dc8d856c05a44a, - 0x87948589e4f243fd, - 0x7e5217af969952c2, - }, - { - 0xbc58987d06a84e4d, - 0x0b5d420244c9cae3, - 0xa3c4711b938c02c0, - 0x3aace640a3e03990, - 0x865a0f3249aacd8a, - 0x8d00b2a7dbed06c7, - 0x6eacb905beb7e2f8, - 0x045322b216ec3ec7, - 0xeb9de00d594828e6, - 0x088c5f20df9e5c26, - 0xf555f4112b19781f, - }, - { - 0xa8cedbff1813d3a7, - 0x50dcaee0fd27d164, - 0xf1cb02417e23bd82, - 0xfaf322786e2abe8b, - 0x937a4315beb5d9b6, - 0x1b18992921a11d85, - 0x7d66c4368b3c497b, - 0x0e7946317a6b4e99, - 0xbe4430134182978b, - 0x3771e82493ab262d, - 0xa671690d8095ce82, - }, - { - 0xb035585f6e929d9d, - 0xba1579c7e219b954, - 0xcb201cf846db4ba3, - 0x287bf9177372cf45, - 0xa350e4f61147d0a6, - 0xd5d0ecfb50bcff99, - 0x2e166aa6c776ed21, - 0xe1e66c991990e282, - 0x662b329b01e7bb38, - 0x8aa674b36144d9a9, - 0xcbabf78f97f95e65, - }, - { - 0xeec24b15a06b53fe, - 0xc8a7aa07c5633533, - 0xefe9c6fa4311ad51, - 0xb9173f13977109a1, - 0x69ce43c9cc94aedc, - 0xecf623c9cd118815, - 0x28625def198c33c7, - 0xccfc5f7de5c3636a, - 0xf5e6c40f1621c299, - 0xcec0e58c34cb64b1, - 0xa868ea113387939f, - }, - { - 0xd8dddbdc5ce4ef45, - 0xacfc51de8131458c, - 0x146bb3c0fe499ac0, - 0x9e65309f15943903, - 0x80d0ad980773aa70, - 0xf97817d4ddbf0607, - 0xe4626620a75ba276, - 0x0dfdc7fd6fc74f66, - 0xf464864ad6f2bb93, - 0x02d55e52a5d44414, - 0xdd8de62487c40925, - }, - { - 0xc15acf44759545a3, - 0xcbfdcf39869719d4, - 0x33f62042e2f80225, - 0x2599c5ead81d8fa3, - 0x0b306cb6c1d7c8d0, - 0x658c80d3df3729b1, - 0xe8d1b2b21b41429c, - 0xa1b67f09d4b3ccb8, - 0x0e1adf8b84437180, - 0x0d593a5e584af47b, - 0xa023d94c56e151c7, - }, - { - 0x49026cc3a4afc5a6, - 0xe06dff00ab25b91b, - 0x0ab38c561e8850ff, - 0x92c3c8275e105eeb, - 0xb65256e546889bd0, - 0x3c0468236ea142f6, - 0xee61766b889e18f2, - 0xa206f41b12c30415, - 0x02fe9d756c9f12d1, - 0xe9633210630cbf12, - 0x1ffea9fe85a0b0b1, - }, - { - 0x81d1ae8cc50240f3, - 0xf4c77a079a4607d7, - 0xed446b2315e3efc1, - 0x0b0a6b70915178c3, - 0xb11ff3e089f15d9a, - 0x1d4dba0b7ae9cc18, - 0x65d74e2f43b48d05, - 0xa2df8c6b8ae0804a, - 0xa4e6f0a8c33348a6, - 0xc0a26efc7be5669b, - 0xa6b6582c547d0d60, - }, - { - 0x84afc741f1c13213, - 0x2f8f43734fc906f3, - 0xde682d72da0a02d9, - 0x0bb005236adb9ef2, - 0x5bdf35c10a8b5624, - 0x0739a8a343950010, - 0x52f515f44785cfbc, - 0xcbaf4e5d82856c60, - 0xac9ea09074e3e150, - 0x8f0fa011a2035fb0, - 0x1a37905d8450904a, - }, - { - 0x3abeb80def61cc85, - 0x9d19c9dd4eac4133, - 0x075a652d9641a985, - 0x9daf69ae1b67e667, - 0x364f71da77920a18, - 0x50bd769f745c95b1, - 0xf223d1180dbbf3fc, - 0x2f885e584e04aa99, - 0xb69a0fa70aea684a, - 0x09584acaa6e062a0, - 0x0bc051640145b19b, +var FAST_PARTIAL_ROUND_INITIAL_MATRIX = [N_PARTIAL_ROUNDS][11]field.F{ + { + field.NewFieldConst(0x80772dc2645b280b), + field.NewFieldConst(0xdc927721da922cf8), + field.NewFieldConst(0xc1978156516879ad), + field.NewFieldConst(0x90e80c591f48b603), + field.NewFieldConst(0x3a2432625475e3ae), + field.NewFieldConst(0x00a2d4321cca94fe), + field.NewFieldConst(0x77736f524010c932), + field.NewFieldConst(0x904d3f2804a36c54), + field.NewFieldConst(0xbf9b39e28a16f354), + field.NewFieldConst(0x3a1ded54a6cd058b), + field.NewFieldConst(0x42392870da5737cf), + }, + { + field.NewFieldConst(0xe796d293a47a64cb), + field.NewFieldConst(0xb124c33152a2421a), + field.NewFieldConst(0x0ee5dc0ce131268a), + field.NewFieldConst(0xa9032a52f930fae6), + field.NewFieldConst(0x7e33ca8c814280de), + field.NewFieldConst(0xad11180f69a8c29e), + field.NewFieldConst(0xc75ac6d5b5a10ff3), + field.NewFieldConst(0xf0674a8dc5a387ec), + field.NewFieldConst(0xb36d43120eaa5e2b), + field.NewFieldConst(0x6f232aab4b533a25), + field.NewFieldConst(0x3a1ded54a6cd058b), + }, + { + field.NewFieldConst(0xdcedab70f40718ba), + field.NewFieldConst(0x14a4a64da0b2668f), + field.NewFieldConst(0x4715b8e5ab34653b), + field.NewFieldConst(0x1e8916a99c93a88e), + field.NewFieldConst(0xbba4b5d86b9a3b2c), + field.NewFieldConst(0xe76649f9bd5d5c2e), + field.NewFieldConst(0xaf8e2518a1ece54d), + field.NewFieldConst(0xdcda1344cdca873f), + field.NewFieldConst(0xcd080204256088e5), + field.NewFieldConst(0xb36d43120eaa5e2b), + field.NewFieldConst(0xbf9b39e28a16f354), + }, + { + field.NewFieldConst(0xf4a437f2888ae909), + field.NewFieldConst(0xc537d44dc2875403), + field.NewFieldConst(0x7f68007619fd8ba9), + field.NewFieldConst(0xa4911db6a32612da), + field.NewFieldConst(0x2f7e9aade3fdaec1), + field.NewFieldConst(0xe7ffd578da4ea43d), + field.NewFieldConst(0x43a608e7afa6b5c2), + field.NewFieldConst(0xca46546aa99e1575), + field.NewFieldConst(0xdcda1344cdca873f), + field.NewFieldConst(0xf0674a8dc5a387ec), + field.NewFieldConst(0x904d3f2804a36c54), + }, + { + field.NewFieldConst(0xf97abba0dffb6c50), + field.NewFieldConst(0x5e40f0c9bb82aab5), + field.NewFieldConst(0x5996a80497e24a6b), + field.NewFieldConst(0x07084430a7307c9a), + field.NewFieldConst(0xad2f570a5b8545aa), + field.NewFieldConst(0xab7f81fef4274770), + field.NewFieldConst(0xcb81f535cf98c9e9), + field.NewFieldConst(0x43a608e7afa6b5c2), + field.NewFieldConst(0xaf8e2518a1ece54d), + field.NewFieldConst(0xc75ac6d5b5a10ff3), + field.NewFieldConst(0x77736f524010c932), + }, + { + field.NewFieldConst(0x7f8e41e0b0a6cdff), + field.NewFieldConst(0x4b1ba8d40afca97d), + field.NewFieldConst(0x623708f28fca70e8), + field.NewFieldConst(0xbf150dc4914d380f), + field.NewFieldConst(0xc26a083554767106), + field.NewFieldConst(0x753b8b1126665c22), + field.NewFieldConst(0xab7f81fef4274770), + field.NewFieldConst(0xe7ffd578da4ea43d), + field.NewFieldConst(0xe76649f9bd5d5c2e), + field.NewFieldConst(0xad11180f69a8c29e), + field.NewFieldConst(0x00a2d4321cca94fe), + }, + { + field.NewFieldConst(0x726af914971c1374), + field.NewFieldConst(0x1d7f8a2cce1a9d00), + field.NewFieldConst(0x18737784700c75cd), + field.NewFieldConst(0x7fb45d605dd82838), + field.NewFieldConst(0x862361aeab0f9b6e), + field.NewFieldConst(0xc26a083554767106), + field.NewFieldConst(0xad2f570a5b8545aa), + field.NewFieldConst(0x2f7e9aade3fdaec1), + field.NewFieldConst(0xbba4b5d86b9a3b2c), + field.NewFieldConst(0x7e33ca8c814280de), + field.NewFieldConst(0x3a2432625475e3ae), + }, + { + field.NewFieldConst(0x64dd936da878404d), + field.NewFieldConst(0x4db9a2ead2bd7262), + field.NewFieldConst(0xbe2e19f6d07f1a83), + field.NewFieldConst(0x02290fe23c20351a), + field.NewFieldConst(0x7fb45d605dd82838), + field.NewFieldConst(0xbf150dc4914d380f), + field.NewFieldConst(0x07084430a7307c9a), + field.NewFieldConst(0xa4911db6a32612da), + field.NewFieldConst(0x1e8916a99c93a88e), + field.NewFieldConst(0xa9032a52f930fae6), + field.NewFieldConst(0x90e80c591f48b603), + }, + { + field.NewFieldConst(0x85418a9fef8a9890), + field.NewFieldConst(0xd8a2eb7ef5e707ad), + field.NewFieldConst(0xbfe85ababed2d882), + field.NewFieldConst(0xbe2e19f6d07f1a83), + field.NewFieldConst(0x18737784700c75cd), + field.NewFieldConst(0x623708f28fca70e8), + field.NewFieldConst(0x5996a80497e24a6b), + field.NewFieldConst(0x7f68007619fd8ba9), + field.NewFieldConst(0x4715b8e5ab34653b), + field.NewFieldConst(0x0ee5dc0ce131268a), + field.NewFieldConst(0xc1978156516879ad), + }, + { + field.NewFieldConst(0x156048ee7a738154), + field.NewFieldConst(0x91f7562377e81df5), + field.NewFieldConst(0xd8a2eb7ef5e707ad), + field.NewFieldConst(0x4db9a2ead2bd7262), + field.NewFieldConst(0x1d7f8a2cce1a9d00), + field.NewFieldConst(0x4b1ba8d40afca97d), + field.NewFieldConst(0x5e40f0c9bb82aab5), + field.NewFieldConst(0xc537d44dc2875403), + field.NewFieldConst(0x14a4a64da0b2668f), + field.NewFieldConst(0xb124c33152a2421a), + field.NewFieldConst(0xdc927721da922cf8), + }, + { + field.NewFieldConst(0xd841e8ef9dde8ba0), + field.NewFieldConst(0x156048ee7a738154), + field.NewFieldConst(0x85418a9fef8a9890), + field.NewFieldConst(0x64dd936da878404d), + field.NewFieldConst(0x726af914971c1374), + field.NewFieldConst(0x7f8e41e0b0a6cdff), + field.NewFieldConst(0xf97abba0dffb6c50), + field.NewFieldConst(0xf4a437f2888ae909), + field.NewFieldConst(0xdcedab70f40718ba), + field.NewFieldConst(0xe796d293a47a64cb), + field.NewFieldConst(0x80772dc2645b280b), }, } -var FAST_PARTIAL_ROUND_INITIAL_MATRIX = [N_PARTIAL_ROUNDS][11]uint64{ - { - 0x80772dc2645b280b, - 0xdc927721da922cf8, - 0xc1978156516879ad, - 0x90e80c591f48b603, - 0x3a2432625475e3ae, - 0x00a2d4321cca94fe, - 0x77736f524010c932, - 0x904d3f2804a36c54, - 0xbf9b39e28a16f354, - 0x3a1ded54a6cd058b, - 0x42392870da5737cf, - }, - { - 0xe796d293a47a64cb, - 0xb124c33152a2421a, - 0x0ee5dc0ce131268a, - 0xa9032a52f930fae6, - 0x7e33ca8c814280de, - 0xad11180f69a8c29e, - 0xc75ac6d5b5a10ff3, - 0xf0674a8dc5a387ec, - 0xb36d43120eaa5e2b, - 0x6f232aab4b533a25, - 0x3a1ded54a6cd058b, - }, - { - 0xdcedab70f40718ba, - 0x14a4a64da0b2668f, - 0x4715b8e5ab34653b, - 0x1e8916a99c93a88e, - 0xbba4b5d86b9a3b2c, - 0xe76649f9bd5d5c2e, - 0xaf8e2518a1ece54d, - 0xdcda1344cdca873f, - 0xcd080204256088e5, - 0xb36d43120eaa5e2b, - 0xbf9b39e28a16f354, - }, - { - 0xf4a437f2888ae909, - 0xc537d44dc2875403, - 0x7f68007619fd8ba9, - 0xa4911db6a32612da, - 0x2f7e9aade3fdaec1, - 0xe7ffd578da4ea43d, - 0x43a608e7afa6b5c2, - 0xca46546aa99e1575, - 0xdcda1344cdca873f, - 0xf0674a8dc5a387ec, - 0x904d3f2804a36c54, - }, - { - 0xf97abba0dffb6c50, - 0x5e40f0c9bb82aab5, - 0x5996a80497e24a6b, - 0x07084430a7307c9a, - 0xad2f570a5b8545aa, - 0xab7f81fef4274770, - 0xcb81f535cf98c9e9, - 0x43a608e7afa6b5c2, - 0xaf8e2518a1ece54d, - 0xc75ac6d5b5a10ff3, - 0x77736f524010c932, - }, - { - 0x7f8e41e0b0a6cdff, - 0x4b1ba8d40afca97d, - 0x623708f28fca70e8, - 0xbf150dc4914d380f, - 0xc26a083554767106, - 0x753b8b1126665c22, - 0xab7f81fef4274770, - 0xe7ffd578da4ea43d, - 0xe76649f9bd5d5c2e, - 0xad11180f69a8c29e, - 0x00a2d4321cca94fe, - }, - { - 0x726af914971c1374, - 0x1d7f8a2cce1a9d00, - 0x18737784700c75cd, - 0x7fb45d605dd82838, - 0x862361aeab0f9b6e, - 0xc26a083554767106, - 0xad2f570a5b8545aa, - 0x2f7e9aade3fdaec1, - 0xbba4b5d86b9a3b2c, - 0x7e33ca8c814280de, - 0x3a2432625475e3ae, - }, - { - 0x64dd936da878404d, - 0x4db9a2ead2bd7262, - 0xbe2e19f6d07f1a83, - 0x02290fe23c20351a, - 0x7fb45d605dd82838, - 0xbf150dc4914d380f, - 0x07084430a7307c9a, - 0xa4911db6a32612da, - 0x1e8916a99c93a88e, - 0xa9032a52f930fae6, - 0x90e80c591f48b603, - }, - { - 0x85418a9fef8a9890, - 0xd8a2eb7ef5e707ad, - 0xbfe85ababed2d882, - 0xbe2e19f6d07f1a83, - 0x18737784700c75cd, - 0x623708f28fca70e8, - 0x5996a80497e24a6b, - 0x7f68007619fd8ba9, - 0x4715b8e5ab34653b, - 0x0ee5dc0ce131268a, - 0xc1978156516879ad, - }, - { - 0x156048ee7a738154, - 0x91f7562377e81df5, - 0xd8a2eb7ef5e707ad, - 0x4db9a2ead2bd7262, - 0x1d7f8a2cce1a9d00, - 0x4b1ba8d40afca97d, - 0x5e40f0c9bb82aab5, - 0xc537d44dc2875403, - 0x14a4a64da0b2668f, - 0xb124c33152a2421a, - 0xdc927721da922cf8, - }, - { - 0xd841e8ef9dde8ba0, - 0x156048ee7a738154, - 0x85418a9fef8a9890, - 0x64dd936da878404d, - 0x726af914971c1374, - 0x7f8e41e0b0a6cdff, - 0xf97abba0dffb6c50, - 0xf4a437f2888ae909, - 0xdcedab70f40718ba, - 0xe796d293a47a64cb, - 0x80772dc2645b280b, +var FAST_PARTIAL_ROUND_W_HATS_VARS = [N_PARTIAL_ROUNDS][11]frontend.Variable{ + { + frontend.Variable(uint64(0x3d999c961b7c63b0)), + frontend.Variable(uint64(0x814e82efcd172529)), + frontend.Variable(uint64(0x2421e5d236704588)), + frontend.Variable(uint64(0x887af7d4dd482328)), + frontend.Variable(uint64(0xa5e9c291f6119b27)), + frontend.Variable(uint64(0xbdc52b2676a4b4aa)), + frontend.Variable(uint64(0x64832009d29bcf57)), + frontend.Variable(uint64(0x09c4155174a552cc)), + frontend.Variable(uint64(0x463f9ee03d290810)), + frontend.Variable(uint64(0xc810936e64982542)), + frontend.Variable(uint64(0x043b1c289f7bc3ac)), + }, + { + frontend.Variable(uint64(0x673655aae8be5a8b)), + frontend.Variable(uint64(0xd510fe714f39fa10)), + frontend.Variable(uint64(0x2c68a099b51c9e73)), + frontend.Variable(uint64(0xa667bfa9aa96999d)), + frontend.Variable(uint64(0x4d67e72f063e2108)), + frontend.Variable(uint64(0xf84dde3e6acda179)), + frontend.Variable(uint64(0x40f9cc8c08f80981)), + frontend.Variable(uint64(0x5ead032050097142)), + frontend.Variable(uint64(0x6591b02092d671bb)), + frontend.Variable(uint64(0x00e18c71963dd1b7)), + frontend.Variable(uint64(0x8a21bcd24a14218a)), + }, + { + frontend.Variable(uint64(0x202800f4addbdc87)), + frontend.Variable(uint64(0xe4b5bdb1cc3504ff)), + frontend.Variable(uint64(0xbe32b32a825596e7)), + frontend.Variable(uint64(0x8e0f68c5dc223b9a)), + frontend.Variable(uint64(0x58022d9e1c256ce3)), + frontend.Variable(uint64(0x584d29227aa073ac)), + frontend.Variable(uint64(0x8b9352ad04bef9e7)), + frontend.Variable(uint64(0xaead42a3f445ecbf)), + frontend.Variable(uint64(0x3c667a1d833a3cca)), + frontend.Variable(uint64(0xda6f61838efa1ffe)), + frontend.Variable(uint64(0xe8f749470bd7c446)), + }, + { + frontend.Variable(uint64(0xc5b85bab9e5b3869)), + frontend.Variable(uint64(0x45245258aec51cf7)), + frontend.Variable(uint64(0x16e6b8e68b931830)), + frontend.Variable(uint64(0xe2ae0f051418112c)), + frontend.Variable(uint64(0x0470e26a0093a65b)), + frontend.Variable(uint64(0x6bef71973a8146ed)), + frontend.Variable(uint64(0x119265be51812daf)), + frontend.Variable(uint64(0xb0be7356254bea2e)), + frontend.Variable(uint64(0x8584defff7589bd7)), + frontend.Variable(uint64(0x3c5fe4aeb1fb52ba)), + frontend.Variable(uint64(0x9e7cd88acf543a5e)), + }, + { + frontend.Variable(uint64(0x179be4bba87f0a8c)), + frontend.Variable(uint64(0xacf63d95d8887355)), + frontend.Variable(uint64(0x6696670196b0074f)), + frontend.Variable(uint64(0xd99ddf1fe75085f9)), + frontend.Variable(uint64(0xc2597881fef0283b)), + frontend.Variable(uint64(0xcf48395ee6c54f14)), + frontend.Variable(uint64(0x15226a8e4cd8d3b6)), + frontend.Variable(uint64(0xc053297389af5d3b)), + frontend.Variable(uint64(0x2c08893f0d1580e2)), + frontend.Variable(uint64(0x0ed3cbcff6fcc5ba)), + frontend.Variable(uint64(0xc82f510ecf81f6d0)), + }, + { + frontend.Variable(uint64(0x94b06183acb715cc)), + frontend.Variable(uint64(0x500392ed0d431137)), + frontend.Variable(uint64(0x861cc95ad5c86323)), + frontend.Variable(uint64(0x05830a443f86c4ac)), + frontend.Variable(uint64(0x3b68225874a20a7c)), + frontend.Variable(uint64(0x10b3309838e236fb)), + frontend.Variable(uint64(0x9b77fc8bcd559e2c)), + frontend.Variable(uint64(0xbdecf5e0cb9cb213)), + frontend.Variable(uint64(0x30276f1221ace5fa)), + frontend.Variable(uint64(0x7935dd342764a144)), + frontend.Variable(uint64(0xeac6db520bb03708)), + }, + { + frontend.Variable(uint64(0x7186a80551025f8f)), + frontend.Variable(uint64(0x622247557e9b5371)), + frontend.Variable(uint64(0xc4cbe326d1ad9742)), + frontend.Variable(uint64(0x55f1523ac6a23ea2)), + frontend.Variable(uint64(0xa13dfe77a3d52f53)), + frontend.Variable(uint64(0xe30750b6301c0452)), + frontend.Variable(uint64(0x08bd488070a3a32b)), + frontend.Variable(uint64(0xcd800caef5b72ae3)), + frontend.Variable(uint64(0x83329c90f04233ce)), + frontend.Variable(uint64(0xb5b99e6664a0a3ee)), + frontend.Variable(uint64(0x6b0731849e200a7f)), + }, + { + frontend.Variable(uint64(0xec3fabc192b01799)), + frontend.Variable(uint64(0x382b38cee8ee5375)), + frontend.Variable(uint64(0x3bfb6c3f0e616572)), + frontend.Variable(uint64(0x514abd0cf6c7bc86)), + frontend.Variable(uint64(0x47521b1361dcc546)), + frontend.Variable(uint64(0x178093843f863d14)), + frontend.Variable(uint64(0xad1003c5d28918e7)), + frontend.Variable(uint64(0x738450e42495bc81)), + frontend.Variable(uint64(0xaf947c59af5e4047)), + frontend.Variable(uint64(0x4653fb0685084ef2)), + frontend.Variable(uint64(0x057fde2062ae35bf)), + }, + { + frontend.Variable(uint64(0xe376678d843ce55e)), + frontend.Variable(uint64(0x66f3860d7514e7fc)), + frontend.Variable(uint64(0x7817f3dfff8b4ffa)), + frontend.Variable(uint64(0x3929624a9def725b)), + frontend.Variable(uint64(0x0126ca37f215a80a)), + frontend.Variable(uint64(0xfce2f5d02762a303)), + frontend.Variable(uint64(0x1bc927375febbad7)), + frontend.Variable(uint64(0x85b481e5243f60bf)), + frontend.Variable(uint64(0x2d3c5f42a39c91a0)), + frontend.Variable(uint64(0x0811719919351ae8)), + frontend.Variable(uint64(0xf669de0add993131)), + }, + { + frontend.Variable(uint64(0x7de38bae084da92d)), + frontend.Variable(uint64(0x5b848442237e8a9b)), + frontend.Variable(uint64(0xf6c705da84d57310)), + frontend.Variable(uint64(0x31e6a4bdb6a49017)), + frontend.Variable(uint64(0x889489706e5c5c0f)), + frontend.Variable(uint64(0x0e4a205459692a1b)), + frontend.Variable(uint64(0xbac3fa75ee26f299)), + frontend.Variable(uint64(0x5f5894f4057d755e)), + frontend.Variable(uint64(0xb0dc3ecd724bb076)), + frontend.Variable(uint64(0x5e34d8554a6452ba)), + frontend.Variable(uint64(0x04f78fd8c1fdcc5f)), + }, + { + frontend.Variable(uint64(0x4dd19c38779512ea)), + frontend.Variable(uint64(0xdb79ba02704620e9)), + frontend.Variable(uint64(0x92a29a3675a5d2be)), + frontend.Variable(uint64(0xd5177029fe495166)), + frontend.Variable(uint64(0xd32b3298a13330c1)), + frontend.Variable(uint64(0x251c4a3eb2c5f8fd)), + frontend.Variable(uint64(0xe1c48b26e0d98825)), + frontend.Variable(uint64(0x3301d3362a4ffccb)), + frontend.Variable(uint64(0x09bb6c88de8cd178)), + frontend.Variable(uint64(0xdc05b676564f538a)), + frontend.Variable(uint64(0x60192d883e473fee)), + }, + { + frontend.Variable(uint64(0x16b9774801ac44a0)), + frontend.Variable(uint64(0x3cb8411e786d3c8e)), + frontend.Variable(uint64(0xa86e9cf505072491)), + frontend.Variable(uint64(0x0178928152e109ae)), + frontend.Variable(uint64(0x5317b905a6e1ab7b)), + frontend.Variable(uint64(0xda20b3be7f53d59f)), + frontend.Variable(uint64(0xcb97dedecebee9ad)), + frontend.Variable(uint64(0x4bd545218c59f58d)), + frontend.Variable(uint64(0x77dc8d856c05a44a)), + frontend.Variable(uint64(0x87948589e4f243fd)), + frontend.Variable(uint64(0x7e5217af969952c2)), + }, + { + frontend.Variable(uint64(0xbc58987d06a84e4d)), + frontend.Variable(uint64(0x0b5d420244c9cae3)), + frontend.Variable(uint64(0xa3c4711b938c02c0)), + frontend.Variable(uint64(0x3aace640a3e03990)), + frontend.Variable(uint64(0x865a0f3249aacd8a)), + frontend.Variable(uint64(0x8d00b2a7dbed06c7)), + frontend.Variable(uint64(0x6eacb905beb7e2f8)), + frontend.Variable(uint64(0x045322b216ec3ec7)), + frontend.Variable(uint64(0xeb9de00d594828e6)), + frontend.Variable(uint64(0x088c5f20df9e5c26)), + frontend.Variable(uint64(0xf555f4112b19781f)), + }, + { + frontend.Variable(uint64(0xa8cedbff1813d3a7)), + frontend.Variable(uint64(0x50dcaee0fd27d164)), + frontend.Variable(uint64(0xf1cb02417e23bd82)), + frontend.Variable(uint64(0xfaf322786e2abe8b)), + frontend.Variable(uint64(0x937a4315beb5d9b6)), + frontend.Variable(uint64(0x1b18992921a11d85)), + frontend.Variable(uint64(0x7d66c4368b3c497b)), + frontend.Variable(uint64(0x0e7946317a6b4e99)), + frontend.Variable(uint64(0xbe4430134182978b)), + frontend.Variable(uint64(0x3771e82493ab262d)), + frontend.Variable(uint64(0xa671690d8095ce82)), + }, + { + frontend.Variable(uint64(0xb035585f6e929d9d)), + frontend.Variable(uint64(0xba1579c7e219b954)), + frontend.Variable(uint64(0xcb201cf846db4ba3)), + frontend.Variable(uint64(0x287bf9177372cf45)), + frontend.Variable(uint64(0xa350e4f61147d0a6)), + frontend.Variable(uint64(0xd5d0ecfb50bcff99)), + frontend.Variable(uint64(0x2e166aa6c776ed21)), + frontend.Variable(uint64(0xe1e66c991990e282)), + frontend.Variable(uint64(0x662b329b01e7bb38)), + frontend.Variable(uint64(0x8aa674b36144d9a9)), + frontend.Variable(uint64(0xcbabf78f97f95e65)), + }, + { + frontend.Variable(uint64(0xeec24b15a06b53fe)), + frontend.Variable(uint64(0xc8a7aa07c5633533)), + frontend.Variable(uint64(0xefe9c6fa4311ad51)), + frontend.Variable(uint64(0xb9173f13977109a1)), + frontend.Variable(uint64(0x69ce43c9cc94aedc)), + frontend.Variable(uint64(0xecf623c9cd118815)), + frontend.Variable(uint64(0x28625def198c33c7)), + frontend.Variable(uint64(0xccfc5f7de5c3636a)), + frontend.Variable(uint64(0xf5e6c40f1621c299)), + frontend.Variable(uint64(0xcec0e58c34cb64b1)), + frontend.Variable(uint64(0xa868ea113387939f)), + }, + { + frontend.Variable(uint64(0xd8dddbdc5ce4ef45)), + frontend.Variable(uint64(0xacfc51de8131458c)), + frontend.Variable(uint64(0x146bb3c0fe499ac0)), + frontend.Variable(uint64(0x9e65309f15943903)), + frontend.Variable(uint64(0x80d0ad980773aa70)), + frontend.Variable(uint64(0xf97817d4ddbf0607)), + frontend.Variable(uint64(0xe4626620a75ba276)), + frontend.Variable(uint64(0x0dfdc7fd6fc74f66)), + frontend.Variable(uint64(0xf464864ad6f2bb93)), + frontend.Variable(uint64(0x02d55e52a5d44414)), + frontend.Variable(uint64(0xdd8de62487c40925)), + }, + { + frontend.Variable(uint64(0xc15acf44759545a3)), + frontend.Variable(uint64(0xcbfdcf39869719d4)), + frontend.Variable(uint64(0x33f62042e2f80225)), + frontend.Variable(uint64(0x2599c5ead81d8fa3)), + frontend.Variable(uint64(0x0b306cb6c1d7c8d0)), + frontend.Variable(uint64(0x658c80d3df3729b1)), + frontend.Variable(uint64(0xe8d1b2b21b41429c)), + frontend.Variable(uint64(0xa1b67f09d4b3ccb8)), + frontend.Variable(uint64(0x0e1adf8b84437180)), + frontend.Variable(uint64(0x0d593a5e584af47b)), + frontend.Variable(uint64(0xa023d94c56e151c7)), + }, + { + frontend.Variable(uint64(0x49026cc3a4afc5a6)), + frontend.Variable(uint64(0xe06dff00ab25b91b)), + frontend.Variable(uint64(0x0ab38c561e8850ff)), + frontend.Variable(uint64(0x92c3c8275e105eeb)), + frontend.Variable(uint64(0xb65256e546889bd0)), + frontend.Variable(uint64(0x3c0468236ea142f6)), + frontend.Variable(uint64(0xee61766b889e18f2)), + frontend.Variable(uint64(0xa206f41b12c30415)), + frontend.Variable(uint64(0x02fe9d756c9f12d1)), + frontend.Variable(uint64(0xe9633210630cbf12)), + frontend.Variable(uint64(0x1ffea9fe85a0b0b1)), + }, + { + frontend.Variable(uint64(0x81d1ae8cc50240f3)), + frontend.Variable(uint64(0xf4c77a079a4607d7)), + frontend.Variable(uint64(0xed446b2315e3efc1)), + frontend.Variable(uint64(0x0b0a6b70915178c3)), + frontend.Variable(uint64(0xb11ff3e089f15d9a)), + frontend.Variable(uint64(0x1d4dba0b7ae9cc18)), + frontend.Variable(uint64(0x65d74e2f43b48d05)), + frontend.Variable(uint64(0xa2df8c6b8ae0804a)), + frontend.Variable(uint64(0xa4e6f0a8c33348a6)), + frontend.Variable(uint64(0xc0a26efc7be5669b)), + frontend.Variable(uint64(0xa6b6582c547d0d60)), + }, + { + frontend.Variable(uint64(0x84afc741f1c13213)), + frontend.Variable(uint64(0x2f8f43734fc906f3)), + frontend.Variable(uint64(0xde682d72da0a02d9)), + frontend.Variable(uint64(0x0bb005236adb9ef2)), + frontend.Variable(uint64(0x5bdf35c10a8b5624)), + frontend.Variable(uint64(0x0739a8a343950010)), + frontend.Variable(uint64(0x52f515f44785cfbc)), + frontend.Variable(uint64(0xcbaf4e5d82856c60)), + frontend.Variable(uint64(0xac9ea09074e3e150)), + frontend.Variable(uint64(0x8f0fa011a2035fb0)), + frontend.Variable(uint64(0x1a37905d8450904a)), + }, + { + frontend.Variable(uint64(0x3abeb80def61cc85)), + frontend.Variable(uint64(0x9d19c9dd4eac4133)), + frontend.Variable(uint64(0x075a652d9641a985)), + frontend.Variable(uint64(0x9daf69ae1b67e667)), + frontend.Variable(uint64(0x364f71da77920a18)), + frontend.Variable(uint64(0x50bd769f745c95b1)), + frontend.Variable(uint64(0xf223d1180dbbf3fc)), + frontend.Variable(uint64(0x2f885e584e04aa99)), + frontend.Variable(uint64(0xb69a0fa70aea684a)), + frontend.Variable(uint64(0x09584acaa6e062a0)), + frontend.Variable(uint64(0x0bc051640145b19b)), }, } diff --git a/poseidon/hash.go b/poseidon/hash.go index 62b7696..34514ce 100644 --- a/poseidon/hash.go +++ b/poseidon/hash.go @@ -8,11 +8,11 @@ import ( type Hash = [4]field.F type HashAPI struct { - fieldAPI frontend.API + fieldAPI field.FieldAPI } func NewHashAPI( - fieldAPI frontend.API, + fieldAPI field.FieldAPI, ) *HashAPI { return &HashAPI{ fieldAPI: fieldAPI, @@ -22,7 +22,7 @@ func NewHashAPI( func (h *HashAPI) SelectHash(bit frontend.Variable, leftHash, rightHash Hash) Hash { var returnHash Hash for i := 0; i < 4; i++ { - returnHash[i] = h.fieldAPI.Select(bit, leftHash[i], rightHash[i]).(field.F) + returnHash[i] = h.fieldAPI.Select(bit, leftHash[i], rightHash[i]) } return returnHash @@ -32,7 +32,7 @@ func (h *HashAPI) Lookup2Hash(b0 frontend.Variable, b1 frontend.Variable, h0, h1 var returnHash Hash for i := 0; i < 4; i++ { - returnHash[i] = h.fieldAPI.Lookup2(b0, b1, h0[i], h1[i], h2[i], h3[i]).(field.F) + returnHash[i] = h.fieldAPI.Lookup2(b0, b1, h0[i], h1[i], h2[i], h3[i]) } return returnHash @@ -47,7 +47,7 @@ func (h *HashAPI) AssertIsEqualHash(h1, h2 Hash) { func Uint64ArrayToHashArray(input [][]uint64) []Hash { var output []Hash for i := 0; i < len(input); i++ { - output = append(output, [4]field.F{field.NewFieldElement(input[i][0]), field.NewFieldElement(input[i][1]), field.NewFieldElement(input[i][2]), field.NewFieldElement(input[i][3])}) + output = append(output, [4]field.F{field.NewFieldConst(input[i][0]), field.NewFieldConst(input[i][1]), field.NewFieldConst(input[i][2]), field.NewFieldConst(input[i][3])}) } return output } diff --git a/poseidon/poseidon.go b/poseidon/poseidon.go index aaa369c..d7e47c8 100644 --- a/poseidon/poseidon.go +++ b/poseidon/poseidon.go @@ -18,11 +18,11 @@ type PoseidonStateExtension = [SPONGE_WIDTH]field.QuadraticExtension type PoseidonChip struct { api frontend.API `gnark:"-"` - fieldAPI frontend.API `gnark:"-"` + fieldAPI field.FieldAPI `gnark:"-"` qeAPI *field.QuadraticExtensionAPI `gnark:"-"` } -func NewPoseidonChip(api frontend.API, fieldAPI frontend.API, qeAPI *field.QuadraticExtensionAPI) *PoseidonChip { +func NewPoseidonChip(api frontend.API, fieldAPI field.FieldAPI, qeAPI *field.QuadraticExtensionAPI) *PoseidonChip { return &PoseidonChip{api: api, fieldAPI: fieldAPI, qeAPI: qeAPI} } @@ -86,7 +86,7 @@ func (c *PoseidonChip) PartialRounds(state PoseidonState, roundCounter *int) Pos for i := 0; i < N_PARTIAL_ROUNDS; i++ { state[0] = c.SBoxMonomial(state[0]) - state[0] = c.fieldAPI.Add(state[0], FAST_PARTIAL_ROUND_CONSTANTS[i]).(field.F) + state[0] = c.fieldAPI.Add(state[0], FAST_PARTIAL_ROUND_CONSTANTS[i]) state = c.MdsPartialLayerFast(state, i) } @@ -98,8 +98,8 @@ func (c *PoseidonChip) PartialRounds(state PoseidonState, roundCounter *int) Pos func (c *PoseidonChip) ConstantLayer(state PoseidonState, roundCounter *int) PoseidonState { for i := 0; i < 12; i++ { if i < SPONGE_WIDTH { - roundConstant := field.NewFieldElement(ALL_ROUND_CONSTANTS[i+SPONGE_WIDTH*(*roundCounter)]) - state[i] = c.fieldAPI.Add(state[i], roundConstant).(field.F) + roundConstant := ALL_ROUND_CONSTANTS[i+SPONGE_WIDTH*(*roundCounter)] + state[i] = c.fieldAPI.Add(state[i], roundConstant) } } return state @@ -108,7 +108,7 @@ func (c *PoseidonChip) ConstantLayer(state PoseidonState, roundCounter *int) Pos func (c *PoseidonChip) ConstantLayerExtension(state PoseidonStateExtension, roundCounter *int) PoseidonStateExtension { for i := 0; i < 12; i++ { if i < SPONGE_WIDTH { - roundConstant := c.qeAPI.FieldToQE(field.NewFieldElement(ALL_ROUND_CONSTANTS[i+SPONGE_WIDTH*(*roundCounter)])) + roundConstant := c.qeAPI.FieldToQE(ALL_ROUND_CONSTANTS[i+SPONGE_WIDTH*(*roundCounter)]) state[i] = c.qeAPI.AddExtension(state[i], roundConstant) } } @@ -119,7 +119,7 @@ func (c *PoseidonChip) SBoxMonomial(x field.F) field.F { x2 := c.fieldAPI.Mul(x, x) x4 := c.fieldAPI.Mul(x2, x2) x3 := c.fieldAPI.Mul(x, x2) - return c.fieldAPI.Mul(x3, x4).(field.F) + return c.fieldAPI.Mul(x3, x4) } func (c *PoseidonChip) SBoxMonomialExtension(x field.QuadraticExtension) field.QuadraticExtension { @@ -148,31 +148,31 @@ func (c *PoseidonChip) SBoxLayerExtension(state PoseidonStateExtension) Poseidon } func (c *PoseidonChip) MdsRowShf(r int, v [SPONGE_WIDTH]frontend.Variable) frontend.Variable { - res := frontend.Variable(0) + res := ZERO_VAR for i := 0; i < 12; i++ { if i < SPONGE_WIDTH { - res1 := c.api.Mul(v[(i+r)%SPONGE_WIDTH], frontend.Variable(MDS_MATRIX_CIRC[i])) + res1 := c.api.Mul(v[(i+r)%SPONGE_WIDTH], MDS_MATRIX_CIRC_VARS[i]) res = c.api.Add(res, res1) } } - res = c.api.Add(res, c.api.Mul(v[r], MDS_MATRIX_DIAG[r])) + res = c.api.Add(res, c.api.Mul(v[r], MDS_MATRIX_DIAG_VARS[r])) return res } func (c *PoseidonChip) MdsRowShfExtension(r int, v [SPONGE_WIDTH]field.QuadraticExtension) field.QuadraticExtension { - res := c.qeAPI.FieldToQE(field.NewFieldElement(0)) + res := c.qeAPI.FieldToQE(field.ZERO_F) for i := 0; i < 12; i++ { if i < SPONGE_WIDTH { - matrixVal := c.qeAPI.FieldToQE(field.NewFieldElement(MDS_MATRIX_CIRC[i])) + matrixVal := c.qeAPI.FieldToQE(MDS_MATRIX_CIRC[i]) res1 := c.qeAPI.MulExtension(v[(i+r)%SPONGE_WIDTH], matrixVal) res = c.qeAPI.AddExtension(res, res1) } } - matrixVal := c.qeAPI.FieldToQE(field.NewFieldElement(MDS_MATRIX_DIAG[r])) + matrixVal := c.qeAPI.FieldToQE(MDS_MATRIX_DIAG[r]) res = c.qeAPI.AddExtension(res, c.qeAPI.MulExtension(v[r], matrixVal)) return res } @@ -180,19 +180,21 @@ func (c *PoseidonChip) MdsRowShfExtension(r int, v [SPONGE_WIDTH]field.Quadratic func (c *PoseidonChip) MdsLayer(state_ PoseidonState) PoseidonState { var result PoseidonState for i := 0; i < SPONGE_WIDTH; i++ { - result[i] = field.NewFieldElement(0) + result[i] = field.ZERO_F } var state [SPONGE_WIDTH]frontend.Variable for i := 0; i < SPONGE_WIDTH; i++ { - state[i] = c.api.FromBinary(c.fieldAPI.ToBinary(state_[i])...) + reducedState := c.fieldAPI.Reduce(state_[i]) + //state[i] = c.api.FromBinary(c.fieldAPI.ToBits(reducedState)...) + state[i] = reducedState.Limbs[0] } for r := 0; r < 12; r++ { if r < SPONGE_WIDTH { sum := c.MdsRowShf(r, state) bits := c.api.ToBinary(sum) - result[r] = c.fieldAPI.FromBinary(bits).(field.F) + result[r] = c.fieldAPI.FromBits(bits...) } } @@ -215,7 +217,7 @@ func (c *PoseidonChip) MdsLayerExtension(state_ PoseidonStateExtension) Poseidon func (c *PoseidonChip) PartialFirstConstantLayer(state PoseidonState) PoseidonState { for i := 0; i < 12; i++ { if i < SPONGE_WIDTH { - state[i] = c.fieldAPI.Add(state[i], field.NewFieldElement(FAST_PARTIAL_FIRST_ROUND_CONSTANT[i])).(field.F) + state[i] = c.fieldAPI.Add(state[i], FAST_PARTIAL_FIRST_ROUND_CONSTANT[i]) } } return state @@ -224,7 +226,7 @@ func (c *PoseidonChip) PartialFirstConstantLayer(state PoseidonState) PoseidonSt func (c *PoseidonChip) PartialFirstConstantLayerExtension(state PoseidonStateExtension) PoseidonStateExtension { for i := 0; i < 12; i++ { if i < SPONGE_WIDTH { - state[i] = c.qeAPI.AddExtension(state[i], c.qeAPI.FieldToQE(field.NewFieldElement(FAST_PARTIAL_FIRST_ROUND_CONSTANT[i]))) + state[i] = c.qeAPI.AddExtension(state[i], c.qeAPI.FieldToQE(FAST_PARTIAL_FIRST_ROUND_CONSTANT[i])) } } return state @@ -233,7 +235,7 @@ func (c *PoseidonChip) PartialFirstConstantLayerExtension(state PoseidonStateExt func (c *PoseidonChip) MdsPartialLayerInit(state PoseidonState) PoseidonState { var result PoseidonState for i := 0; i < 12; i++ { - result[i] = field.NewFieldElement(0) + result[i] = field.ZERO_F } result[0] = state[0] @@ -242,8 +244,8 @@ func (c *PoseidonChip) MdsPartialLayerInit(state PoseidonState) PoseidonState { if r < SPONGE_WIDTH { for d := 1; d < 12; d++ { if d < SPONGE_WIDTH { - t := field.NewFieldElement(FAST_PARTIAL_ROUND_INITIAL_MATRIX[r-1][d-1]) - result[d] = c.fieldAPI.Add(result[d], c.fieldAPI.Mul(state[r], t)).(field.F) + t := FAST_PARTIAL_ROUND_INITIAL_MATRIX[r-1][d-1] + result[d] = c.fieldAPI.Add(result[d], c.fieldAPI.Mul(state[r], t)) } } } @@ -255,7 +257,7 @@ func (c *PoseidonChip) MdsPartialLayerInit(state PoseidonState) PoseidonState { func (c *PoseidonChip) MdsPartialLayerInitExtension(state PoseidonStateExtension) PoseidonStateExtension { var result PoseidonStateExtension for i := 0; i < 12; i++ { - result[i] = c.qeAPI.FieldToQE(field.NewFieldElement(0)) + result[i] = c.qeAPI.FieldToQE(field.ZERO_F) } result[0] = state[0] @@ -264,7 +266,7 @@ func (c *PoseidonChip) MdsPartialLayerInitExtension(state PoseidonStateExtension if r < SPONGE_WIDTH { for d := 1; d < 12; d++ { if d < SPONGE_WIDTH { - t := c.qeAPI.FieldToQE(field.NewFieldElement(FAST_PARTIAL_ROUND_INITIAL_MATRIX[r-1][d-1])) + t := c.qeAPI.FieldToQE(FAST_PARTIAL_ROUND_INITIAL_MATRIX[r-1][d-1]) result[d] = c.qeAPI.AddExtension(result[d], c.qeAPI.MulExtension(state[r], t)) } } @@ -275,31 +277,35 @@ func (c *PoseidonChip) MdsPartialLayerInitExtension(state PoseidonStateExtension } func (c *PoseidonChip) MdsPartialLayerFast(state PoseidonState, r int) PoseidonState { - dSum := frontend.Variable(0) + dSum := ZERO_VAR for i := 1; i < 12; i++ { if i < SPONGE_WIDTH { - t := frontend.Variable(FAST_PARTIAL_ROUND_W_HATS[r][i-1]) - si := c.api.FromBinary(c.fieldAPI.ToBinary(state[i])...) + t := FAST_PARTIAL_ROUND_W_HATS_VARS[r][i-1] + reducedState := c.fieldAPI.Reduce(state[i]) + //si := c.api.FromBinary(c.fieldAPI.ToBits(reducedState)...) + si := reducedState.Limbs[0] dSum = c.api.Add(dSum, c.api.Mul(si, t)) } } - s0 := c.api.FromBinary(c.fieldAPI.ToBinary(state[0])...) - mds0to0 := frontend.Variable(MDS_MATRIX_CIRC[0] + MDS_MATRIX_DIAG[0]) - dSum = c.api.Add(dSum, c.api.Mul(s0, mds0to0)) - d := c.fieldAPI.FromBinary(c.api.ToBinary(dSum)) + reducedState := c.fieldAPI.Reduce(state[0]) + //s0 := c.api.FromBinary(c.fieldAPI.ToBits(reducedState)...) + s0 := reducedState.Limbs[0] + dSum = c.api.Add(dSum, c.api.Mul(s0, MDS0TO0_VAR)) + d := c.fieldAPI.FromBits(c.api.ToBinary(dSum)...) + //d := c.fieldAPI.NewElement(dSum) var result PoseidonState for i := 0; i < SPONGE_WIDTH; i++ { - result[i] = field.NewFieldElement(0) + result[i] = field.ZERO_F } - result[0] = d.(field.F) + result[0] = d for i := 1; i < 12; i++ { if i < SPONGE_WIDTH { - t := field.NewFieldElement(FAST_PARTIAL_ROUND_VS[r][i-1]) - result[i] = c.fieldAPI.Add(state[i], c.fieldAPI.Mul(state[0], t)).(field.F) + t := FAST_PARTIAL_ROUND_VS[r][i-1] + result[i] = c.fieldAPI.Add(state[i], c.fieldAPI.Mul(state[0], t)) } } @@ -308,11 +314,11 @@ func (c *PoseidonChip) MdsPartialLayerFast(state PoseidonState, r int) PoseidonS func (c *PoseidonChip) MdsPartialLayerFastExtension(state PoseidonStateExtension, r int) PoseidonStateExtension { s0 := state[0] - mds0to0 := c.qeAPI.FieldToQE(field.NewFieldElement(MDS_MATRIX_CIRC[0] + MDS_MATRIX_DIAG[0])) + mds0to0 := c.qeAPI.FieldToQE(MDS0TO0) d := c.qeAPI.MulExtension(s0, mds0to0) for i := 1; i < 12; i++ { if i < SPONGE_WIDTH { - t := c.qeAPI.FieldToQE(field.NewFieldElement(FAST_PARTIAL_ROUND_W_HATS[r][i-1])) + t := c.qeAPI.FieldToQE(FAST_PARTIAL_ROUND_W_HATS[r][i-1]) d = c.qeAPI.AddExtension(d, c.qeAPI.MulExtension(state[i], t)) } } @@ -321,7 +327,7 @@ func (c *PoseidonChip) MdsPartialLayerFastExtension(state PoseidonStateExtension result[0] = d for i := 1; i < 12; i++ { if i < SPONGE_WIDTH { - t := c.qeAPI.FieldToQE(field.NewFieldElement(FAST_PARTIAL_ROUND_VS[r][i-1])) + t := c.qeAPI.FieldToQE(FAST_PARTIAL_ROUND_VS[r][i-1]) result[i] = c.qeAPI.AddExtension(c.qeAPI.MulExtension(state[0], t), state[i]) } } diff --git a/poseidon/poseidon_test.go b/poseidon/poseidon_test.go index e3c32e2..c85a526 100644 --- a/poseidon/poseidon_test.go +++ b/poseidon/poseidon_test.go @@ -18,11 +18,11 @@ type TestPoseidonCircuit struct { func (circuit *TestPoseidonCircuit) Define(api frontend.API) error { goldilocksApi := field.NewFieldAPI(api) - qeAPI := field.NewQuadraticExtensionAPI(goldilocksApi, 3) + qeAPI := field.NewQuadraticExtensionAPI(api, goldilocksApi, 3) var input PoseidonState for i := 0; i < 12; i++ { - input[i] = goldilocksApi.FromBinary(api.ToBinary(circuit.In[i], 64)).(field.F) + input[i] = goldilocksApi.FromBits(api.ToBinary(circuit.In[i], 64)...) } poseidonChip := NewPoseidonChip(api, goldilocksApi, qeAPI) @@ -31,7 +31,7 @@ func (circuit *TestPoseidonCircuit) Define(api frontend.API) error { for i := 0; i < 12; i++ { goldilocksApi.AssertIsEqual( output[i], - goldilocksApi.FromBinary(api.ToBinary(circuit.Out[i])).(field.F), + goldilocksApi.FromBits(api.ToBinary(circuit.Out[i])...), ) } diff --git a/poseidon/public_inputs_hash_test.go b/poseidon/public_inputs_hash_test.go index 777d85e..c27d70f 100644 --- a/poseidon/public_inputs_hash_test.go +++ b/poseidon/public_inputs_hash_test.go @@ -23,7 +23,7 @@ func (circuit *TestPublicInputsHashCircuit) Define(api frontend.API) error { // BN254 -> Binary(64) -> F var input [3]field.F for i := 0; i < 3; i++ { - input[i] = fieldAPI.FromBinary(api.ToBinary(circuit.In[i], 64)).(field.F) + input[i] = fieldAPI.FromBits(api.ToBinary(circuit.In[i], 64)...) } poseidonChip := &PoseidonChip{api: api, fieldAPI: fieldAPI} @@ -33,7 +33,7 @@ func (circuit *TestPublicInputsHashCircuit) Define(api frontend.API) error { for i := 0; i < 4; i++ { fieldAPI.AssertIsEqual( output[i], - fieldAPI.FromBinary(api.ToBinary(circuit.Out[i])).(field.F), + fieldAPI.FromBits(api.ToBinary(circuit.Out[i])...), ) } diff --git a/utils/utils.go b/utils/utils.go index abeb577..26b0e60 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -28,19 +28,19 @@ func StrArrayToFrontendVariableArray(input []string) []frontend.Variable { func Uint64ArrayToFArray(input []uint64) []field.F { var output []field.F for i := 0; i < len(input); i++ { - output = append(output, field.NewFieldElement(input[i])) + output = append(output, field.NewFieldConst(input[i])) } return output } func Uint64ArrayToQuadraticExtension(input []uint64) field.QuadraticExtension { - return [2]field.F{field.NewFieldElement(input[0]), field.NewFieldElement(input[1])} + return [2]field.F{field.NewFieldConst(input[0]), field.NewFieldConst(input[1])} } func Uint64ArrayToQuadraticExtensionArray(input [][]uint64) []field.QuadraticExtension { var output []field.QuadraticExtension for i := 0; i < len(input); i++ { - output = append(output, [2]field.F{field.NewFieldElement(input[i][0]), field.NewFieldElement(input[i][1])}) + output = append(output, [2]field.F{field.NewFieldConst(input[i][0]), field.NewFieldConst(input[i][1])}) } return output } diff --git a/verifier/common/types.go b/verifier/common/types.go index c9e9669..f1069fa 100644 --- a/verifier/common/types.go +++ b/verifier/common/types.go @@ -7,40 +7,68 @@ import ( type MerkleCap = []poseidon.Hash +func NewMerkleCap(capHeight uint64) MerkleCap { + return make([]poseidon.Hash, 1< }", + "CosetInterpolationGate { subgroup_bits: 4, degree: 6, barycentric_weights: [17293822565076172801, 18374686475376656385, 18446744069413535745, 281474976645120, 17592186044416, 256, 18446744000695107601, 18446744065119617025, 1152921504338411520, 72057594037927936, 1048576, 18446462594437939201, 18446726477228539905, 18446744069414584065, 68719476720, 4294967296], _phantom: PhantomData }", + "PoseidonGate(PhantomData)" + ], + "selectors_info": { + "selector_indices": [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 2, + 2 + ], + "groups": [ + { + "start": 0, + "end": 6 + }, + { + "start": 6, + "end": 10 + }, + { + "start": 10, + "end": 12 + } + ] + }, + "quotient_degree_factor": 8, + "num_gate_constraints": 123, + "num_constants": 5, + "num_public_inputs": 0, + "k_is": [ + 1, + 7, + 49, + 343, + 2401, + 16807, + 117649, + 823543, + 5764801, + 40353607, + 282475249, + 1977326743, + 13841287201, + 96889010407, + 678223072849, + 4747561509943, + 33232930569601, + 232630513987207, + 1628413597910449, + 11398895185373143, + 79792266297612001, + 558545864083284007, + 3909821048582988049, + 8922003270666332022, + 7113790686420571191, + 12903046666114829695, + 16534350385145470581, + 5059988279530788141, + 16973173887300932666, + 8131752794619022736, + 1582037354089406189, + 11074261478625843323, + 3732854072722565977, + 7683234439643377518, + 16889152938674473984, + 7543606154233811962, + 15911754940807515092, + 701820169165099718, + 4912741184155698026, + 15942444219675301861, + 916645121239607101, + 6416515848677249707, + 8022122801911579307, + 814627405137302186, + 5702391835961115302, + 3023254712898638472, + 2716038920875884983, + 565528376716610560, + 3958698637016273920, + 9264146389699333119, + 9508792519651578870, + 11221315429317299127, + 4762231727562756605, + 14888878023524711914, + 11988425817600061793, + 10132004445542095267, + 15583798910550913906, + 16852872026783475737, + 7289639770996824233, + 14133990258148600989, + 6704211459967285318, + 10035992080941828584, + 14911712358349047125, + 12148266161370408270, + 11250886851934520606, + 4969231685883306958, + 16337877731768564385, + 3684679705892444769, + 7346013871832529062, + 14528608963998534792, + 9466542400916821939, + 10925564598174000610, + 2691975909559666986, + 397087297503084581, + 2779611082521592067, + 1010533508236560148, + 7073734557655921036, + 12622653764762278610, + 14571600075677612986, + 9767480182670369297 + ], + "num_partial_products": 9 +} diff --git a/verifier/data/recursive_very_small/proof_with_public_inputs.json b/verifier/data/recursive_very_small/proof_with_public_inputs.json new file mode 100644 index 0000000..22bcadd --- /dev/null +++ b/verifier/data/recursive_very_small/proof_with_public_inputs.json @@ -0,0 +1,2373 @@ +{ + "proof": { + "wires_cap": [ + { + "elements": [ + 12334095634066844994, + 14227633352728447429, + 6103889101133473788, + 1003064334944152363 + ] + }, + { + "elements": [ + 18440682293096852497, + 2118374406835445242, + 10507815786639730171, + 8341948593122526063 + ] + }, + { + "elements": [ + 2191160625594182418, + 14797469980086774670, + 16634847388764763583, + 3150921351995183187 + ] + }, + { + "elements": [ + 11013695617950736123, + 1925707614760831170, + 9943516652172558193, + 13214208420429991547 + ] + }, + { + "elements": [ + 16655861665685665663, + 17911111877814716898, + 18210648302049081967, + 2532092071803701996 + ] + }, + { + "elements": [ + 3633005177982771801, + 6345522742586399052, + 12331057605355726839, + 16516029736816764408 + ] + }, + { + "elements": [ + 2718133300577227921, + 4645033028207753108, + 11490110128696906593, + 13263505143432585983 + ] + }, + { + "elements": [ + 9748166535608611519, + 12889634671598828817, + 6903478187159018156, + 10117864128677814540 + ] + }, + { + "elements": [ + 4099872838564919051, + 5222774524044878357, + 14031115904422242312, + 4181409933340121937 + ] + }, + { + "elements": [ + 6233307680444342479, + 1269100060160438759, + 5146234184487523659, + 8843756859675129680 + ] + }, + { + "elements": [ + 11099204175334531570, + 12761158501973781953, + 3070845207867449486, + 16297911523476747635 + ] + }, + { + "elements": [ + 15202457144563398896, + 374376598859675476, + 8930422280607035980, + 15764519061028184384 + ] + }, + { + "elements": [ + 15532260345036802677, + 2339983906668405172, + 11540869631888000997, + 124741207597492564 + ] + }, + { + "elements": [ + 4438450555521169113, + 2617250660069023523, + 13458010234552956160, + 11080205339655953043 + ] + }, + { + "elements": [ + 4084717581188875334, + 18075265620326937804, + 7619677984012323368, + 11176822697197193222 + ] + }, + { + "elements": [ + 13538518804393572756, + 10368105092947348112, + 265877718725176572, + 7349001163777984302 + ] + } + ], + "plonk_zs_partial_products_cap": [ + { + "elements": [ + 918878037767708063, + 13726044163037464112, + 2058227012615435066, + 2267262151883184701 + ] + }, + { + "elements": [ + 8323942925490963872, + 3046756618229577771, + 12516076915398629048, + 6908684708022298065 + ] + }, + { + "elements": [ + 1909011082470493590, + 17483206374421108498, + 314757761527004793, + 11254333792734441461 + ] + }, + { + "elements": [ + 14502774564921129826, + 8367639294359517072, + 292698889846232570, + 14784793094325636821 + ] + }, + { + "elements": [ + 7432208631432161516, + 14502020601209084456, + 4932684329312070237, + 1309148601775480761 + ] + }, + { + "elements": [ + 13285263065389168501, + 16338978992551193717, + 14451848312599187935, + 10503435963295764486 + ] + }, + { + "elements": [ + 6552069765736501481, + 936148012209989856, + 9686860069207147752, + 16678176088751623278 + ] + }, + { + "elements": [ + 6481996946784423960, + 1884172143275992499, + 12581969537024166358, + 17360398964286614598 + ] + }, + { + "elements": [ + 2418722198014354807, + 11784980758796483770, + 10407278984127028825, + 12073585852309789653 + ] + }, + { + "elements": [ + 8053758877435585367, + 10210534464562680420, + 17204796367484216983, + 16902550723055849904 + ] + }, + { + "elements": [ + 1765986283362459670, + 8375038835266792502, + 10054438799539119876, + 2159395096050412081 + ] + }, + { + "elements": [ + 150780603255498786, + 12043154170567734701, + 14978570947228005063, + 14035963457555594147 + ] + }, + { + "elements": [ + 7268563792257419905, + 13434718422573381535, + 16116870522910004366, + 6055241861762182018 + ] + }, + { + "elements": [ + 12372990793962495451, + 4538193400397457385, + 5702475581662162331, + 18268331606761205988 + ] + }, + { + "elements": [ + 8368983455152969087, + 6015629564954170054, + 8098474120964689503, + 8898578743365218754 + ] + }, + { + "elements": [ + 18253217556855550120, + 8526533489335929378, + 10135459049591683413, + 16990601534284366689 + ] + } + ], + "quotient_polys_cap": [ + { + "elements": [ + 8753054719098117640, + 11097910416282184674, + 11475176574889731050, + 6451230164773796330 + ] + }, + { + "elements": [ + 7750632604322818654, + 1220583849698478311, + 3749330454017989545, + 9606089727024868670 + ] + }, + { + "elements": [ + 13859121621807351997, + 13696419459924905437, + 582182617442088528, + 8612793884179482652 + ] + }, + { + "elements": [ + 9552251686227494197, + 3538287580491141039, + 18270962563830691996, + 4415158233962474004 + ] + }, + { + "elements": [ + 15309229149050152966, + 12804169888196156076, + 14728515107566233669, + 4256709184045367321 + ] + }, + { + "elements": [ + 3439079429359331250, + 4082863963798765243, + 9189250644546269108, + 8820961182445856528 + ] + }, + { + "elements": [ + 8867412764754316949, + 5388979674626247080, + 1592400929583179137, + 746574348375800917 + ] + }, + { + "elements": [ + 6772946950622254859, + 17816217563643951563, + 18159633598139212474, + 15826389678975000951 + ] + }, + { + "elements": [ + 15722941877888484599, + 8669279998742478683, + 1494650288578664107, + 701110195196831825 + ] + }, + { + "elements": [ + 10881199429129884145, + 11576452894666390580, + 7108738201202164800, + 10843281942596657602 + ] + }, + { + "elements": [ + 8417996098327831929, + 737756061401881496, + 4202255534811650431, + 11022826899207307587 + ] + }, + { + "elements": [ + 3267923927120186518, + 11760929797688161038, + 477033963728051458, + 12080589544610708213 + ] + }, + { + "elements": [ + 13232884707662161694, + 17559109516772498490, + 9537995906367411173, + 9860637751643058727 + ] + }, + { + "elements": [ + 7380181609556827419, + 14986840756190202372, + 16601819549029139286, + 4460003450484559802 + ] + }, + { + "elements": [ + 10510019366059743018, + 10190697750956876212, + 14750290868573894976, + 13219473933214614682 + ] + }, + { + "elements": [ + 12808783404568349123, + 11151329615257252504, + 10751771595141702243, + 7001648365158800144 + ] + } + ], + "openings": { + "constants": [ + [ + 8383172984531297946, + 14927499296985358873 + ], + [ + 5614087021749090647, + 11111301793879364889 + ], + [ + 6632828105345302518, + 17643964833822741401 + ], + [ + 13712502242228286361, + 3839388664343341180 + ], + [ + 15473886235947543320, + 8812990933130463133 + ] + ], + "plonk_sigmas": [ + [ + 8539669039886665923, + 11251897154207393802 + ], + [ + 824682173972626430, + 17778446114706519922 + ], + [ + 10428970969056046374, + 1556374925437781266 + ], + [ + 9852898611876701768, + 8372700811611495083 + ], + [ + 792777070134695969, + 13553001819719041665 + ], + [ + 15016414016646007576, + 5805581757864651293 + ], + [ + 7120929437343157614, + 17758322670871762205 + ], + [ + 4359774862101216882, + 17641380733567776165 + ], + [ + 7224835622717542820, + 572057550049615500 + ], + [ + 10626243105595827560, + 6634862179303816267 + ], + [ + 9388384965515977212, + 14657607592267956777 + ], + [ + 3865030583183961637, + 18215654585745383059 + ], + [ + 10366414691775050028, + 7019671613214937021 + ], + [ + 1316219541125734697, + 14462405028254799092 + ], + [ + 12377141933893537386, + 13131921896301465292 + ], + [ + 16397557922870533877, + 7895694149085655243 + ], + [ + 14018025690920602002, + 8773596243883967482 + ], + [ + 8294605481443730281, + 17032591742551763188 + ], + [ + 13131529948383860040, + 5337187862705740125 + ], + [ + 6123322198671014375, + 11455240134629705301 + ], + [ + 2475036980847752278, + 8326859647375399254 + ], + [ + 11524156433908866744, + 12761584676704743945 + ], + [ + 233796669093337040, + 4808881135643575268 + ], + [ + 18392370888470961580, + 7753512291432326951 + ], + [ + 13543597711407334595, + 4015095312001789031 + ], + [ + 16977289081746989257, + 14281576312469525701 + ], + [ + 4635375014564160305, + 15088432020483267967 + ], + [ + 11123180160475250764, + 12578836845460887530 + ], + [ + 351938017201429203, + 3613920340609092401 + ], + [ + 6154744304739285024, + 4259515548504614512 + ], + [ + 7908162473770847221, + 7294286310491807102 + ], + [ + 11693619780416902325, + 5761573872955169632 + ], + [ + 533039116163287811, + 17727627221002277503 + ], + [ + 12880334938504837708, + 9889558476215960486 + ], + [ + 5400537240690610553, + 9701584526296322425 + ], + [ + 14155470050153502298, + 10675808146289074027 + ], + [ + 9267622398572687865, + 1212686276604066596 + ], + [ + 17022127433012442171, + 9997862795170234371 + ], + [ + 8640847757910947280, + 18361942871799337854 + ], + [ + 35482384131766244, + 11560937340268184455 + ], + [ + 547196346608143501, + 9573346521455598197 + ], + [ + 5003631434910049910, + 15838329650633266326 + ], + [ + 14201037711983417587, + 477555042452342582 + ], + [ + 15050675884557386424, + 6204117643080879384 + ], + [ + 15597861400621374976, + 6281701718544984913 + ], + [ + 836189037311089424, + 10737727812285531957 + ], + [ + 7456230458943264798, + 9068419539293661101 + ], + [ + 8263350988015319825, + 4097527724690142756 + ], + [ + 18282452974858585978, + 4848948248321912143 + ], + [ + 13655674428261506295, + 10687478600071632451 + ], + [ + 9668857174788104636, + 9252579575696210573 + ], + [ + 15053588506967228592, + 11235222310019050194 + ], + [ + 15131995769232269802, + 13449322747997344855 + ], + [ + 7967018180509684133, + 2563478495980888213 + ], + [ + 16665883641551699536, + 10423533882951671157 + ], + [ + 13019352497364348684, + 2259545069467663329 + ], + [ + 5876780429260542695, + 12917270923539807861 + ], + [ + 8229480802646918137, + 3721722297522874160 + ], + [ + 16067037770759009995, + 8320696748753743948 + ], + [ + 2272324267178987780, + 5892001986889931581 + ], + [ + 15204103736352177604, + 5683470394157323445 + ], + [ + 962550187387281461, + 15620617541982683312 + ], + [ + 11837139441107312303, + 2919823947501335488 + ], + [ + 10984583126622575650, + 17373853648211570594 + ], + [ + 13260630362001419494, + 12235529954502266831 + ], + [ + 3769706755956562660, + 7564396526210513720 + ], + [ + 1062046157921905958, + 7231216358207676405 + ], + [ + 17871933292991686988, + 691255923194113399 + ], + [ + 10982340073192428156, + 16086923882798698699 + ], + [ + 15376489494647691793, + 13755685348004316323 + ], + [ + 4834058222671943506, + 18411745889401915996 + ], + [ + 9187292647752413014, + 10641121807263648645 + ], + [ + 16694037367463581469, + 1538073772395362608 + ], + [ + 14887850812528022013, + 15525711882845461581 + ], + [ + 6925452782078124945, + 4721080960492786990 + ], + [ + 9125543886534990856, + 5024497113844150457 + ], + [ + 6070312726582827498, + 2688796633581348646 + ], + [ + 5511224755926962442, + 17742750736095351603 + ], + [ + 7205606179555865051, + 16152303825762873406 + ], + [ + 13545755118061886715, + 2385662363852607916 + ] + ], + "wires": [ + [ + 6565725254271168867, + 230260260958740155 + ], + [ + 11313579166707903568, + 7598387878627018131 + ], + [ + 1756878619987639464, + 11711834163401326390 + ], + [ + 9911650827380412843, + 5441835109668209155 + ], + [ + 18161924946160088110, + 12233946194679177625 + ], + [ + 294583886642989709, + 17450889308223975504 + ], + [ + 7245061135637174928, + 3400564178069756322 + ], + [ + 3092910035965438351, + 6672139352070192386 + ], + [ + 4057249738782199527, + 1799257348891975251 + ], + [ + 2535689618454047855, + 14980692417420122729 + ], + [ + 9208647559972155927, + 5129157280785134496 + ], + [ + 3242534770941472851, + 17428002214466344026 + ], + [ + 3776335095843194291, + 15713245979289910660 + ], + [ + 2964035982218122042, + 18284682611968372321 + ], + [ + 9251057161817725095, + 11132234726872609532 + ], + [ + 4282856589210412690, + 5716727904670436243 + ], + [ + 591511981672179687, + 14753932598142976948 + ], + [ + 4890455922089106193, + 4045946515471918299 + ], + [ + 10397886828484620249, + 11190542034040753220 + ], + [ + 10777449615071636314, + 1952493154631644199 + ], + [ + 11765220003305045374, + 16159785461376093093 + ], + [ + 4674433148585164242, + 14417092772710386107 + ], + [ + 6351926523684575426, + 5590279498100153438 + ], + [ + 2955853758258824663, + 1682583828188464871 + ], + [ + 17551763022057463786, + 2275331841706493865 + ], + [ + 3834157178191505184, + 12788850957004024008 + ], + [ + 13509209381567776928, + 6533029673502852861 + ], + [ + 16753588040061360491, + 15594197771436985324 + ], + [ + 566614358032371046, + 6740883974281913879 + ], + [ + 453533323251872722, + 5343821935422630446 + ], + [ + 13828050203583443962, + 6232996472384536543 + ], + [ + 4985449662411107858, + 6982310052464896990 + ], + [ + 4861838619993966669, + 17793540132592198898 + ], + [ + 6008775387514534118, + 16069784820738294802 + ], + [ + 1685292375086235699, + 6679683856409258790 + ], + [ + 9102952331569240765, + 8418159236353852654 + ], + [ + 278529126310692935, + 9858042776408488899 + ], + [ + 3956695959941706365, + 14061875295595714162 + ], + [ + 16344294396065897182, + 1096010376911896223 + ], + [ + 12631642024464385420, + 13298890610180741437 + ], + [ + 5532876350123297165, + 11085842348826598478 + ], + [ + 13422525697029954414, + 10861004100698280653 + ], + [ + 7061448477760602164, + 3271890244641455553 + ], + [ + 8435096852606790614, + 8544661966182109731 + ], + [ + 5068889163197133971, + 15630596107071438575 + ], + [ + 16147741138270441655, + 10585834427685349274 + ], + [ + 8628341933533537422, + 7481503370535607132 + ], + [ + 5048856119136081298, + 669519990736753211 + ], + [ + 17508241833574395569, + 6192281135974237356 + ], + [ + 10702629253229265275, + 16192401195462709944 + ], + [ + 7778533658113693829, + 6423853447394638234 + ], + [ + 4243315527847149591, + 7675401109292935590 + ], + [ + 18387338327813044640, + 2955046471396339199 + ], + [ + 8458330624811453673, + 4239991564092892361 + ], + [ + 1156156140008704910, + 17373830842807907213 + ], + [ + 12096176201570722872, + 17874172846741874770 + ], + [ + 9286343112755120189, + 15703024798121772255 + ], + [ + 15578517416924394407, + 5452331584888582624 + ], + [ + 3981754657596928979, + 10703120883055699412 + ], + [ + 9516184086432863921, + 7457742154385170685 + ], + [ + 5246915855738771862, + 12328167375997269624 + ], + [ + 5636349192349012248, + 3509361610558290447 + ], + [ + 10955489062675295808, + 10805094412782355010 + ], + [ + 14875707316883598825, + 6231083638762761076 + ], + [ + 6506927538306637989, + 10497541629616536466 + ], + [ + 1057169009008928238, + 15683913306611892758 + ], + [ + 3816855586776245401, + 10797531915774791902 + ], + [ + 13980463973152144309, + 9505954685470181435 + ], + [ + 209278731945468340, + 2044663437883627987 + ], + [ + 11547333949428297736, + 12627730544047182084 + ], + [ + 16426798291829536245, + 1286575435860104158 + ], + [ + 1556416083496710858, + 11514801482661462730 + ], + [ + 5199526155835548432, + 5098658253894043900 + ], + [ + 4444350227225136112, + 2058123763350472436 + ], + [ + 15068464581925852666, + 2212007639459513953 + ], + [ + 9696244256211597783, + 888790688244544229 + ], + [ + 10102677872216113681, + 1022308434060844405 + ], + [ + 6246119047101474224, + 7350701730634234330 + ], + [ + 12484389666895786765, + 14469016421989326022 + ], + [ + 11957154341119772163, + 8086021481777273773 + ], + [ + 1356359171443350695, + 15113648153282177146 + ], + [ + 886775757488582744, + 6404726839817122286 + ], + [ + 9407114222722970416, + 10927134603287138070 + ], + [ + 4011166848141612493, + 4161341633053720873 + ], + [ + 16250092443058754145, + 14139997207956489711 + ], + [ + 3061776239467925524, + 12811774511281933109 + ], + [ + 3317798058680445916, + 1147448419586999295 + ], + [ + 17010610668195338041, + 470707002196618692 + ], + [ + 14268243858970724515, + 12322561589349285489 + ], + [ + 17380584068644994510, + 14615835916167337790 + ], + [ + 12683366297090641574, + 1109715368868143047 + ], + [ + 10462176589882161163, + 73066428630095106 + ], + [ + 8938160039251444606, + 12204128283965106147 + ], + [ + 7406952167472144916, + 12739986242234482509 + ], + [ + 10529891497746833742, + 8009559701716610976 + ], + [ + 4970783211430324957, + 7969965057095778847 + ], + [ + 7576677942238652096, + 8959681961927425358 + ], + [ + 4514936318681672597, + 15697536745373718185 + ], + [ + 14926106790285166957, + 16936876276861436148 + ], + [ + 17412136410870997645, + 15203475910318976950 + ], + [ + 8846534169097419573, + 11130234329930572703 + ], + [ + 17992370741507659824, + 16356060206030236751 + ], + [ + 13039248492340734600, + 5234822977373851327 + ], + [ + 9696725151734401803, + 8371540469659368374 + ], + [ + 6934893411912192513, + 3056053316840001387 + ], + [ + 5357998090027421051, + 17949102534820512066 + ], + [ + 12458353087864929806, + 1176463892690065877 + ], + [ + 9679231717887701074, + 2102188533647431303 + ], + [ + 4711451965962644899, + 15980710182235310868 + ], + [ + 11110746118744923980, + 17294273220112851635 + ], + [ + 1095938557815203828, + 7562067722511429503 + ], + [ + 18119564271326737689, + 5552694991598763652 + ], + [ + 6919286124684742249, + 13239719998195608992 + ], + [ + 16283373767227142852, + 8580771740227250494 + ], + [ + 11933029829411445548, + 130684932237671161 + ], + [ + 8046720108091127962, + 9813869295816212109 + ], + [ + 17160246938083598139, + 17880477831858343828 + ], + [ + 3936668134777655984, + 4000752262000658169 + ], + [ + 1601489901443047829, + 2553319886367038389 + ], + [ + 13668013076958082215, + 6658537604620360929 + ], + [ + 4968696422478387107, + 5925180687133900163 + ], + [ + 12426956412228745487, + 18231804886261311784 + ], + [ + 3373582062536515170, + 13906264661181140255 + ], + [ + 11662370838595504606, + 11609068466465320205 + ], + [ + 6163264476470505164, + 7657981178233577201 + ], + [ + 7748478014206268690, + 4358102315326618194 + ], + [ + 10210468491714994308, + 13417288406718042079 + ], + [ + 16430765831868101873, + 13160956594258515942 + ], + [ + 10412698316835829714, + 12060735787051148048 + ], + [ + 8206471017177734525, + 5970859744809158500 + ], + [ + 785871493535067, + 16653625095906304158 + ], + [ + 4145755406208901818, + 2353797438163361343 + ], + [ + 2526423612259436286, + 7292773932871876967 + ], + [ + 13545910013773543121, + 18243751040157617920 + ], + [ + 17109306004064819651, + 12111336056011900874 + ], + [ + 3974064383611174039, + 12044572854348038687 + ] + ], + "plonk_zs": [ + [ + 2371627112722311788, + 1008602091457745213 + ], + [ + 71572817577912747, + 4842970923934520553 + ] + ], + "plonk_zs_next": [ + [ + 8445439557568785001, + 670680012048718441 + ], + [ + 13281970789521143697, + 6883849458646300224 + ] + ], + "partial_products": [ + [ + 11193648841344346198, + 92330989993310982 + ], + [ + 1619872267222936923, + 712518741757531292 + ], + [ + 7536680671851072925, + 10622966526918852190 + ], + [ + 14647312608416476652, + 16147879019202899806 + ], + [ + 13119561393415370442, + 3923579173188985290 + ], + [ + 1571857376447002940, + 17488044829458854342 + ], + [ + 13288966328837250591, + 3001704553363733897 + ], + [ + 2251374723439788454, + 5368664206701998609 + ], + [ + 3552678026237443422, + 4013485417816908744 + ], + [ + 9889321798805421726, + 7824169751454777708 + ], + [ + 5436644427552615538, + 17984206777613174945 + ], + [ + 4587480882222232326, + 3233682932930376091 + ], + [ + 10077748165693942068, + 14114868813291612147 + ], + [ + 11685016059515444028, + 13931860795522803152 + ], + [ + 14104324271745161381, + 16576133590697836746 + ], + [ + 8620186212080503985, + 11698541770864060087 + ], + [ + 15924893713628208114, + 11263539879661620419 + ], + [ + 785676826797496027, + 6271601786513031521 + ] + ], + "quotient_polys": [ + [ + 15776707918633037595, + 1913742836124437340 + ], + [ + 17139247687941216508, + 11885670577549791744 + ], + [ + 1402376117412310805, + 9631966807110506401 + ], + [ + 5224118606313203469, + 1858818974802086573 + ], + [ + 3811065296041799967, + 5344412924262730432 + ], + [ + 16443703434737886365, + 7077669712719562302 + ], + [ + 2661299781405269349, + 11226524899058165067 + ], + [ + 15847493737731444693, + 8399541102346911783 + ], + [ + 7290306051692736788, + 5562607451539100668 + ], + [ + 450688386230123158, + 7477930647952106567 + ], + [ + 7501829744856320429, + 460998531530515654 + ], + [ + 17304176382579979904, + 11072095560943319917 + ], + [ + 9885524654793287784, + 7768841342264718669 + ], + [ + 8552743236799418451, + 2627165953000735921 + ], + [ + 15507870344413450176, + 5999635212581938100 + ], + [ + 5663863628005225861, + 8417734990925373354 + ] + ] + }, + "opening_proof": { + "commit_phase_merkle_caps": [ + [ + { + "elements": [ + 3004906728816158267, + 14742130709922515247, + 15396687424072576828, + 9572291185305240295 + ] + }, + { + "elements": [ + 9763619563210444323, + 18091067593287323703, + 2706545757686260118, + 18154353377100156082 + ] + }, + { + "elements": [ + 6981404233954529558, + 1394077568927385197, + 10337084366582897123, + 3770357984740912699 + ] + }, + { + "elements": [ + 9977155016159448089, + 1167663950956468855, + 7219965332886998296, + 7059256522630277446 + ] + }, + { + "elements": [ + 3149650787421402204, + 10179686456912371958, + 11992277191513613195, + 5126518743139255467 + ] + }, + { + "elements": [ + 8553072448520623496, + 18239981875342041675, + 4197990465719683093, + 11239662404085420369 + ] + }, + { + "elements": [ + 14063687530960818361, + 5534665114662533786, + 5740136950861866725, + 351385730668111527 + ] + }, + { + "elements": [ + 16723071611416112001, + 18123945170130596464, + 13609308034207490014, + 16330726186997354557 + ] + }, + { + "elements": [ + 5830127394473114396, + 18441177208321363202, + 2735867850996815662, + 6135424662558109659 + ] + }, + { + "elements": [ + 13196459840290440216, + 11875016874293844177, + 60727010993729140, + 14230316466689378908 + ] + }, + { + "elements": [ + 5810445085278059934, + 17528622287381258600, + 7506928975959367242, + 10091838714389075847 + ] + }, + { + "elements": [ + 9057443567359349377, + 11430487030607093736, + 9198770242988855184, + 9496885260869946313 + ] + }, + { + "elements": [ + 17065563723556178146, + 576055582044329165, + 9197967567542519643, + 2754802411898877687 + ] + }, + { + "elements": [ + 8240529910504313806, + 9716115454593023870, + 14688345462470452232, + 17418693207789088008 + ] + }, + { + "elements": [ + 353425676285429828, + 5059803321781718935, + 15766099844386028178, + 11559410638109899270 + ] + }, + { + "elements": [ + 4132438481177824155, + 1987846075282634954, + 16967997655219349445, + 13106925525654834244 + ] + } + ] + ], + "query_round_proofs": [ + { + "initial_trees_proof": { + "evals_proofs": [ + [ + [ + 18349423465543760995, + 15512889903640028212, + 6027175653538244514, + 16009300802760078062, + 13928533941432620812, + 7245267403214075499, + 16333310230111371127, + 4317348365051139410, + 2399966896377545852, + 10925626431889825636, + 18436581685189990113, + 13372716309444297087, + 7480533667760623006, + 4247931481813933384, + 215823951097466220, + 6689926550367545487, + 10501417175437206856, + 7586876809825993542, + 137831440229040234, + 3686601736929851115, + 10228598712699531427, + 10312107766182625304, + 333965737783463406, + 10788033801510313472, + 11498166391117461441, + 6426538052935383346, + 3977367971185556827, + 5131665622701228819, + 2881296557419066643, + 2338005127200514625, + 6922937766701125146, + 5507474837887755119, + 15273052377521901980, + 3691471278496805747, + 14948965694159728234, + 7864190422507422628, + 2440098621505613724, + 10586248176758811859, + 16875057901482409876, + 6382549070032408248, + 17079324148255227990, + 2512795611478274607, + 4372073128220211357, + 1961631028503617884, + 15465447549548742252, + 3824781527130000178, + 16660498924850105666, + 17449133572828933733, + 4982017160546672922, + 18149875561401859305, + 766003607149513366, + 1811629150219960277, + 5979484393624155263, + 14277513373026569754, + 15474136727857104909, + 15390090504012957428, + 16002030918452822163, + 10941237740402123190, + 4457728519066688482, + 3907162911426270629, + 870358623051419682, + 12520077303987540898, + 14539852972482949846, + 11308867293159927152, + 9617229787601309025, + 16918031680259367582, + 3030986548498286246, + 16256481942699843267, + 11542022875115557768, + 11965710606346709219, + 100129539812806568, + 17507164507213700390, + 9718344420516254507, + 8042192739577928044, + 3640675750826935790, + 10095829106933465698, + 5050262053585740763, + 9773877536810228508, + 1963531043122424416, + 10635639089807479927, + 1951654943676121516, + 13604423143284845999, + 13443720182445281605, + 2920265054597661076, + 1995111312769043211 + ], + { + "siblings": [ + { + "elements": [ + 4050004148860111337, + 15248428312829122404, + 7202290809337134171, + 5755918970665026802 + ] + }, + { + "elements": [ + 13467185609505847585, + 18085280639084449280, + 3249577996733715365, + 6301121402924333798 + ] + }, + { + "elements": [ + 11784536327614489268, + 9010723546619020162, + 8269496872710550083, + 8853009573408760927 + ] + }, + { + "elements": [ + 14653689969933573263, + 12704590767390270362, + 4516757970985738123, + 11103656091410609315 + ] + }, + { + "elements": [ + 9357274284525662436, + 10505069660718129388, + 17053432064542116289, + 706614593489957504 + ] + }, + { + "elements": [ + 152423217452416714, + 4958850808335328706, + 363272662599325333, + 9284118224119760828 + ] + }, + { + "elements": [ + 12345048316971495111, + 15971495426352983336, + 14877188469948817975, + 6794706947351744211 + ] + }, + { + "elements": [ + 14473517812390487738, + 14505243782756370466, + 18383022160055933832, + 16070935092686810759 + ] + } + ] + } + ], + [ + [ + 9070239188981968255, + 3667706801159389068, + 6379650999521954120, + 779675632747211719, + 14347721997392367294, + 5598808842794192510, + 18213653677889738699, + 7017794393010673215, + 10672323063125531307, + 10501529194081665644, + 11339936231621379062, + 2434629082601513016, + 5605037256014979169, + 5506780261488309629, + 2643667487385324638, + 5594967541710269805, + 12702644580549742467, + 14063017379954876475, + 6404839336309685999, + 14822360254076889473, + 3881289641440479176, + 5138313652724999389, + 15214290284694904163, + 10197527680872554529, + 8343030644149118917, + 12161038350879830467, + 640183649024383221, + 3419022370180128523, + 6910975409246168487, + 11131863356804487051, + 5172971773599178170, + 7340416509287661058, + 14052768709492819479, + 16564735797051234981, + 6449255631557265405, + 12894639044681386766, + 7464973841951855063, + 13793940234718488319, + 8439699904474131091, + 12603581152530911655, + 10402672069146521130, + 11121052812622990831, + 6751670939873205616, + 6228028342614360156, + 14331117683317034840, + 10109743791336322424, + 4654521994272853830, + 14560485034380455778, + 3663734745391003456, + 17106705966053328860, + 16589786185631445415, + 13657277817216046876, + 6720609009015796589, + 1698120794659163147, + 7843132358375850693, + 7980082284918789504, + 7602474624982248087, + 5683688845350095993, + 9553796667466810274, + 11583501193773059980, + 17486779618554938730, + 15270350718148075790, + 14899022594532451273, + 4681086449523829880, + 9826718976724808916, + 13212735543037522994, + 7702650668960599556, + 5568802026892132394, + 7686765602838546063, + 13765754299280353895, + 457945564944880621, + 9910849469283874721, + 4271997902382311929, + 8600024700389264970, + 8214421642450603926, + 12270917544159125265, + 1167710707257026502, + 1823208184903798717, + 14470628746371161490, + 4254278413132813067, + 7865581894916738085, + 12667955400641655816, + 6226194131395744552, + 11988006927118313671, + 6696417698113250601, + 1509818512350411034, + 14304062002728888146, + 11960072964017647421, + 8112953019387268394, + 10052434947757704262, + 15327508236431296855, + 4971985199052176110, + 4590833119931405542, + 6851187369286661602, + 9693203826618122221, + 12537578351774877175, + 7968470100559574337, + 1552027030600697568, + 15755373416234709271, + 9044852078746828590, + 5465529168393902773, + 16426437255780897652, + 6139395347457763833, + 8940664133410375178, + 17208398652259160318, + 7313736567113584405, + 15075553929069581152, + 11590649861070651101, + 10608270816039635748, + 16317915766607913936, + 1421619606099508491, + 8408628193127057628, + 672067363069639376, + 9022953228910693740, + 14877530281695173699, + 14804411105209794763, + 17255678375842346597, + 1230252467017974837, + 447305959534846898, + 15721838922578872170, + 13839755473256520173, + 282475923268140879, + 14007221722263862862, + 15191565703137040963, + 17549624671697702418, + 8508152597647103014, + 4448944008659258929, + 6535465220424092381, + 12155347563303205876, + 1995204997735384681, + 7471461494661156402, + 3106444692020953510, + 1567483149714625398, + 9737242871834063215, + 11164413509970314154, + 10094720224094946095 + ], + { + "siblings": [ + { + "elements": [ + 5514375652750599538, + 10265499019504098896, + 17491051647033271975, + 17392245889529734898 + ] + }, + { + "elements": [ + 12733976430317459130, + 18125430756357622236, + 2009286284408602898, + 466732125843305282 + ] + }, + { + "elements": [ + 11250046427896032151, + 14058767716454567441, + 3334842441762605876, + 10728569245314180104 + ] + }, + { + "elements": [ + 9931639746307356386, + 3233835333895242159, + 12569222548994016055, + 3290080787635935659 + ] + }, + { + "elements": [ + 4370797669392829666, + 4350709413164975760, + 10549493812189439167, + 59327492066438547 + ] + }, + { + "elements": [ + 12465694063606273771, + 5590667526571889106, + 6948861251812543221, + 16689881650022601687 + ] + }, + { + "elements": [ + 4294855517993016315, + 9705297898156590655, + 4662026402785278631, + 6564999472197959722 + ] + }, + { + "elements": [ + 4512272439036021514, + 5450140514506077749, + 11251179753711530171, + 8773315009994548606 + ] + } + ] + } + ], + [ + [ + 138363378219216853, + 1919103933446087388, + 2735001113357560293, + 5909574115629147796, + 6428491573228538998, + 16523743697255488168, + 10863212616959617245, + 816350263751695819, + 1828347904169463025, + 14839233428061540084, + 4589664929883008021, + 18280465382709749879, + 10627667332005086474, + 13428481584222236526, + 13708085375310559128, + 15740792878750213501, + 6699378687923436657, + 3937618424263889434, + 6105248087835464429, + 17251240112320434442 + ], + { + "siblings": [ + { + "elements": [ + 1210624299578673309, + 15296123253778195895, + 2779457965987330484, + 3356012022778845173 + ] + }, + { + "elements": [ + 3581821862460289712, + 9002489185319237514, + 13762123856088418754, + 11505734684017171329 + ] + }, + { + "elements": [ + 3255284643011170792, + 8629732101962030366, + 8028216460868888078, + 8414211275526197992 + ] + }, + { + "elements": [ + 6346398901665635203, + 16267542991916138223, + 5609513148794422221, + 15252447879587467452 + ] + }, + { + "elements": [ + 8467006642080012312, + 16216645757554457318, + 7170418748021568537, + 15128772475910108156 + ] + }, + { + "elements": [ + 7433552072966831127, + 6003016358283816951, + 12766933290053655883, + 15101706715485211522 + ] + }, + { + "elements": [ + 17628194290728456540, + 15499409045748849370, + 5127916192688490380, + 11708065858293320348 + ] + }, + { + "elements": [ + 5688379440817172341, + 7578612668517823236, + 15159758612969321251, + 1508799351459396725 + ] + } + ] + } + ], + [ + [ + 2290041512682327398, + 17732316539750798987, + 12436880518805119291, + 14788552783945827585, + 8439746946302339478, + 5081277338463997384, + 13002566397154312667, + 7759987622827118571, + 17474273334612001895, + 749013735979602728, + 8022526230462016263, + 4413035932441207811, + 6518682439598570784, + 883117119465950328, + 12320271462798650894, + 5759995449465211092 + ], + { + "siblings": [ + { + "elements": [ + 16259217846342220322, + 5650161712383157886, + 16322611246176967753, + 9214237299891328068 + ] + }, + { + "elements": [ + 17888147422183577891, + 888581748486703961, + 3171080777658059790, + 7237285710188967755 + ] + }, + { + "elements": [ + 3545409785544298354, + 11044530376070501821, + 17855706445240741438, + 17404238172110213393 + ] + }, + { + "elements": [ + 13849920670302034530, + 12545889525568171737, + 3164721546956819332, + 10177375980742686024 + ] + }, + { + "elements": [ + 8403353429610167033, + 12301879507207725197, + 16776106674854180849, + 13764458727591453767 + ] + }, + { + "elements": [ + 17295270012821945512, + 4591373251852398889, + 3154945230956814800, + 7304911030317874420 + ] + }, + { + "elements": [ + 15626932725716499410, + 18050592516289818891, + 8095261276133347640, + 7283512125421019654 + ] + }, + { + "elements": [ + 3910037810002774003, + 16394187136314174739, + 9130743022643217393, + 8545913260268134916 + ] + } + ] + } + ] + ] + }, + "steps": [ + { + "evals": [ + [ + 6416650050239624226, + 7135254831445403219 + ], + [ + 10096274531541028840, + 11046969156511334297 + ], + [ + 7636529487812971095, + 13482440981978615558 + ], + [ + 4919494079151382254, + 14979424981471048044 + ], + [ + 4615442211998480757, + 2576631209640030855 + ], + [ + 11272053131109336387, + 4627663245444464402 + ], + [ + 9264946110436181355, + 1153358379043665924 + ], + [ + 8375747128377691867, + 7424627852775978127 + ], + [ + 10705913788213927780, + 4832406291286337504 + ], + [ + 6909379542317603659, + 1290213209458313423 + ], + [ + 4716338668438803629, + 1788784879052864830 + ], + [ + 17798083191190279323, + 8251499254610702690 + ], + [ + 5443799333805961811, + 6431620360663362282 + ], + [ + 2396679038893801456, + 18236759273452326403 + ], + [ + 4467881245318743607, + 15150213705854720407 + ], + [ + 18222488728811639972, + 9366412740832978961 + ] + ], + "merkle_proof": { + "siblings": [ + { + "elements": [ + 2794970846606398728, + 12707356117569215696, + 8862010548163007834, + 8566701813488538984 + ] + }, + { + "elements": [ + 9685910526322430381, + 8955831000804111791, + 6560299639936437714, + 9006491137854178659 + ] + }, + { + "elements": [ + 15661270604688935986, + 8522432255028687588, + 11518410095598760114, + 6919740098826437472 + ] + }, + { + "elements": [ + 6040851021016129255, + 8033415802952515472, + 13911138229269467584, + 1321159814077913560 + ] + } + ] + } + } + ] + } + ], + "final_poly": { + "coeffs": [ + [ + 14047123205506499096, + 3218303344588996207 + ], + [ + 16706025024844800647, + 11138960117835255722 + ], + [ + 1313880380585773986, + 14951319508893094753 + ], + [ + 7535582308482919515, + 814478324944673779 + ], + [ + 1676384652085305094, + 8458096400419139819 + ], + [ + 9433295265492042678, + 7265636766727430938 + ], + [ + 13715636169694265696, + 8345716153619626687 + ], + [ + 14737713766328296051, + 18307250352504418555 + ], + [ + 9108483460088478634, + 174658599440562862 + ], + [ + 17120788391556550865, + 12724671579289265489 + ], + [ + 9024595891279828753, + 7530534442557094170 + ], + [ + 14078663791986997469, + 14063699495947686666 + ], + [ + 13948986376902288455, + 4022611697273394438 + ], + [ + 18151938738115915652, + 4916769041866332249 + ], + [ + 14684894487627217444, + 9845525924597235082 + ], + [ + 14627952848042529495, + 4413047783013679295 + ], + [ + 8748360711301113362, + 8437407825768126035 + ], + [ + 9990741351065662561, + 1615018853081234351 + ], + [ + 6573694579927819849, + 13232502106445161415 + ], + [ + 9442345251933132341, + 16933029839360669030 + ], + [ + 12989244640250005292, + 16767181679705193750 + ], + [ + 16244620625192532422, + 5853972087502503163 + ], + [ + 3989853685391140851, + 5710440279050806912 + ], + [ + 8024348218897169237, + 17796243043454251747 + ], + [ + 16667275664932218070, + 17393307651423400179 + ], + [ + 14298071796767296482, + 7234717644166111638 + ], + [ + 9227518843616910992, + 13553385376022213841 + ], + [ + 8767197551645090611, + 4304633810085134226 + ], + [ + 10446406093360378438, + 1477337464062037330 + ], + [ + 4718893894528299143, + 10724982997677707490 + ], + [ + 1038907254214551220, + 7451406419823229509 + ], + [ + 609620693706344799, + 1971610053448184414 + ] + ] + }, + "pow_witness": 4611686017353649090 + } + }, + "public_inputs": [] +} diff --git a/verifier/data/recursive_very_small/verifier_only_circuit_data.json b/verifier/data/recursive_very_small/verifier_only_circuit_data.json new file mode 100644 index 0000000..45d57b5 --- /dev/null +++ b/verifier/data/recursive_very_small/verifier_only_circuit_data.json @@ -0,0 +1,140 @@ +{ + "constants_sigmas_cap": [ + { + "elements": [ + 18341772251201060973, + 8863499337164177585, + 3680903997187631396, + 12765086892713286422 + ] + }, + { + "elements": [ + 10011842595440383490, + 16803433616479820503, + 5116105297375993895, + 1284372878762986134 + ] + }, + { + "elements": [ + 9771429197922126084, + 11795709479898502019, + 9760789605311014828, + 14587465303757273799 + ] + }, + { + "elements": [ + 14268034713225276697, + 18296479136879705605, + 10850612887933280806, + 9639487702530117083 + ] + }, + { + "elements": [ + 9754005887238773284, + 5374369974939340944, + 4959182047845142644, + 1120709750910555570 + ] + }, + { + "elements": [ + 7250035629074136036, + 15739653461985901088, + 14987756440121950753, + 9158371711408827053 + ] + }, + { + "elements": [ + 13216298745969283339, + 16888689116176782846, + 12982122889871085039, + 5211135798140140360 + ] + }, + { + "elements": [ + 1504326644701451030, + 8409612476357826852, + 7563553194601621378, + 11995034742915891064 + ] + }, + { + "elements": [ + 5488329807694506217, + 18091194776727670160, + 17052473172701400255, + 16236156822718879559 + ] + }, + { + "elements": [ + 17715347985838125739, + 3615805299049017601, + 8585175301607696636, + 1968868157246799025 + ] + }, + { + "elements": [ + 13447598860253889564, + 6631647170626609560, + 2112142850806037543, + 14266806193129176172 + ] + }, + { + "elements": [ + 2730627694247012781, + 17236598033654074636, + 4452557557605684638, + 468430371172463963 + ] + }, + { + "elements": [ + 6798850231787296859, + 16600632819568012939, + 11299208732485603538, + 15684010143706607232 + ] + }, + { + "elements": [ + 3144604974895131192, + 4061404887662630886, + 5007128585099235364, + 16758955485500576037 + ] + }, + { + "elements": [ + 4096461731986790461, + 12546978492628150144, + 18147834661139732319, + 4737766556076016924 + ] + }, + { + "elements": [ + 14221961188679542125, + 17198447421299265716, + 4429176582749668482, + 3028817214334434508 + ] + } + ], + "circuit_digest": { + "elements": [ + 10592544746408303090, + 6263847280826784938, + 13362953309332334276, + 1690911406899164489 + ] + } +} diff --git a/verifier/internal/fri/fri.go b/verifier/internal/fri/fri.go index 5e13484..3b9a8ea 100644 --- a/verifier/internal/fri/fri.go +++ b/verifier/internal/fri/fri.go @@ -15,7 +15,7 @@ import ( type FriChip struct { api frontend.API `gnark:"-"` - fieldAPI frontend.API `gnark:"-"` + fieldAPI field.FieldAPI `gnark:"-"` qeAPI *field.QuadraticExtensionAPI `gnark:"-"` hashAPI *poseidon.HashAPI `gnark:"-"` @@ -26,7 +26,7 @@ type FriChip struct { func NewFriChip( api frontend.API, - fieldAPI frontend.API, + fieldAPI field.FieldAPI, qeAPI *field.QuadraticExtensionAPI, hashAPI *poseidon.HashAPI, poseidonChip *poseidon.PoseidonChip, @@ -47,7 +47,8 @@ func (f *FriChip) assertLeadingZeros(powWitness field.F, friConfig common.FriCon // Note that this is assuming that the Goldilocks field is being used. Specfically that the // field is 64 bits long maxPowWitness := uint64(math.Pow(2, float64(64-friConfig.ProofOfWorkBits))) - 1 - f.fieldAPI.AssertIsLessOrEqual(powWitness, field.NewFieldElement(maxPowWitness)) + reducedPOWWitness := f.fieldAPI.Reduce(powWitness) + f.fieldAPI.AssertIsLessOrEqual(reducedPOWWitness, field.NewFieldConst(maxPowWitness)) } func (f *FriChip) fromOpeningsAndAlpha(openings *FriOpenings, alpha field.QuadraticExtension) []field.QuadraticExtension { @@ -200,16 +201,16 @@ func (f *FriChip) expFromBitsConstBase( basePow := goldilocks.NewElement(0) basePow.Exp(base, big.NewInt(pow)) - basePowElement := field.NewFieldElement(basePow.Uint64() - 1) + basePowElement := field.NewFieldConst(basePow.Uint64() - 1) product = f.fieldAPI.Add( f.fieldAPI.Mul( - basePowElement, - product, - bit, - ), + f.fieldAPI.Mul( + basePowElement, + product), + f.fieldAPI.NewElement(bit)), product, - ).(field.F) + ) } return product @@ -222,7 +223,7 @@ func (f *FriChip) calculateSubgroupX( // Compute x from its index // `subgroup_x` is `subgroup[x_index]`, i.e., the actual field element in the domain. // TODO - Make these as global values - g := field.NewFieldElement(field.GOLDILOCKS_MULTIPLICATIVE_GROUP_GENERATOR.Uint64()) + g := field.NewFieldConst(field.GOLDILOCKS_MULTIPLICATIVE_GROUP_GENERATOR.Uint64()) base := field.GoldilocksPrimitiveRootOfUnity(nLog) // Create a reverse list of xIndexBits @@ -233,7 +234,7 @@ func (f *FriChip) calculateSubgroupX( product := f.expFromBitsConstBase(base, xIndexBitsRev) - return f.fieldAPI.Mul(g, product).(field.F) + return f.fieldAPI.Mul(g, product) } func (f *FriChip) friCombineInitial( @@ -376,13 +377,13 @@ func (f *FriChip) computeEvaluation( revXIndexWithinCosetBits[len(xIndexWithinCosetBits)-1-i] = xIndexWithinCosetBits[i] } start := f.expFromBitsConstBase(gInv, revXIndexWithinCosetBits) - cosetStart := f.fieldAPI.Mul(start, x).(field.F) + cosetStart := f.fieldAPI.Mul(start, x) xPoints := make([]field.QuadraticExtension, len(evals)) yPoints := permutedEvals // TODO: Make g_F a constant - g_F := f.qeAPI.FieldToQE(field.NewFieldElement(g.Uint64())) + g_F := f.qeAPI.FieldToQE(field.NewFieldConst(g.Uint64())) xPoints[0] = f.qeAPI.FieldToQE(cosetStart) for i := 1; i < len(evals); i++ { xPoints[i] = f.qeAPI.MulExtension(xPoints[i-1], g_F) @@ -421,7 +422,7 @@ func (f *FriChip) verifyQueryRound( roundProof *common.FriQueryRound, ) { f.assertNoncanonicalIndicesOK() - xIndexBits := f.fieldAPI.ToBinary(xIndex, int(nLog)) + xIndexBits := f.fieldAPI.ToBits(xIndex) capIndexBits := xIndexBits[len(xIndexBits)-int(f.friParams.Config.CapHeight):] f.verifyInitialProof(xIndexBits, &roundProof.InitialTreesProof, initialMerkleCaps, capIndexBits) @@ -506,7 +507,7 @@ func (f *FriChip) verifyQueryRound( // Update the point x to x^arity. for j := uint64(0); j < arityBits; j++ { - subgroupX = f.fieldAPI.Mul(subgroupX, subgroupX).(field.F) + subgroupX = f.fieldAPI.Mul(subgroupX, subgroupX) } xIndexBits = cosetIndexBits diff --git a/verifier/internal/fri/fri_test.go b/verifier/internal/fri/fri_test.go index 1956352..ffbf262 100644 --- a/verifier/internal/fri/fri_test.go +++ b/verifier/internal/fri/fri_test.go @@ -17,11 +17,11 @@ type TestFriCircuit struct { commonCircuitDataFilename string `gnark:"-"` verifierOnlyCircuitDataFilename string `gnark:"-"` - plonkZeta field.QuadraticExtension - friAlpha field.QuadraticExtension - friBetas []field.QuadraticExtension - friPOWResponse field.F - friQueryIndices []field.F + PlonkZeta field.QuadraticExtension + FriAlpha field.QuadraticExtension + FriBetas []field.QuadraticExtension + FriPOWResponse field.F + FriQueryIndices []field.F } func (circuit *TestFriCircuit) Define(api frontend.API) error { @@ -30,16 +30,16 @@ func (circuit *TestFriCircuit) Define(api frontend.API) error { verifierOnlyCircuitData := utils.DeserializeVerifierOnlyCircuitData(circuit.verifierOnlyCircuitDataFilename) fieldAPI := field.NewFieldAPI(api) - qeAPI := field.NewQuadraticExtensionAPI(fieldAPI, commonCircuitData.DegreeBits) + qeAPI := field.NewQuadraticExtensionAPI(api, fieldAPI, commonCircuitData.DegreeBits) hashAPI := poseidon.NewHashAPI(fieldAPI) poseidonChip := poseidon.NewPoseidonChip(api, fieldAPI, qeAPI) friChip := fri.NewFriChip(api, fieldAPI, qeAPI, hashAPI, poseidonChip, &commonCircuitData.FriParams) friChallenges := common.FriChallenges{ - FriAlpha: circuit.friAlpha, - FriBetas: circuit.friBetas, - FriPowResponse: circuit.friPOWResponse, - FriQueryIndices: circuit.friQueryIndices, + FriAlpha: circuit.FriAlpha, + FriBetas: circuit.FriBetas, + FriPowResponse: circuit.FriPOWResponse, + FriQueryIndices: circuit.FriQueryIndices, } initialMerkleCaps := []common.MerkleCap{ @@ -50,7 +50,7 @@ func (circuit *TestFriCircuit) Define(api frontend.API) error { } friChip.VerifyFriProof( - fri.GetFriInstance(&commonCircuitData, qeAPI, circuit.plonkZeta, commonCircuitData.DegreeBits), + fri.GetFriInstance(&commonCircuitData, qeAPI, circuit.PlonkZeta, commonCircuitData.DegreeBits), fri.ToFriOpenings(proofWithPis.Proof.Openings), &friChallenges, initialMerkleCaps, @@ -68,45 +68,45 @@ func TestFibonacciFriProof(t *testing.T) { proofWithPIsFilename: "./data/fibonacci/proof_with_public_inputs.json", commonCircuitDataFilename: "./data/fibonacci/common_circuit_data.json", verifierOnlyCircuitDataFilename: "./data/fibonacci/verifier_only_circuit_data.json", - plonkZeta: field.QuadraticExtension{ - field.NewFieldElementFromString("14887793628029982930"), - field.NewFieldElementFromString("1136137158284059037"), + PlonkZeta: field.QuadraticExtension{ + field.NewFieldConstFromString("14887793628029982930"), + field.NewFieldConstFromString("1136137158284059037"), }, - friAlpha: field.QuadraticExtension{ - field.NewFieldElementFromString("14641715242626918707"), - field.NewFieldElementFromString("10574243340537902930"), + FriAlpha: field.QuadraticExtension{ + field.NewFieldConstFromString("14641715242626918707"), + field.NewFieldConstFromString("10574243340537902930"), }, - friBetas: []field.QuadraticExtension{}, - friPOWResponse: field.NewFieldElement(82451580476419), - friQueryIndices: []field.F{ - field.NewFieldElement(6790812084677375942), - field.NewFieldElement(12394212020331474798), - field.NewFieldElement(16457600747000998582), - field.NewFieldElement(1543271328932331916), - field.NewFieldElement(12115726870906958644), - field.NewFieldElement(6775897107605342797), - field.NewFieldElement(15989401564746021030), - field.NewFieldElement(10691676456016926845), - field.NewFieldElement(1632499470630032007), - field.NewFieldElement(1317292355445098328), - field.NewFieldElement(18391440812534384252), - field.NewFieldElement(17321705613231354333), - field.NewFieldElement(6176487551308859603), - field.NewFieldElement(7119835651572002873), - field.NewFieldElement(3903019169623116693), - field.NewFieldElement(4886491111111487546), - field.NewFieldElement(4087641893164620518), - field.NewFieldElement(13801643080324181364), - field.NewFieldElement(16993775312274189321), - field.NewFieldElement(9268202926222765679), - field.NewFieldElement(10683001302406181735), - field.NewFieldElement(13359465725531647963), - field.NewFieldElement(4523327590105620849), - field.NewFieldElement(4883588003760409588), - field.NewFieldElement(187699146998097671), - field.NewFieldElement(14489263557623716717), - field.NewFieldElement(11748359318238148146), - field.NewFieldElement(13636347200053048758), + FriBetas: []field.QuadraticExtension{}, + FriPOWResponse: field.NewFieldConst(82451580476419), + FriQueryIndices: []field.F{ + field.NewFieldConst(6790812084677375942), + field.NewFieldConst(12394212020331474798), + field.NewFieldConst(16457600747000998582), + field.NewFieldConst(1543271328932331916), + field.NewFieldConst(12115726870906958644), + field.NewFieldConst(6775897107605342797), + field.NewFieldConst(15989401564746021030), + field.NewFieldConst(10691676456016926845), + field.NewFieldConst(1632499470630032007), + field.NewFieldConst(1317292355445098328), + field.NewFieldConst(18391440812534384252), + field.NewFieldConst(17321705613231354333), + field.NewFieldConst(6176487551308859603), + field.NewFieldConst(7119835651572002873), + field.NewFieldConst(3903019169623116693), + field.NewFieldConst(4886491111111487546), + field.NewFieldConst(4087641893164620518), + field.NewFieldConst(13801643080324181364), + field.NewFieldConst(16993775312274189321), + field.NewFieldConst(9268202926222765679), + field.NewFieldConst(10683001302406181735), + field.NewFieldConst(13359465725531647963), + field.NewFieldConst(4523327590105620849), + field.NewFieldConst(4883588003760409588), + field.NewFieldConst(187699146998097671), + field.NewFieldConst(14489263557623716717), + field.NewFieldConst(11748359318238148146), + field.NewFieldConst(13636347200053048758), }, } witness := TestFriCircuit{} @@ -122,64 +122,121 @@ func TestDummyFriProof(t *testing.T) { testCase := func() { circuit := TestFriCircuit{ - proofWithPIsFilename: "./data/dummy_2^14_gates/proof_with_public_inputs.json", - commonCircuitDataFilename: "./data/dummy_2^14_gates/common_circuit_data.json", - verifierOnlyCircuitDataFilename: "./data/dummy_2^14_gates/verifier_only_circuit_data.json", - plonkZeta: field.QuadraticExtension{ - field.NewFieldElementFromString("17377750363769967882"), - field.NewFieldElementFromString("11921191651424768462"), + proofWithPIsFilename: "../../data/dummy_2^14_gates/proof_with_public_inputs.json", + commonCircuitDataFilename: "../../data/dummy_2^14_gates/common_circuit_data.json", + verifierOnlyCircuitDataFilename: "../../data/dummy_2^14_gates/verifier_only_circuit_data.json", + PlonkZeta: field.QuadraticExtension{ + field.NewFieldConstFromString("17377750363769967882"), + field.NewFieldConstFromString("11921191651424768462"), }, - friAlpha: field.QuadraticExtension{ - field.NewFieldElementFromString("16721004555774385479"), - field.NewFieldElementFromString("10688151135543754663"), + FriAlpha: field.QuadraticExtension{ + field.NewFieldConstFromString("16721004555774385479"), + field.NewFieldConstFromString("10688151135543754663"), }, - friBetas: []field.QuadraticExtension{ + FriBetas: []field.QuadraticExtension{ { - field.NewFieldElementFromString("3312441922957827805"), - field.NewFieldElementFromString("15128092514958289671"), + field.NewFieldConstFromString("3312441922957827805"), + field.NewFieldConstFromString("15128092514958289671"), }, { - field.NewFieldElementFromString("13630530769060141802"), - field.NewFieldElementFromString("14559883974933163008"), + field.NewFieldConstFromString("13630530769060141802"), + field.NewFieldConstFromString("14559883974933163008"), }, { - field.NewFieldElementFromString("16146508250083930687"), - field.NewFieldElementFromString("5176346568444408396"), + field.NewFieldConstFromString("16146508250083930687"), + field.NewFieldConstFromString("5176346568444408396"), }, }, - friPOWResponse: field.NewFieldElement(4389), - friQueryIndices: []field.F{ - field.NewFieldElementFromString("16334967868590615051"), - field.NewFieldElementFromString("2911473540496037915"), - field.NewFieldElementFromString("14887216056886344225"), - field.NewFieldElementFromString("7808811227805914295"), - field.NewFieldElementFromString("2018594961417375749"), - field.NewFieldElementFromString("3733368398777208435"), - field.NewFieldElementFromString("2623035669037055104"), - field.NewFieldElementFromString("299243030573481514"), - field.NewFieldElementFromString("7189789717962704433"), - field.NewFieldElementFromString("14566344026886816268"), - field.NewFieldElementFromString("12555390069003437453"), - field.NewFieldElementFromString("17225508403199418233"), - field.NewFieldElementFromString("5088797913879903292"), - field.NewFieldElementFromString("9715691392773433023"), - field.NewFieldElementFromString("7565836764713256165"), - field.NewFieldElementFromString("1500143546029322929"), - field.NewFieldElementFromString("1245802417104422080"), - field.NewFieldElementFromString("6831959786661245110"), - field.NewFieldElementFromString("17271054758535453780"), - field.NewFieldElementFromString("6225460404576395409"), - field.NewFieldElementFromString("15932661092896277351"), - field.NewFieldElementFromString("12452534049198240575"), - field.NewFieldElementFromString("4225199666055520177"), - field.NewFieldElementFromString("13235091290587791090"), - field.NewFieldElementFromString("2562357622728700774"), - field.NewFieldElementFromString("17676678042980201498"), - field.NewFieldElementFromString("5837067135702409874"), - field.NewFieldElementFromString("11238419549114325157"), + FriPOWResponse: field.NewFieldConst(4389), + FriQueryIndices: []field.F{ + field.NewFieldConstFromString("16334967868590615051"), + field.NewFieldConstFromString("2911473540496037915"), + field.NewFieldConstFromString("14887216056886344225"), + field.NewFieldConstFromString("7808811227805914295"), + field.NewFieldConstFromString("2018594961417375749"), + field.NewFieldConstFromString("3733368398777208435"), + field.NewFieldConstFromString("2623035669037055104"), + field.NewFieldConstFromString("299243030573481514"), + field.NewFieldConstFromString("7189789717962704433"), + field.NewFieldConstFromString("14566344026886816268"), + field.NewFieldConstFromString("12555390069003437453"), + field.NewFieldConstFromString("17225508403199418233"), + field.NewFieldConstFromString("5088797913879903292"), + field.NewFieldConstFromString("9715691392773433023"), + field.NewFieldConstFromString("7565836764713256165"), + field.NewFieldConstFromString("1500143546029322929"), + field.NewFieldConstFromString("1245802417104422080"), + field.NewFieldConstFromString("6831959786661245110"), + field.NewFieldConstFromString("17271054758535453780"), + field.NewFieldConstFromString("6225460404576395409"), + field.NewFieldConstFromString("15932661092896277351"), + field.NewFieldConstFromString("12452534049198240575"), + field.NewFieldConstFromString("4225199666055520177"), + field.NewFieldConstFromString("13235091290587791090"), + field.NewFieldConstFromString("2562357622728700774"), + field.NewFieldConstFromString("17676678042980201498"), + field.NewFieldConstFromString("5837067135702409874"), + field.NewFieldConstFromString("11238419549114325157"), + }, + } + witness := TestFriCircuit{ + proofWithPIsFilename: "../../data/dummy_2^14_gates/proof_with_public_inputs.json", + commonCircuitDataFilename: "../../data/dummy_2^14_gates/common_circuit_data.json", + verifierOnlyCircuitDataFilename: ".../../data/dummy_2^14_gates/verifier_only_circuit_data.json", + PlonkZeta: field.QuadraticExtension{ + field.NewFieldConstFromString("17377750363769967882"), + field.NewFieldConstFromString("11921191651424768462"), + }, + FriAlpha: field.QuadraticExtension{ + field.NewFieldConstFromString("16721004555774385479"), + field.NewFieldConstFromString("10688151135543754663"), + }, + FriBetas: []field.QuadraticExtension{ + { + field.NewFieldConstFromString("3312441922957827805"), + field.NewFieldConstFromString("15128092514958289671"), + }, + { + field.NewFieldConstFromString("13630530769060141802"), + field.NewFieldConstFromString("14559883974933163008"), + }, + { + field.NewFieldConstFromString("16146508250083930687"), + field.NewFieldConstFromString("5176346568444408396"), + }, + }, + FriPOWResponse: field.NewFieldConst(4389), + FriQueryIndices: []field.F{ + field.NewFieldConstFromString("16334967868590615051"), + field.NewFieldConstFromString("2911473540496037915"), + field.NewFieldConstFromString("14887216056886344225"), + field.NewFieldConstFromString("7808811227805914295"), + field.NewFieldConstFromString("2018594961417375749"), + field.NewFieldConstFromString("3733368398777208435"), + field.NewFieldConstFromString("2623035669037055104"), + field.NewFieldConstFromString("299243030573481514"), + field.NewFieldConstFromString("7189789717962704433"), + field.NewFieldConstFromString("14566344026886816268"), + field.NewFieldConstFromString("12555390069003437453"), + field.NewFieldConstFromString("17225508403199418233"), + field.NewFieldConstFromString("5088797913879903292"), + field.NewFieldConstFromString("9715691392773433023"), + field.NewFieldConstFromString("7565836764713256165"), + field.NewFieldConstFromString("1500143546029322929"), + field.NewFieldConstFromString("1245802417104422080"), + field.NewFieldConstFromString("6831959786661245110"), + field.NewFieldConstFromString("17271054758535453780"), + field.NewFieldConstFromString("6225460404576395409"), + field.NewFieldConstFromString("15932661092896277351"), + field.NewFieldConstFromString("12452534049198240575"), + field.NewFieldConstFromString("4225199666055520177"), + field.NewFieldConstFromString("13235091290587791090"), + field.NewFieldConstFromString("2562357622728700774"), + field.NewFieldConstFromString("17676678042980201498"), + field.NewFieldConstFromString("5837067135702409874"), + field.NewFieldConstFromString("11238419549114325157"), }, } - witness := TestFriCircuit{} err := test.IsSolved(&circuit, &witness, field.TEST_CURVE.ScalarField()) assert.NoError(err) } diff --git a/verifier/internal/fri/fri_utils.go b/verifier/internal/fri/fri_utils.go index 2e2983c..9df6994 100644 --- a/verifier/internal/fri/fri_utils.go +++ b/verifier/internal/fri/fri_utils.go @@ -185,7 +185,7 @@ func GetFriInstance(c *common.CommonCircuitData, qeAPI *field.QuadraticExtension } g := field.GoldilocksPrimitiveRootOfUnity(degreeBits) - zetaNext := qeAPI.MulExtension(qeAPI.FieldToQE(field.NewFieldElement(g.Uint64())), zeta) + zetaNext := qeAPI.MulExtension(qeAPI.FieldToQE(field.NewFieldConst(g.Uint64())), zeta) zetaNextBath := FriBatchInfo{ Point: zetaNext, diff --git a/verifier/internal/gates/base_sum_gate.go b/verifier/internal/gates/base_sum_gate.go index d2ca56b..ef503ce 100644 --- a/verifier/internal/gates/base_sum_gate.go +++ b/verifier/internal/gates/base_sum_gate.go @@ -71,7 +71,7 @@ func (g *BaseSumGate) EvalUnfiltered(api frontend.API, qeAPI *field.QuadraticExt limbs[i] = vars.localWires[limbIdx] } - base_qe := qeAPI.FieldToQE(field.NewFieldElement(g.base)) + base_qe := qeAPI.FieldToQE(field.NewFieldConst(g.base)) computedSum := qeAPI.ReduceWithPowers( limbs, base_qe, @@ -82,7 +82,7 @@ func (g *BaseSumGate) EvalUnfiltered(api frontend.API, qeAPI *field.QuadraticExt for _, limb := range limbs { acc := qeAPI.ONE_QE for i := uint64(0); i < g.base; i++ { - difference := qeAPI.SubExtension(limb, qeAPI.FieldToQE(field.NewFieldElement(i))) + difference := qeAPI.SubExtension(limb, qeAPI.FieldToQE(field.NewFieldConst(i))) acc = qeAPI.MulExtension(acc, difference) } constraints = append(constraints, acc) diff --git a/verifier/internal/gates/evaluate_gates.go b/verifier/internal/gates/evaluate_gates.go index 6c9c7de..44b17a2 100644 --- a/verifier/internal/gates/evaluate_gates.go +++ b/verifier/internal/gates/evaluate_gates.go @@ -45,11 +45,11 @@ func (g *EvaluateGatesChip) computeFilter( continue } - product = g.qeAPI.MulExtension(product, g.qeAPI.SubExtension(g.qeAPI.FieldToQE(field.NewFieldElement(i)), s)) + product = g.qeAPI.MulExtension(product, g.qeAPI.SubExtension(g.qeAPI.FieldToQE(field.NewFieldConst(i)), s)) } if manySelector { - product = g.qeAPI.MulExtension(product, g.qeAPI.SubExtension(g.qeAPI.FieldToQE(field.NewFieldElement(UNUSED_SELECTOR)), s)) + product = g.qeAPI.MulExtension(product, g.qeAPI.SubExtension(g.qeAPI.FieldToQE(field.NewFieldConst(UNUSED_SELECTOR)), s)) } return product diff --git a/verifier/internal/gates/gate_test.go b/verifier/internal/gates/gate_test.go index cc2c851..e9a33b3 100644 --- a/verifier/internal/gates/gate_test.go +++ b/verifier/internal/gates/gate_test.go @@ -15,716 +15,716 @@ import ( // From recursive_step circuit var localConstants = []field.QuadraticExtension{ - {field.NewFieldElement(1164933405384298079), field.NewFieldElement(7438400583921661370)}, - {field.NewFieldElement(13151230530771189075), field.NewFieldElement(13023721207846057894)}, - {field.NewFieldElement(3881971040049882570), field.NewFieldElement(16581297326342691797)}, - {field.NewFieldElement(5184944824742294361), field.NewFieldElement(4925002013441838394)}, - {field.NewFieldElement(13156856690013129271), field.NewFieldElement(11795766134230417198)}, + {field.NewFieldConst(1164933405384298079), field.NewFieldConst(7438400583921661370)}, + {field.NewFieldConst(13151230530771189075), field.NewFieldConst(13023721207846057894)}, + {field.NewFieldConst(3881971040049882570), field.NewFieldConst(16581297326342691797)}, + {field.NewFieldConst(5184944824742294361), field.NewFieldConst(4925002013441838394)}, + {field.NewFieldConst(13156856690013129271), field.NewFieldConst(11795766134230417198)}, } var localWires = []field.QuadraticExtension{ - {field.NewFieldElement(10289971018233574142), field.NewFieldElement(4567684908222573778)}, - {field.NewFieldElement(11564178579868812087), field.NewFieldElement(4510091545046358953)}, - {field.NewFieldElement(2427374067806073277), field.NewFieldElement(6911441533263492425)}, - {field.NewFieldElement(7693977127287585254), field.NewFieldElement(9885192257977663560)}, - {field.NewFieldElement(4829743769894031521), field.NewFieldElement(1070322096310857911)}, - {field.NewFieldElement(841614584488095356), field.NewFieldElement(3266720090708573245)}, - {field.NewFieldElement(9335841732020668562), field.NewFieldElement(7959135654284183511)}, - {field.NewFieldElement(16824107175117300959), field.NewFieldElement(14823581113270528881)}, - {field.NewFieldElement(4989727169526686805), field.NewFieldElement(6246956987038299573)}, - {field.NewFieldElement(17410065909497815114), field.NewFieldElement(226319705525892670)}, - {field.NewFieldElement(4568933895769710275), field.NewFieldElement(6430695446169305195)}, - {field.NewFieldElement(8067075753959020505), field.NewFieldElement(6018662820882606998)}, - {field.NewFieldElement(9927277077277524164), field.NewFieldElement(12530942893897967446)}, - {field.NewFieldElement(404931240594605346), field.NewFieldElement(13956134990453188947)}, - {field.NewFieldElement(12279755093013597997), field.NewFieldElement(13891866662848929655)}, - {field.NewFieldElement(3995291408937855383), field.NewFieldElement(7649506537726031013)}, - {field.NewFieldElement(1975344541433284175), field.NewFieldElement(11787783246524974192)}, - {field.NewFieldElement(9352725388265956899), field.NewFieldElement(1878641993746760905)}, - {field.NewFieldElement(4386025806925594020), field.NewFieldElement(7199468962263347888)}, - {field.NewFieldElement(457758515510439949), field.NewFieldElement(8295940174808817473)}, - {field.NewFieldElement(3721711968672629644), field.NewFieldElement(13268744315779792869)}, - {field.NewFieldElement(14873968601320376905), field.NewFieldElement(14469960382794471278)}, - {field.NewFieldElement(16643239035786323413), field.NewFieldElement(14266572255541493756)}, - {field.NewFieldElement(9756649839930289884), field.NewFieldElement(14084246204123262540)}, - {field.NewFieldElement(805087434192149117), field.NewFieldElement(5551650411462295908)}, - {field.NewFieldElement(3121050229008788536), field.NewFieldElement(315617444959225213)}, - {field.NewFieldElement(18164560008695666572), field.NewFieldElement(6915918288299894752)}, - {field.NewFieldElement(17656666988744688487), field.NewFieldElement(9787463123892858839)}, - {field.NewFieldElement(9992120570629943241), field.NewFieldElement(18182369503102252267)}, - {field.NewFieldElement(15220763248754170044), field.NewFieldElement(1854765527825350374)}, - {field.NewFieldElement(15616805521198580886), field.NewFieldElement(8948185005335797211)}, - {field.NewFieldElement(5104021995850318050), field.NewFieldElement(10884053699840350390)}, - {field.NewFieldElement(14387430073456386871), field.NewFieldElement(3987323970221931246)}, - {field.NewFieldElement(9295222033249226038), field.NewFieldElement(14533816739722288989)}, - {field.NewFieldElement(3054662272834320691), field.NewFieldElement(5799349468053737645)}, - {field.NewFieldElement(15410493100888282738), field.NewFieldElement(9030544573372043855)}, - {field.NewFieldElement(11448080360124361095), field.NewFieldElement(13429854637967689056)}, - {field.NewFieldElement(4779070979822400436), field.NewFieldElement(5404234368643419051)}, - {field.NewFieldElement(11659320767511898018), field.NewFieldElement(13702970547443564662)}, - {field.NewFieldElement(16340059712300851313), field.NewFieldElement(20171293486753699)}, - {field.NewFieldElement(1475826372470535678), field.NewFieldElement(1253469117109386509)}, - {field.NewFieldElement(7562163184139742598), field.NewFieldElement(14347739950500988111)}, - {field.NewFieldElement(15976520527988523610), field.NewFieldElement(17889280665602982933)}, - {field.NewFieldElement(8598539842276402160), field.NewFieldElement(2411306720494404310)}, - {field.NewFieldElement(15713704960139943242), field.NewFieldElement(16396602336341678687)}, - {field.NewFieldElement(7189190822731370344), field.NewFieldElement(5963822095937242833)}, - {field.NewFieldElement(5977752474999875040), field.NewFieldElement(5328103649776423975)}, - {field.NewFieldElement(12531991299101111394), field.NewFieldElement(3159886804356965397)}, - {field.NewFieldElement(16883082502877021850), field.NewFieldElement(4442238822519720348)}, - {field.NewFieldElement(4348679245531311390), field.NewFieldElement(6663472094175428592)}, - {field.NewFieldElement(7628612474113215133), field.NewFieldElement(9324555027165483004)}, - {field.NewFieldElement(1900695998785588032), field.NewFieldElement(12588745891116448183)}, - {field.NewFieldElement(2202928383842031597), field.NewFieldElement(2024867731300461655)}, - {field.NewFieldElement(9288136643086730543), field.NewFieldElement(4131544415785473139)}, - {field.NewFieldElement(14704106408467038509), field.NewFieldElement(8573856691828273)}, - {field.NewFieldElement(10154176515490297025), field.NewFieldElement(9220235036944332858)}, - {field.NewFieldElement(11339644645342271702), field.NewFieldElement(2591119884720569491)}, - {field.NewFieldElement(12952838693708363443), field.NewFieldElement(7634778748701478612)}, - {field.NewFieldElement(4151157005304656172), field.NewFieldElement(16778323503511515227)}, - {field.NewFieldElement(6326750425597671757), field.NewFieldElement(2556963653256638700)}, - {field.NewFieldElement(10167058989235599247), field.NewFieldElement(8755493046703376087)}, - {field.NewFieldElement(9610925836484089978), field.NewFieldElement(15994816336634155710)}, - {field.NewFieldElement(4153283843312210367), field.NewFieldElement(14936117891656525941)}, - {field.NewFieldElement(2708678512120193106), field.NewFieldElement(13963185898630435716)}, - {field.NewFieldElement(6555777227864205496), field.NewFieldElement(796547906377203466)}, - {field.NewFieldElement(9137905566620576524), field.NewFieldElement(5424975077133394401)}, - {field.NewFieldElement(10344710254569827655), field.NewFieldElement(5782463375043965385)}, - {field.NewFieldElement(5971898539021849982), field.NewFieldElement(8119512366912747083)}, - {field.NewFieldElement(10858355567899666102), field.NewFieldElement(18000616751093068478)}, - {field.NewFieldElement(16920330711313364238), field.NewFieldElement(8697067496869918100)}, - {field.NewFieldElement(7000103501288736536), field.NewFieldElement(10889037926963847627)}, - {field.NewFieldElement(2293930382336564785), field.NewFieldElement(1991911172589808532)}, - {field.NewFieldElement(16325792322333215740), field.NewFieldElement(10408910622457883954)}, - {field.NewFieldElement(7503118294246863546), field.NewFieldElement(3698311130768729720)}, - {field.NewFieldElement(8086040183115185263), field.NewFieldElement(5047183760990874466)}, - {field.NewFieldElement(9862182807054696027), field.NewFieldElement(1177341139111149965)}, - {field.NewFieldElement(16001172854107018622), field.NewFieldElement(10666261425617835543)}, - {field.NewFieldElement(5580184714347609844), field.NewFieldElement(12694115766192868759)}, - {field.NewFieldElement(18281558831138544975), field.NewFieldElement(3361626347282823513)}, - {field.NewFieldElement(3031997905089686532), field.NewFieldElement(15324883672435732043)}, - {field.NewFieldElement(450952121891526527), field.NewFieldElement(3760645720813651878)}, - {field.NewFieldElement(12802993704800176346), field.NewFieldElement(5762382859373230998)}, - {field.NewFieldElement(3276893202573968613), field.NewFieldElement(1800240087286854287)}, - {field.NewFieldElement(5921423446901282771), field.NewFieldElement(1701259673949139858)}, - {field.NewFieldElement(9599792256793291230), field.NewFieldElement(14953029539933413769)}, - {field.NewFieldElement(6924230983683680937), field.NewFieldElement(11341266871925411757)}, - {field.NewFieldElement(7369845262101528427), field.NewFieldElement(14511942995651504957)}, - {field.NewFieldElement(3575537879709813183), field.NewFieldElement(8500642062708926725)}, - {field.NewFieldElement(4175897998808440429), field.NewFieldElement(3374384071922541929)}, - {field.NewFieldElement(12757283027846003446), field.NewFieldElement(17905830097386863938)}, - {field.NewFieldElement(6320876143845688240), field.NewFieldElement(11931531275984972701)}, - {field.NewFieldElement(18217933064159243751), field.NewFieldElement(10071176713368801471)}, - {field.NewFieldElement(4777714881679002884), field.NewFieldElement(11864655235286620829)}, - {field.NewFieldElement(5051586433049660820), field.NewFieldElement(9706334979530647226)}, - {field.NewFieldElement(10142518025690185130), field.NewFieldElement(11625111857426302867)}, - {field.NewFieldElement(12942439955200094763), field.NewFieldElement(12974281474830386034)}, - {field.NewFieldElement(12714064210006754841), field.NewFieldElement(10541770037347437502)}, - {field.NewFieldElement(10048643184275048639), field.NewFieldElement(3986690477062097502)}, - {field.NewFieldElement(1705165528883143091), field.NewFieldElement(15274852618321664478)}, - {field.NewFieldElement(7505339430009963451), field.NewFieldElement(15833594687115464439)}, - {field.NewFieldElement(14969085142351848679), field.NewFieldElement(1313378114647584372)}, - {field.NewFieldElement(13860248504174697653), field.NewFieldElement(11813005399232850289)}, - {field.NewFieldElement(251943684565772115), field.NewFieldElement(7573719044708266257)}, - {field.NewFieldElement(3106490314923518751), field.NewFieldElement(6708785325259176544)}, - {field.NewFieldElement(16356137633407478618), field.NewFieldElement(10204772059332988569)}, - {field.NewFieldElement(6854820980459043959), field.NewFieldElement(15547517301904265885)}, - {field.NewFieldElement(11272546272005349344), field.NewFieldElement(13048057766361438654)}, - {field.NewFieldElement(1292326010164513793), field.NewFieldElement(3884499312974286465)}, - {field.NewFieldElement(13766861546348177296), field.NewFieldElement(16189793227494584882)}, - {field.NewFieldElement(17409073821234659314), field.NewFieldElement(9981103842753464857)}, - {field.NewFieldElement(9704863891305672730), field.NewFieldElement(6734589298170331622)}, - {field.NewFieldElement(12730115352516859625), field.NewFieldElement(7184752625986384624)}, - {field.NewFieldElement(11668345947294231238), field.NewFieldElement(16115042113565080691)}, - {field.NewFieldElement(14062084624592649794), field.NewFieldElement(2756332865729973692)}, - {field.NewFieldElement(3748768277402965633), field.NewFieldElement(16866814743891506413)}, - {field.NewFieldElement(10432481590948249422), field.NewFieldElement(16082227217718892532)}, - {field.NewFieldElement(491495918184990934), field.NewFieldElement(6356796615401236136)}, - {field.NewFieldElement(17901902629808882123), field.NewFieldElement(13514738065473981771)}, - {field.NewFieldElement(12660442011781098101), field.NewFieldElement(6869178288883388452)}, - {field.NewFieldElement(4393627135520874514), field.NewFieldElement(18356603129965580261)}, - {field.NewFieldElement(677707009508889751), field.NewFieldElement(12680875774839515608)}, - {field.NewFieldElement(10378933644525583340), field.NewFieldElement(13309450528739048419)}, - {field.NewFieldElement(17340442394158194152), field.NewFieldElement(2264038306172498436)}, - {field.NewFieldElement(3370239755875426470), field.NewFieldElement(16608802578078035004)}, - {field.NewFieldElement(10934853199725686361), field.NewFieldElement(16013313141655891901)}, - {field.NewFieldElement(13594205540632772459), field.NewFieldElement(2004743885124905326)}, - {field.NewFieldElement(2746704624744404227), field.NewFieldElement(16776409524391586509)}, - {field.NewFieldElement(3958873682280414366), field.NewFieldElement(1600073271711289868)}, - {field.NewFieldElement(2428249869256780385), field.NewFieldElement(4540186883415041033)}, - {field.NewFieldElement(11471613891518396403), field.NewFieldElement(12378090703999608437)}, - {field.NewFieldElement(2473054093631985558), field.NewFieldElement(6016173170699559864)}, - {field.NewFieldElement(5753078745189531749), field.NewFieldElement(7917608537613216175)}, - {field.NewFieldElement(8855440271433298214), field.NewFieldElement(16093723431433530090)}, - {field.NewFieldElement(18386320557740714138), field.NewFieldElement(8240697133069742104)}, - {field.NewFieldElement(15199992048380262587), field.NewFieldElement(2301519535136472331)}, - {field.NewFieldElement(5102771513133979026), field.NewFieldElement(12570336536575987923)}, + {field.NewFieldConst(10289971018233574142), field.NewFieldConst(4567684908222573778)}, + {field.NewFieldConst(11564178579868812087), field.NewFieldConst(4510091545046358953)}, + {field.NewFieldConst(2427374067806073277), field.NewFieldConst(6911441533263492425)}, + {field.NewFieldConst(7693977127287585254), field.NewFieldConst(9885192257977663560)}, + {field.NewFieldConst(4829743769894031521), field.NewFieldConst(1070322096310857911)}, + {field.NewFieldConst(841614584488095356), field.NewFieldConst(3266720090708573245)}, + {field.NewFieldConst(9335841732020668562), field.NewFieldConst(7959135654284183511)}, + {field.NewFieldConst(16824107175117300959), field.NewFieldConst(14823581113270528881)}, + {field.NewFieldConst(4989727169526686805), field.NewFieldConst(6246956987038299573)}, + {field.NewFieldConst(17410065909497815114), field.NewFieldConst(226319705525892670)}, + {field.NewFieldConst(4568933895769710275), field.NewFieldConst(6430695446169305195)}, + {field.NewFieldConst(8067075753959020505), field.NewFieldConst(6018662820882606998)}, + {field.NewFieldConst(9927277077277524164), field.NewFieldConst(12530942893897967446)}, + {field.NewFieldConst(404931240594605346), field.NewFieldConst(13956134990453188947)}, + {field.NewFieldConst(12279755093013597997), field.NewFieldConst(13891866662848929655)}, + {field.NewFieldConst(3995291408937855383), field.NewFieldConst(7649506537726031013)}, + {field.NewFieldConst(1975344541433284175), field.NewFieldConst(11787783246524974192)}, + {field.NewFieldConst(9352725388265956899), field.NewFieldConst(1878641993746760905)}, + {field.NewFieldConst(4386025806925594020), field.NewFieldConst(7199468962263347888)}, + {field.NewFieldConst(457758515510439949), field.NewFieldConst(8295940174808817473)}, + {field.NewFieldConst(3721711968672629644), field.NewFieldConst(13268744315779792869)}, + {field.NewFieldConst(14873968601320376905), field.NewFieldConst(14469960382794471278)}, + {field.NewFieldConst(16643239035786323413), field.NewFieldConst(14266572255541493756)}, + {field.NewFieldConst(9756649839930289884), field.NewFieldConst(14084246204123262540)}, + {field.NewFieldConst(805087434192149117), field.NewFieldConst(5551650411462295908)}, + {field.NewFieldConst(3121050229008788536), field.NewFieldConst(315617444959225213)}, + {field.NewFieldConst(18164560008695666572), field.NewFieldConst(6915918288299894752)}, + {field.NewFieldConst(17656666988744688487), field.NewFieldConst(9787463123892858839)}, + {field.NewFieldConst(9992120570629943241), field.NewFieldConst(18182369503102252267)}, + {field.NewFieldConst(15220763248754170044), field.NewFieldConst(1854765527825350374)}, + {field.NewFieldConst(15616805521198580886), field.NewFieldConst(8948185005335797211)}, + {field.NewFieldConst(5104021995850318050), field.NewFieldConst(10884053699840350390)}, + {field.NewFieldConst(14387430073456386871), field.NewFieldConst(3987323970221931246)}, + {field.NewFieldConst(9295222033249226038), field.NewFieldConst(14533816739722288989)}, + {field.NewFieldConst(3054662272834320691), field.NewFieldConst(5799349468053737645)}, + {field.NewFieldConst(15410493100888282738), field.NewFieldConst(9030544573372043855)}, + {field.NewFieldConst(11448080360124361095), field.NewFieldConst(13429854637967689056)}, + {field.NewFieldConst(4779070979822400436), field.NewFieldConst(5404234368643419051)}, + {field.NewFieldConst(11659320767511898018), field.NewFieldConst(13702970547443564662)}, + {field.NewFieldConst(16340059712300851313), field.NewFieldConst(20171293486753699)}, + {field.NewFieldConst(1475826372470535678), field.NewFieldConst(1253469117109386509)}, + {field.NewFieldConst(7562163184139742598), field.NewFieldConst(14347739950500988111)}, + {field.NewFieldConst(15976520527988523610), field.NewFieldConst(17889280665602982933)}, + {field.NewFieldConst(8598539842276402160), field.NewFieldConst(2411306720494404310)}, + {field.NewFieldConst(15713704960139943242), field.NewFieldConst(16396602336341678687)}, + {field.NewFieldConst(7189190822731370344), field.NewFieldConst(5963822095937242833)}, + {field.NewFieldConst(5977752474999875040), field.NewFieldConst(5328103649776423975)}, + {field.NewFieldConst(12531991299101111394), field.NewFieldConst(3159886804356965397)}, + {field.NewFieldConst(16883082502877021850), field.NewFieldConst(4442238822519720348)}, + {field.NewFieldConst(4348679245531311390), field.NewFieldConst(6663472094175428592)}, + {field.NewFieldConst(7628612474113215133), field.NewFieldConst(9324555027165483004)}, + {field.NewFieldConst(1900695998785588032), field.NewFieldConst(12588745891116448183)}, + {field.NewFieldConst(2202928383842031597), field.NewFieldConst(2024867731300461655)}, + {field.NewFieldConst(9288136643086730543), field.NewFieldConst(4131544415785473139)}, + {field.NewFieldConst(14704106408467038509), field.NewFieldConst(8573856691828273)}, + {field.NewFieldConst(10154176515490297025), field.NewFieldConst(9220235036944332858)}, + {field.NewFieldConst(11339644645342271702), field.NewFieldConst(2591119884720569491)}, + {field.NewFieldConst(12952838693708363443), field.NewFieldConst(7634778748701478612)}, + {field.NewFieldConst(4151157005304656172), field.NewFieldConst(16778323503511515227)}, + {field.NewFieldConst(6326750425597671757), field.NewFieldConst(2556963653256638700)}, + {field.NewFieldConst(10167058989235599247), field.NewFieldConst(8755493046703376087)}, + {field.NewFieldConst(9610925836484089978), field.NewFieldConst(15994816336634155710)}, + {field.NewFieldConst(4153283843312210367), field.NewFieldConst(14936117891656525941)}, + {field.NewFieldConst(2708678512120193106), field.NewFieldConst(13963185898630435716)}, + {field.NewFieldConst(6555777227864205496), field.NewFieldConst(796547906377203466)}, + {field.NewFieldConst(9137905566620576524), field.NewFieldConst(5424975077133394401)}, + {field.NewFieldConst(10344710254569827655), field.NewFieldConst(5782463375043965385)}, + {field.NewFieldConst(5971898539021849982), field.NewFieldConst(8119512366912747083)}, + {field.NewFieldConst(10858355567899666102), field.NewFieldConst(18000616751093068478)}, + {field.NewFieldConst(16920330711313364238), field.NewFieldConst(8697067496869918100)}, + {field.NewFieldConst(7000103501288736536), field.NewFieldConst(10889037926963847627)}, + {field.NewFieldConst(2293930382336564785), field.NewFieldConst(1991911172589808532)}, + {field.NewFieldConst(16325792322333215740), field.NewFieldConst(10408910622457883954)}, + {field.NewFieldConst(7503118294246863546), field.NewFieldConst(3698311130768729720)}, + {field.NewFieldConst(8086040183115185263), field.NewFieldConst(5047183760990874466)}, + {field.NewFieldConst(9862182807054696027), field.NewFieldConst(1177341139111149965)}, + {field.NewFieldConst(16001172854107018622), field.NewFieldConst(10666261425617835543)}, + {field.NewFieldConst(5580184714347609844), field.NewFieldConst(12694115766192868759)}, + {field.NewFieldConst(18281558831138544975), field.NewFieldConst(3361626347282823513)}, + {field.NewFieldConst(3031997905089686532), field.NewFieldConst(15324883672435732043)}, + {field.NewFieldConst(450952121891526527), field.NewFieldConst(3760645720813651878)}, + {field.NewFieldConst(12802993704800176346), field.NewFieldConst(5762382859373230998)}, + {field.NewFieldConst(3276893202573968613), field.NewFieldConst(1800240087286854287)}, + {field.NewFieldConst(5921423446901282771), field.NewFieldConst(1701259673949139858)}, + {field.NewFieldConst(9599792256793291230), field.NewFieldConst(14953029539933413769)}, + {field.NewFieldConst(6924230983683680937), field.NewFieldConst(11341266871925411757)}, + {field.NewFieldConst(7369845262101528427), field.NewFieldConst(14511942995651504957)}, + {field.NewFieldConst(3575537879709813183), field.NewFieldConst(8500642062708926725)}, + {field.NewFieldConst(4175897998808440429), field.NewFieldConst(3374384071922541929)}, + {field.NewFieldConst(12757283027846003446), field.NewFieldConst(17905830097386863938)}, + {field.NewFieldConst(6320876143845688240), field.NewFieldConst(11931531275984972701)}, + {field.NewFieldConst(18217933064159243751), field.NewFieldConst(10071176713368801471)}, + {field.NewFieldConst(4777714881679002884), field.NewFieldConst(11864655235286620829)}, + {field.NewFieldConst(5051586433049660820), field.NewFieldConst(9706334979530647226)}, + {field.NewFieldConst(10142518025690185130), field.NewFieldConst(11625111857426302867)}, + {field.NewFieldConst(12942439955200094763), field.NewFieldConst(12974281474830386034)}, + {field.NewFieldConst(12714064210006754841), field.NewFieldConst(10541770037347437502)}, + {field.NewFieldConst(10048643184275048639), field.NewFieldConst(3986690477062097502)}, + {field.NewFieldConst(1705165528883143091), field.NewFieldConst(15274852618321664478)}, + {field.NewFieldConst(7505339430009963451), field.NewFieldConst(15833594687115464439)}, + {field.NewFieldConst(14969085142351848679), field.NewFieldConst(1313378114647584372)}, + {field.NewFieldConst(13860248504174697653), field.NewFieldConst(11813005399232850289)}, + {field.NewFieldConst(251943684565772115), field.NewFieldConst(7573719044708266257)}, + {field.NewFieldConst(3106490314923518751), field.NewFieldConst(6708785325259176544)}, + {field.NewFieldConst(16356137633407478618), field.NewFieldConst(10204772059332988569)}, + {field.NewFieldConst(6854820980459043959), field.NewFieldConst(15547517301904265885)}, + {field.NewFieldConst(11272546272005349344), field.NewFieldConst(13048057766361438654)}, + {field.NewFieldConst(1292326010164513793), field.NewFieldConst(3884499312974286465)}, + {field.NewFieldConst(13766861546348177296), field.NewFieldConst(16189793227494584882)}, + {field.NewFieldConst(17409073821234659314), field.NewFieldConst(9981103842753464857)}, + {field.NewFieldConst(9704863891305672730), field.NewFieldConst(6734589298170331622)}, + {field.NewFieldConst(12730115352516859625), field.NewFieldConst(7184752625986384624)}, + {field.NewFieldConst(11668345947294231238), field.NewFieldConst(16115042113565080691)}, + {field.NewFieldConst(14062084624592649794), field.NewFieldConst(2756332865729973692)}, + {field.NewFieldConst(3748768277402965633), field.NewFieldConst(16866814743891506413)}, + {field.NewFieldConst(10432481590948249422), field.NewFieldConst(16082227217718892532)}, + {field.NewFieldConst(491495918184990934), field.NewFieldConst(6356796615401236136)}, + {field.NewFieldConst(17901902629808882123), field.NewFieldConst(13514738065473981771)}, + {field.NewFieldConst(12660442011781098101), field.NewFieldConst(6869178288883388452)}, + {field.NewFieldConst(4393627135520874514), field.NewFieldConst(18356603129965580261)}, + {field.NewFieldConst(677707009508889751), field.NewFieldConst(12680875774839515608)}, + {field.NewFieldConst(10378933644525583340), field.NewFieldConst(13309450528739048419)}, + {field.NewFieldConst(17340442394158194152), field.NewFieldConst(2264038306172498436)}, + {field.NewFieldConst(3370239755875426470), field.NewFieldConst(16608802578078035004)}, + {field.NewFieldConst(10934853199725686361), field.NewFieldConst(16013313141655891901)}, + {field.NewFieldConst(13594205540632772459), field.NewFieldConst(2004743885124905326)}, + {field.NewFieldConst(2746704624744404227), field.NewFieldConst(16776409524391586509)}, + {field.NewFieldConst(3958873682280414366), field.NewFieldConst(1600073271711289868)}, + {field.NewFieldConst(2428249869256780385), field.NewFieldConst(4540186883415041033)}, + {field.NewFieldConst(11471613891518396403), field.NewFieldConst(12378090703999608437)}, + {field.NewFieldConst(2473054093631985558), field.NewFieldConst(6016173170699559864)}, + {field.NewFieldConst(5753078745189531749), field.NewFieldConst(7917608537613216175)}, + {field.NewFieldConst(8855440271433298214), field.NewFieldConst(16093723431433530090)}, + {field.NewFieldConst(18386320557740714138), field.NewFieldConst(8240697133069742104)}, + {field.NewFieldConst(15199992048380262587), field.NewFieldConst(2301519535136472331)}, + {field.NewFieldConst(5102771513133979026), field.NewFieldConst(12570336536575987923)}, } var publicInputsHash = poseidon.Hash{field.ZERO_F, field.ZERO_F, field.ZERO_F, field.ZERO_F} var publicInputGateExpectedConstraints = []field.QuadraticExtension{ - {field.NewFieldElement(10289971018233574142), field.NewFieldElement(4567684908222573778)}, - {field.NewFieldElement(11564178579868812087), field.NewFieldElement(4510091545046358953)}, - {field.NewFieldElement(2427374067806073277), field.NewFieldElement(6911441533263492425)}, - {field.NewFieldElement(7693977127287585254), field.NewFieldElement(9885192257977663560)}, + {field.NewFieldConst(10289971018233574142), field.NewFieldConst(4567684908222573778)}, + {field.NewFieldConst(11564178579868812087), field.NewFieldConst(4510091545046358953)}, + {field.NewFieldConst(2427374067806073277), field.NewFieldConst(6911441533263492425)}, + {field.NewFieldConst(7693977127287585254), field.NewFieldConst(9885192257977663560)}, } // BaseSumGate { num_limbs: 63 }), (Base: 2) var baseSumGateExpectedConstraints = []field.QuadraticExtension{ - {field.NewFieldElement(11424008506420489027), field.NewFieldElement(2915141729320103909)}, - {field.NewFieldElement(990850510351998129), field.NewFieldElement(10775195787959069600)}, - {field.NewFieldElement(6614688617813304624), field.NewFieldElement(11090441606706959264)}, - {field.NewFieldElement(17750388994193092499), field.NewFieldElement(9822716613211085052)}, - {field.NewFieldElement(15668686535963465292), field.NewFieldElement(5860790519230132950)}, - {field.NewFieldElement(9301693563861638036), field.NewFieldElement(5759072521542705927)}, - {field.NewFieldElement(1463677617048504116), field.NewFieldElement(657088188145156737)}, - {field.NewFieldElement(11221326157331101168), field.NewFieldElement(3258353713560294154)}, - {field.NewFieldElement(6298170343528505052), field.NewFieldElement(1515404430931450244)}, - {field.NewFieldElement(10609142393996097059), field.NewFieldElement(5676353771077187085)}, - {field.NewFieldElement(15377741222281320), field.NewFieldElement(17210062473996670458)}, - {field.NewFieldElement(16623098697475668629), field.NewFieldElement(16010660943931470875)}, - {field.NewFieldElement(13742463434921610007), field.NewFieldElement(11069510319782271171)}, - {field.NewFieldElement(14872905802739821087), field.NewFieldElement(16577474870939262513)}, - {field.NewFieldElement(15699671366929256655), field.NewFieldElement(15598194197245819873)}, - {field.NewFieldElement(10679123900573339697), field.NewFieldElement(10228522398312889861)}, - {field.NewFieldElement(8872281223292031801), field.NewFieldElement(1329834573379055460)}, - {field.NewFieldElement(2535224613123191755), field.NewFieldElement(12786291812393663221)}, - {field.NewFieldElement(17788228910394641125), field.NewFieldElement(5545904820430114370)}, - {field.NewFieldElement(10489817294122939391), field.NewFieldElement(14636352222428121923)}, - {field.NewFieldElement(10852238020744398528), field.NewFieldElement(2312796082809010853)}, - {field.NewFieldElement(5067875522341132442), field.NewFieldElement(2107737958122288286)}, - {field.NewFieldElement(17283146688878926257), field.NewFieldElement(8456549639899437925)}, - {field.NewFieldElement(10637171512256553781), field.NewFieldElement(6390530901963054085)}, - {field.NewFieldElement(7586090218847390134), field.NewFieldElement(13687926314033375459)}, - {field.NewFieldElement(9523662200490053374), field.NewFieldElement(13361040406642218763)}, - {field.NewFieldElement(634822311162237689), field.NewFieldElement(9630483174624222223)}, - {field.NewFieldElement(15242934013445465604), field.NewFieldElement(1135488709061427932)}, - {field.NewFieldElement(10311174951052257420), field.NewFieldElement(524968500387403585)}, - {field.NewFieldElement(6646751050961926593), field.NewFieldElement(8684017064299024213)}, - {field.NewFieldElement(16629184374162391253), field.NewFieldElement(13745216788879851113)}, - {field.NewFieldElement(15725765914323741961), field.NewFieldElement(4607182206571650287)}, - {field.NewFieldElement(4905637093691966606), field.NewFieldElement(218562275165442331)}, - {field.NewFieldElement(15526612325511973871), field.NewFieldElement(5770955229659050735)}, - {field.NewFieldElement(9591223869277908917), field.NewFieldElement(1518900007157334701)}, - {field.NewFieldElement(14713177841944866109), field.NewFieldElement(16661134545564989407)}, - {field.NewFieldElement(4236602876840371235), field.NewFieldElement(12185730046300426061)}, - {field.NewFieldElement(14844502873470690827), field.NewFieldElement(5567680392033564858)}, - {field.NewFieldElement(5550472614893629959), field.NewFieldElement(17955875404530787722)}, - {field.NewFieldElement(9965647340229188622), field.NewFieldElement(12067752288619191155)}, - {field.NewFieldElement(15624184226617424434), field.NewFieldElement(13522086059807517857)}, - {field.NewFieldElement(6001948917737119729), field.NewFieldElement(10555349705067997421)}, - {field.NewFieldElement(7967852853408273634), field.NewFieldElement(16393445105337145265)}, - {field.NewFieldElement(13601491066758079307), field.NewFieldElement(11390709918813075818)}, - {field.NewFieldElement(5704706916270196865), field.NewFieldElement(17007264058732032659)}, - {field.NewFieldElement(18354610167186324196), field.NewFieldElement(16917152819910011122)}, - {field.NewFieldElement(6026824824087688959), field.NewFieldElement(11547555659280958524)}, - {field.NewFieldElement(15645938871784252821), field.NewFieldElement(12381341093764170444)}, - {field.NewFieldElement(1202470274460413029), field.NewFieldElement(3583599940021118482)}, - {field.NewFieldElement(5248479930891455774), field.NewFieldElement(2393692482194449448)}, - {field.NewFieldElement(13386434971986911647), field.NewFieldElement(12326376082602154018)}, - {field.NewFieldElement(11327299405009394635), field.NewFieldElement(7538844592867989882)}, - {field.NewFieldElement(7984839537656677309), field.NewFieldElement(6441274039505923023)}, - {field.NewFieldElement(3942932013374375924), field.NewFieldElement(6548354659360045418)}, - {field.NewFieldElement(10139699962065730425), field.NewFieldElement(16908585391181627242)}, - {field.NewFieldElement(18094104343668325187), field.NewFieldElement(8370083050741645827)}, - {field.NewFieldElement(12131340922292526267), field.NewFieldElement(17299488555769517106)}, - {field.NewFieldElement(11470330746430670818), field.NewFieldElement(15960507373360402879)}, - {field.NewFieldElement(386512699105836065), field.NewFieldElement(8986007306829996238)}, - {field.NewFieldElement(1834598616243509000), field.NewFieldElement(14626792908408543748)}, - {field.NewFieldElement(17890037858181404101), field.NewFieldElement(17018218424290394313)}, - {field.NewFieldElement(11758664078194540174), field.NewFieldElement(16603941107284246147)}, - {field.NewFieldElement(14022184733842887279), field.NewFieldElement(13741139908708752348)}, - {field.NewFieldElement(4836630213324422487), field.NewFieldElement(222498232493222193)}, + {field.NewFieldConst(11424008506420489027), field.NewFieldConst(2915141729320103909)}, + {field.NewFieldConst(990850510351998129), field.NewFieldConst(10775195787959069600)}, + {field.NewFieldConst(6614688617813304624), field.NewFieldConst(11090441606706959264)}, + {field.NewFieldConst(17750388994193092499), field.NewFieldConst(9822716613211085052)}, + {field.NewFieldConst(15668686535963465292), field.NewFieldConst(5860790519230132950)}, + {field.NewFieldConst(9301693563861638036), field.NewFieldConst(5759072521542705927)}, + {field.NewFieldConst(1463677617048504116), field.NewFieldConst(657088188145156737)}, + {field.NewFieldConst(11221326157331101168), field.NewFieldConst(3258353713560294154)}, + {field.NewFieldConst(6298170343528505052), field.NewFieldConst(1515404430931450244)}, + {field.NewFieldConst(10609142393996097059), field.NewFieldConst(5676353771077187085)}, + {field.NewFieldConst(15377741222281320), field.NewFieldConst(17210062473996670458)}, + {field.NewFieldConst(16623098697475668629), field.NewFieldConst(16010660943931470875)}, + {field.NewFieldConst(13742463434921610007), field.NewFieldConst(11069510319782271171)}, + {field.NewFieldConst(14872905802739821087), field.NewFieldConst(16577474870939262513)}, + {field.NewFieldConst(15699671366929256655), field.NewFieldConst(15598194197245819873)}, + {field.NewFieldConst(10679123900573339697), field.NewFieldConst(10228522398312889861)}, + {field.NewFieldConst(8872281223292031801), field.NewFieldConst(1329834573379055460)}, + {field.NewFieldConst(2535224613123191755), field.NewFieldConst(12786291812393663221)}, + {field.NewFieldConst(17788228910394641125), field.NewFieldConst(5545904820430114370)}, + {field.NewFieldConst(10489817294122939391), field.NewFieldConst(14636352222428121923)}, + {field.NewFieldConst(10852238020744398528), field.NewFieldConst(2312796082809010853)}, + {field.NewFieldConst(5067875522341132442), field.NewFieldConst(2107737958122288286)}, + {field.NewFieldConst(17283146688878926257), field.NewFieldConst(8456549639899437925)}, + {field.NewFieldConst(10637171512256553781), field.NewFieldConst(6390530901963054085)}, + {field.NewFieldConst(7586090218847390134), field.NewFieldConst(13687926314033375459)}, + {field.NewFieldConst(9523662200490053374), field.NewFieldConst(13361040406642218763)}, + {field.NewFieldConst(634822311162237689), field.NewFieldConst(9630483174624222223)}, + {field.NewFieldConst(15242934013445465604), field.NewFieldConst(1135488709061427932)}, + {field.NewFieldConst(10311174951052257420), field.NewFieldConst(524968500387403585)}, + {field.NewFieldConst(6646751050961926593), field.NewFieldConst(8684017064299024213)}, + {field.NewFieldConst(16629184374162391253), field.NewFieldConst(13745216788879851113)}, + {field.NewFieldConst(15725765914323741961), field.NewFieldConst(4607182206571650287)}, + {field.NewFieldConst(4905637093691966606), field.NewFieldConst(218562275165442331)}, + {field.NewFieldConst(15526612325511973871), field.NewFieldConst(5770955229659050735)}, + {field.NewFieldConst(9591223869277908917), field.NewFieldConst(1518900007157334701)}, + {field.NewFieldConst(14713177841944866109), field.NewFieldConst(16661134545564989407)}, + {field.NewFieldConst(4236602876840371235), field.NewFieldConst(12185730046300426061)}, + {field.NewFieldConst(14844502873470690827), field.NewFieldConst(5567680392033564858)}, + {field.NewFieldConst(5550472614893629959), field.NewFieldConst(17955875404530787722)}, + {field.NewFieldConst(9965647340229188622), field.NewFieldConst(12067752288619191155)}, + {field.NewFieldConst(15624184226617424434), field.NewFieldConst(13522086059807517857)}, + {field.NewFieldConst(6001948917737119729), field.NewFieldConst(10555349705067997421)}, + {field.NewFieldConst(7967852853408273634), field.NewFieldConst(16393445105337145265)}, + {field.NewFieldConst(13601491066758079307), field.NewFieldConst(11390709918813075818)}, + {field.NewFieldConst(5704706916270196865), field.NewFieldConst(17007264058732032659)}, + {field.NewFieldConst(18354610167186324196), field.NewFieldConst(16917152819910011122)}, + {field.NewFieldConst(6026824824087688959), field.NewFieldConst(11547555659280958524)}, + {field.NewFieldConst(15645938871784252821), field.NewFieldConst(12381341093764170444)}, + {field.NewFieldConst(1202470274460413029), field.NewFieldConst(3583599940021118482)}, + {field.NewFieldConst(5248479930891455774), field.NewFieldConst(2393692482194449448)}, + {field.NewFieldConst(13386434971986911647), field.NewFieldConst(12326376082602154018)}, + {field.NewFieldConst(11327299405009394635), field.NewFieldConst(7538844592867989882)}, + {field.NewFieldConst(7984839537656677309), field.NewFieldConst(6441274039505923023)}, + {field.NewFieldConst(3942932013374375924), field.NewFieldConst(6548354659360045418)}, + {field.NewFieldConst(10139699962065730425), field.NewFieldConst(16908585391181627242)}, + {field.NewFieldConst(18094104343668325187), field.NewFieldConst(8370083050741645827)}, + {field.NewFieldConst(12131340922292526267), field.NewFieldConst(17299488555769517106)}, + {field.NewFieldConst(11470330746430670818), field.NewFieldConst(15960507373360402879)}, + {field.NewFieldConst(386512699105836065), field.NewFieldConst(8986007306829996238)}, + {field.NewFieldConst(1834598616243509000), field.NewFieldConst(14626792908408543748)}, + {field.NewFieldConst(17890037858181404101), field.NewFieldConst(17018218424290394313)}, + {field.NewFieldConst(11758664078194540174), field.NewFieldConst(16603941107284246147)}, + {field.NewFieldConst(14022184733842887279), field.NewFieldConst(13741139908708752348)}, + {field.NewFieldConst(4836630213324422487), field.NewFieldConst(222498232493222193)}, } // ArithmeticGate { num_ops: 20 } var arithmeticGateExpectedConstraints = []field.QuadraticExtension{ - {field.NewFieldElement(12119614175182896132), field.NewFieldElement(9100747776469133669)}, - {field.NewFieldElement(1435113994507051493), field.NewFieldElement(16937897191584383857)}, - {field.NewFieldElement(51616472710099652), field.NewFieldElement(4146295929435411488)}, - {field.NewFieldElement(92237181388579392), field.NewFieldElement(12824787281527009080)}, - {field.NewFieldElement(11063958613047368831), field.NewFieldElement(516751095582253219)}, - {field.NewFieldElement(8881502495740733965), field.NewFieldElement(5405782271334426100)}, - {field.NewFieldElement(9646745645960524278), field.NewFieldElement(6323317609176095073)}, - {field.NewFieldElement(10334354202446659881), field.NewFieldElement(17865166204439996809)}, - {field.NewFieldElement(9511789862027881130), field.NewFieldElement(17897392861017078901)}, - {field.NewFieldElement(4686618214331097217), field.NewFieldElement(7102232698145277151)}, - {field.NewFieldElement(5140381642477065044), field.NewFieldElement(15554316144351441473)}, - {field.NewFieldElement(14252043934312871974), field.NewFieldElement(1198292921407928539)}, - {field.NewFieldElement(13289413398237564138), field.NewFieldElement(15704998539419457452)}, - {field.NewFieldElement(4800979510155331538), field.NewFieldElement(14057404157182035427)}, - {field.NewFieldElement(17908028924715246889), field.NewFieldElement(8716376706845369224)}, - {field.NewFieldElement(3226678693544038862), field.NewFieldElement(5577680088492344738)}, - {field.NewFieldElement(10987852156126930017), field.NewFieldElement(16323667584216755558)}, - {field.NewFieldElement(5135981108938961064), field.NewFieldElement(6684115991562770960)}, - {field.NewFieldElement(8519638889718596339), field.NewFieldElement(7662028578892995756)}, - {field.NewFieldElement(7747323897933750795), field.NewFieldElement(6872730347313691927)}, + {field.NewFieldConst(12119614175182896132), field.NewFieldConst(9100747776469133669)}, + {field.NewFieldConst(1435113994507051493), field.NewFieldConst(16937897191584383857)}, + {field.NewFieldConst(51616472710099652), field.NewFieldConst(4146295929435411488)}, + {field.NewFieldConst(92237181388579392), field.NewFieldConst(12824787281527009080)}, + {field.NewFieldConst(11063958613047368831), field.NewFieldConst(516751095582253219)}, + {field.NewFieldConst(8881502495740733965), field.NewFieldConst(5405782271334426100)}, + {field.NewFieldConst(9646745645960524278), field.NewFieldConst(6323317609176095073)}, + {field.NewFieldConst(10334354202446659881), field.NewFieldConst(17865166204439996809)}, + {field.NewFieldConst(9511789862027881130), field.NewFieldConst(17897392861017078901)}, + {field.NewFieldConst(4686618214331097217), field.NewFieldConst(7102232698145277151)}, + {field.NewFieldConst(5140381642477065044), field.NewFieldConst(15554316144351441473)}, + {field.NewFieldConst(14252043934312871974), field.NewFieldConst(1198292921407928539)}, + {field.NewFieldConst(13289413398237564138), field.NewFieldConst(15704998539419457452)}, + {field.NewFieldConst(4800979510155331538), field.NewFieldConst(14057404157182035427)}, + {field.NewFieldConst(17908028924715246889), field.NewFieldConst(8716376706845369224)}, + {field.NewFieldConst(3226678693544038862), field.NewFieldConst(5577680088492344738)}, + {field.NewFieldConst(10987852156126930017), field.NewFieldConst(16323667584216755558)}, + {field.NewFieldConst(5135981108938961064), field.NewFieldConst(6684115991562770960)}, + {field.NewFieldConst(8519638889718596339), field.NewFieldConst(7662028578892995756)}, + {field.NewFieldConst(7747323897933750795), field.NewFieldConst(6872730347313691927)}, } // RandomAccessGate { bits: 4, num_copies: 4, num_extra_constants: 2, _phantom: PhantomData } var randomAccessGateExpectedConstraints = []field.QuadraticExtension{ - {field.NewFieldElement(2891299230460455680), field.NewFieldElement(12638923114586787038)}, - {field.NewFieldElement(10369791235277272383), field.NewFieldElement(11178254747952182382)}, - {field.NewFieldElement(2609100974341658152), field.NewFieldElement(7141157629969452340)}, - {field.NewFieldElement(10885639242129231953), field.NewFieldElement(10224819739496777877)}, - {field.NewFieldElement(15486139493712450489), field.NewFieldElement(17924944477102802615)}, - {field.NewFieldElement(5969758517166950176), field.NewFieldElement(4139464862931677318)}, - {field.NewFieldElement(7251510967440451429), field.NewFieldElement(11634060506931912043)}, - {field.NewFieldElement(581371472896562405), field.NewFieldElement(1340263685452848185)}, - {field.NewFieldElement(11876289968532354241), field.NewFieldElement(39606365246086104)}, - {field.NewFieldElement(17037991399414168046), field.NewFieldElement(9356315359108087151)}, - {field.NewFieldElement(13506822543872334969), field.NewFieldElement(14166594210473057923)}, - {field.NewFieldElement(530968584207084639), field.NewFieldElement(12346975065647187607)}, - {field.NewFieldElement(8780439534301283756), field.NewFieldElement(14250307971393105395)}, - {field.NewFieldElement(5955166439403627952), field.NewFieldElement(427818832806268253)}, - {field.NewFieldElement(10383473532295208089), field.NewFieldElement(10834018170496866410)}, - {field.NewFieldElement(17770159895239813531), field.NewFieldElement(3803908573438301448)}, - {field.NewFieldElement(5230956285821863871), field.NewFieldElement(13187949446452303832)}, - {field.NewFieldElement(4082775007574051589), field.NewFieldElement(17608951079871259588)}, - {field.NewFieldElement(15832332042406144153), field.NewFieldElement(9112933169473505864)}, - {field.NewFieldElement(17289713569232165217), field.NewFieldElement(764355564171754371)}, - {field.NewFieldElement(11875388597093781742), field.NewFieldElement(17390337221018798452)}, - {field.NewFieldElement(14723779398624676305), field.NewFieldElement(4351422752569601515)}, - {field.NewFieldElement(7898206414568399642), field.NewFieldElement(3781389637016766144)}, - {field.NewFieldElement(10959059343195760030), field.NewFieldElement(17524903422154932359)}, - {field.NewFieldElement(7305896571823662942), field.NewFieldElement(12962835460398538761)}, - {field.NewFieldElement(5653738395766265725), field.NewFieldElement(8097455003461687478)}, + {field.NewFieldConst(2891299230460455680), field.NewFieldConst(12638923114586787038)}, + {field.NewFieldConst(10369791235277272383), field.NewFieldConst(11178254747952182382)}, + {field.NewFieldConst(2609100974341658152), field.NewFieldConst(7141157629969452340)}, + {field.NewFieldConst(10885639242129231953), field.NewFieldConst(10224819739496777877)}, + {field.NewFieldConst(15486139493712450489), field.NewFieldConst(17924944477102802615)}, + {field.NewFieldConst(5969758517166950176), field.NewFieldConst(4139464862931677318)}, + {field.NewFieldConst(7251510967440451429), field.NewFieldConst(11634060506931912043)}, + {field.NewFieldConst(581371472896562405), field.NewFieldConst(1340263685452848185)}, + {field.NewFieldConst(11876289968532354241), field.NewFieldConst(39606365246086104)}, + {field.NewFieldConst(17037991399414168046), field.NewFieldConst(9356315359108087151)}, + {field.NewFieldConst(13506822543872334969), field.NewFieldConst(14166594210473057923)}, + {field.NewFieldConst(530968584207084639), field.NewFieldConst(12346975065647187607)}, + {field.NewFieldConst(8780439534301283756), field.NewFieldConst(14250307971393105395)}, + {field.NewFieldConst(5955166439403627952), field.NewFieldConst(427818832806268253)}, + {field.NewFieldConst(10383473532295208089), field.NewFieldConst(10834018170496866410)}, + {field.NewFieldConst(17770159895239813531), field.NewFieldConst(3803908573438301448)}, + {field.NewFieldConst(5230956285821863871), field.NewFieldConst(13187949446452303832)}, + {field.NewFieldConst(4082775007574051589), field.NewFieldConst(17608951079871259588)}, + {field.NewFieldConst(15832332042406144153), field.NewFieldConst(9112933169473505864)}, + {field.NewFieldConst(17289713569232165217), field.NewFieldConst(764355564171754371)}, + {field.NewFieldConst(11875388597093781742), field.NewFieldConst(17390337221018798452)}, + {field.NewFieldConst(14723779398624676305), field.NewFieldConst(4351422752569601515)}, + {field.NewFieldConst(7898206414568399642), field.NewFieldConst(3781389637016766144)}, + {field.NewFieldConst(10959059343195760030), field.NewFieldConst(17524903422154932359)}, + {field.NewFieldConst(7305896571823662942), field.NewFieldConst(12962835460398538761)}, + {field.NewFieldConst(5653738395766265725), field.NewFieldConst(8097455003461687478)}, } // PoseidonGate(PhantomData) var poseidonGateExpectedConstraints = []field.QuadraticExtension{ - {field.NewFieldElement(7586090218847390134), field.NewFieldElement(13687926314033375459)}, - {field.NewFieldElement(10774680496478357997), field.NewFieldElement(14419929234728022600)}, - {field.NewFieldElement(983485807903636414), field.NewFieldElement(3028876395437704592)}, - {field.NewFieldElement(5873163034459252869), field.NewFieldElement(11720300428168955402)}, - {field.NewFieldElement(16261775977438390033), field.NewFieldElement(15598817592005081227)}, - {field.NewFieldElement(3308439339359285309), field.NewFieldElement(16350160944703138332)}, - {field.NewFieldElement(2477915029208949035), field.NewFieldElement(10909058342937234971)}, - {field.NewFieldElement(2006101431747008114), field.NewFieldElement(1317396811566929515)}, - {field.NewFieldElement(5743380333218483835), field.NewFieldElement(9864892326580372485)}, - {field.NewFieldElement(4343047746155696133), field.NewFieldElement(2452956674303649004)}, - {field.NewFieldElement(18237771591472199486), field.NewFieldElement(9201720967486340889)}, - {field.NewFieldElement(7997743545022954538), field.NewFieldElement(5790905224346459337)}, - {field.NewFieldElement(7270313259765139533), field.NewFieldElement(13664497978956485388)}, - {field.NewFieldElement(11627392666242516567), field.NewFieldElement(6707531853885096654)}, - {field.NewFieldElement(14108041676779390728), field.NewFieldElement(13890317640467961363)}, - {field.NewFieldElement(10461937206408578346), field.NewFieldElement(16929842020525911045)}, - {field.NewFieldElement(14163490001894639417), field.NewFieldElement(6486250350832733344)}, - {field.NewFieldElement(6025822272051423893), field.NewFieldElement(6875599327185319749)}, - {field.NewFieldElement(11800406778761598568), field.NewFieldElement(13445736562420900345)}, - {field.NewFieldElement(8721632296347252438), field.NewFieldElement(15861696011210243831)}, - {field.NewFieldElement(13862698645551446166), field.NewFieldElement(10895802231885823011)}, - {field.NewFieldElement(9467131299943023152), field.NewFieldElement(508610840287781764)}, - {field.NewFieldElement(10369576299876905473), field.NewFieldElement(1319089684709412204)}, - {field.NewFieldElement(17202741125808968481), field.NewFieldElement(4132975454251812345)}, - {field.NewFieldElement(4939406044782203142), field.NewFieldElement(18100435685377738067)}, - {field.NewFieldElement(2662601992953696766), field.NewFieldElement(5356898997486457355)}, - {field.NewFieldElement(12240740991568526347), field.NewFieldElement(14183052793978601368)}, - {field.NewFieldElement(17267799754824241908), field.NewFieldElement(15067892579134674951)}, - {field.NewFieldElement(3885637219153712510), field.NewFieldElement(2045928245539296545)}, - {field.NewFieldElement(7614199998298216925), field.NewFieldElement(13135807303144108264)}, - {field.NewFieldElement(12232208765790877245), field.NewFieldElement(6790391920585566719)}, - {field.NewFieldElement(14027621788671850076), field.NewFieldElement(8244116705079721069)}, - {field.NewFieldElement(18361849947075265980), field.NewFieldElement(636640170174188211)}, - {field.NewFieldElement(15400723839777269850), field.NewFieldElement(7187627113110641974)}, - {field.NewFieldElement(11208418886499216060), field.NewFieldElement(1068905181682993370)}, - {field.NewFieldElement(8741978871712571992), field.NewFieldElement(11893984108008599655)}, - {field.NewFieldElement(5904231306484990036), field.NewFieldElement(10974042651195177783)}, - {field.NewFieldElement(12306264278608747297), field.NewFieldElement(6054935933756948006)}, - {field.NewFieldElement(4439661353730067518), field.NewFieldElement(13536513851562309841)}, - {field.NewFieldElement(13020734370698999772), field.NewFieldElement(163773705062531020)}, - {field.NewFieldElement(10365756846699668634), field.NewFieldElement(5245413619357449)}, - {field.NewFieldElement(15929862436085820709), field.NewFieldElement(10957910821863876318)}, - {field.NewFieldElement(977018799724983158), field.NewFieldElement(15040949766668867994)}, - {field.NewFieldElement(2993125862244950582), field.NewFieldElement(13234404554976574543)}, - {field.NewFieldElement(14122201262568632993), field.NewFieldElement(93763383340088526)}, - {field.NewFieldElement(8975477202804925208), field.NewFieldElement(1040893022864763499)}, - {field.NewFieldElement(7725813871064262870), field.NewFieldElement(14455479145922718826)}, - {field.NewFieldElement(1073062170185630790), field.NewFieldElement(16407856079088655345)}, - {field.NewFieldElement(17737117878818849535), field.NewFieldElement(1900599912944642061)}, - {field.NewFieldElement(12256168642879070567), field.NewFieldElement(8539769760609459864)}, - {field.NewFieldElement(15141228232285134803), field.NewFieldElement(897120225935075003)}, - {field.NewFieldElement(3388596123376728329), field.NewFieldElement(5128230734992475590)}, - {field.NewFieldElement(8733319491992764673), field.NewFieldElement(1928863683866117576)}, - {field.NewFieldElement(5203485787146767490), field.NewFieldElement(12954094447445057610)}, - {field.NewFieldElement(5201734155949618873), field.NewFieldElement(3995115267673262244)}, - {field.NewFieldElement(8666839426855174616), field.NewFieldElement(3659748522909014185)}, - {field.NewFieldElement(9240426493517714121), field.NewFieldElement(12895319645103780590)}, - {field.NewFieldElement(10104523192405168095), field.NewFieldElement(8335084014759232790)}, - {field.NewFieldElement(12471660706832322357), field.NewFieldElement(16692471091408210242)}, - {field.NewFieldElement(7713567301004647325), field.NewFieldElement(2346765742178693341)}, - {field.NewFieldElement(5087966313974874861), field.NewFieldElement(17995538175842083522)}, - {field.NewFieldElement(1103485120645095922), field.NewFieldElement(17358959631107792889)}, - {field.NewFieldElement(16443030134912318512), field.NewFieldElement(4694929981527462915)}, - {field.NewFieldElement(5229836547906072694), field.NewFieldElement(10529861755371621018)}, - {field.NewFieldElement(17706463046886551260), field.NewFieldElement(7014625543777947259)}, - {field.NewFieldElement(17494246083650429806), field.NewFieldElement(10059232320812188522)}, - {field.NewFieldElement(6009623857477500128), field.NewFieldElement(9041821915077023327)}, - {field.NewFieldElement(15414837134646072506), field.NewFieldElement(17735866267331281406)}, - {field.NewFieldElement(9582418254228040565), field.NewFieldElement(9475780400052940525)}, - {field.NewFieldElement(3850010214259020229), field.NewFieldElement(2344916032711572881)}, - {field.NewFieldElement(3276478492985700631), field.NewFieldElement(9347511148183965796)}, - {field.NewFieldElement(4260955157349956538), field.NewFieldElement(3737557221553060525)}, - {field.NewFieldElement(1814028760671441115), field.NewFieldElement(1709540851509897224)}, - {field.NewFieldElement(304220870213251471), field.NewFieldElement(18339319635968408171)}, - {field.NewFieldElement(6309601903165399081), field.NewFieldElement(4611660338915358676)}, - {field.NewFieldElement(5440836432197140901), field.NewFieldElement(835184832962669050)}, - {field.NewFieldElement(4132483007111889331), field.NewFieldElement(17679464861654166329)}, - {field.NewFieldElement(12071698679631585615), field.NewFieldElement(3526806430507304767)}, - {field.NewFieldElement(16570124099871162516), field.NewFieldElement(16394949299416922104)}, - {field.NewFieldElement(11779301434103087470), field.NewFieldElement(9928702854994401626)}, - {field.NewFieldElement(486097273023099818), field.NewFieldElement(1666631222233964241)}, - {field.NewFieldElement(13426511095962901265), field.NewFieldElement(16977352762229561063)}, - {field.NewFieldElement(7848259968166982335), field.NewFieldElement(8923641610835432771)}, - {field.NewFieldElement(6717523783985825261), field.NewFieldElement(8442698012198213832)}, - {field.NewFieldElement(16551829854897630528), field.NewFieldElement(1207332518477764340)}, - {field.NewFieldElement(9552262459546034571), field.NewFieldElement(4701791517562735608)}, - {field.NewFieldElement(6527201331407091692), field.NewFieldElement(10762913938781033944)}, - {field.NewFieldElement(11212416663128404375), field.NewFieldElement(6847749339754298086)}, - {field.NewFieldElement(10791247438031342492), field.NewFieldElement(3448715099533950037)}, - {field.NewFieldElement(1719220253088662156), field.NewFieldElement(15702968714187742357)}, - {field.NewFieldElement(14008817631758138024), field.NewFieldElement(17297897981954620228)}, - {field.NewFieldElement(7768014097976613936), field.NewFieldElement(15806402621409309279)}, - {field.NewFieldElement(3886721256453659755), field.NewFieldElement(16395869594056206627)}, - {field.NewFieldElement(13997073954856864246), field.NewFieldElement(1233051863712529371)}, - {field.NewFieldElement(11334349192463912274), field.NewFieldElement(5454820034730801470)}, - {field.NewFieldElement(7648426950649263998), field.NewFieldElement(9412547620105462810)}, - {field.NewFieldElement(2869115266070242006), field.NewFieldElement(9873001547032180059)}, - {field.NewFieldElement(11864269740491424738), field.NewFieldElement(3771973823544233765)}, - {field.NewFieldElement(9374340554044631499), field.NewFieldElement(11414175937704649426)}, - {field.NewFieldElement(8970748854700874383), field.NewFieldElement(2703579039677419011)}, - {field.NewFieldElement(3743841601176432106), field.NewFieldElement(11043980835019875782)}, - {field.NewFieldElement(1654705359096618107), field.NewFieldElement(4374088811382131752)}, - {field.NewFieldElement(10209435051454821145), field.NewFieldElement(4087979231575661143)}, - {field.NewFieldElement(9566392584670645438), field.NewFieldElement(5102479111558561813)}, - {field.NewFieldElement(4542214823227660682), field.NewFieldElement(16447152846983873546)}, - {field.NewFieldElement(3619667706484141693), field.NewFieldElement(3976495805371636999)}, - {field.NewFieldElement(14677559952589127978), field.NewFieldElement(1506330427474903904)}, - {field.NewFieldElement(9618330319963013853), field.NewFieldElement(7774314641304317232)}, - {field.NewFieldElement(15136595569611237026), field.NewFieldElement(6241976546079100101)}, - {field.NewFieldElement(6190131967820348937), field.NewFieldElement(8898314655028146727)}, - {field.NewFieldElement(10664902807329902141), field.NewFieldElement(399679411582475270)}, - {field.NewFieldElement(4620231951016842028), field.NewFieldElement(14227502135369964656)}, - {field.NewFieldElement(14442830168084065060), field.NewFieldElement(18194643570654368962)}, - {field.NewFieldElement(6026772169794354979), field.NewFieldElement(15538586941211648185)}, - {field.NewFieldElement(3305763071851691617), field.NewFieldElement(7414963068017211970)}, - {field.NewFieldElement(2348819716102409971), field.NewFieldElement(3414253607649082297)}, - {field.NewFieldElement(5561613987159516190), field.NewFieldElement(18108137586585031915)}, - {field.NewFieldElement(11622858756456645517), field.NewFieldElement(5481788959889711288)}, - {field.NewFieldElement(14329441999576805903), field.NewFieldElement(7316385947805485474)}, - {field.NewFieldElement(6619906970666076294), field.NewFieldElement(11606453814479815487)}, - {field.NewFieldElement(273184393202580706), field.NewFieldElement(15538333835729971074)}, - {field.NewFieldElement(16891566794426605557), field.NewFieldElement(432853148035369520)}, - {field.NewFieldElement(3134481789780853760), field.NewFieldElement(10023938129020275945)}, + {field.NewFieldConst(7586090218847390134), field.NewFieldConst(13687926314033375459)}, + {field.NewFieldConst(10774680496478357997), field.NewFieldConst(14419929234728022600)}, + {field.NewFieldConst(983485807903636414), field.NewFieldConst(3028876395437704592)}, + {field.NewFieldConst(5873163034459252869), field.NewFieldConst(11720300428168955402)}, + {field.NewFieldConst(16261775977438390033), field.NewFieldConst(15598817592005081227)}, + {field.NewFieldConst(3308439339359285309), field.NewFieldConst(16350160944703138332)}, + {field.NewFieldConst(2477915029208949035), field.NewFieldConst(10909058342937234971)}, + {field.NewFieldConst(2006101431747008114), field.NewFieldConst(1317396811566929515)}, + {field.NewFieldConst(5743380333218483835), field.NewFieldConst(9864892326580372485)}, + {field.NewFieldConst(4343047746155696133), field.NewFieldConst(2452956674303649004)}, + {field.NewFieldConst(18237771591472199486), field.NewFieldConst(9201720967486340889)}, + {field.NewFieldConst(7997743545022954538), field.NewFieldConst(5790905224346459337)}, + {field.NewFieldConst(7270313259765139533), field.NewFieldConst(13664497978956485388)}, + {field.NewFieldConst(11627392666242516567), field.NewFieldConst(6707531853885096654)}, + {field.NewFieldConst(14108041676779390728), field.NewFieldConst(13890317640467961363)}, + {field.NewFieldConst(10461937206408578346), field.NewFieldConst(16929842020525911045)}, + {field.NewFieldConst(14163490001894639417), field.NewFieldConst(6486250350832733344)}, + {field.NewFieldConst(6025822272051423893), field.NewFieldConst(6875599327185319749)}, + {field.NewFieldConst(11800406778761598568), field.NewFieldConst(13445736562420900345)}, + {field.NewFieldConst(8721632296347252438), field.NewFieldConst(15861696011210243831)}, + {field.NewFieldConst(13862698645551446166), field.NewFieldConst(10895802231885823011)}, + {field.NewFieldConst(9467131299943023152), field.NewFieldConst(508610840287781764)}, + {field.NewFieldConst(10369576299876905473), field.NewFieldConst(1319089684709412204)}, + {field.NewFieldConst(17202741125808968481), field.NewFieldConst(4132975454251812345)}, + {field.NewFieldConst(4939406044782203142), field.NewFieldConst(18100435685377738067)}, + {field.NewFieldConst(2662601992953696766), field.NewFieldConst(5356898997486457355)}, + {field.NewFieldConst(12240740991568526347), field.NewFieldConst(14183052793978601368)}, + {field.NewFieldConst(17267799754824241908), field.NewFieldConst(15067892579134674951)}, + {field.NewFieldConst(3885637219153712510), field.NewFieldConst(2045928245539296545)}, + {field.NewFieldConst(7614199998298216925), field.NewFieldConst(13135807303144108264)}, + {field.NewFieldConst(12232208765790877245), field.NewFieldConst(6790391920585566719)}, + {field.NewFieldConst(14027621788671850076), field.NewFieldConst(8244116705079721069)}, + {field.NewFieldConst(18361849947075265980), field.NewFieldConst(636640170174188211)}, + {field.NewFieldConst(15400723839777269850), field.NewFieldConst(7187627113110641974)}, + {field.NewFieldConst(11208418886499216060), field.NewFieldConst(1068905181682993370)}, + {field.NewFieldConst(8741978871712571992), field.NewFieldConst(11893984108008599655)}, + {field.NewFieldConst(5904231306484990036), field.NewFieldConst(10974042651195177783)}, + {field.NewFieldConst(12306264278608747297), field.NewFieldConst(6054935933756948006)}, + {field.NewFieldConst(4439661353730067518), field.NewFieldConst(13536513851562309841)}, + {field.NewFieldConst(13020734370698999772), field.NewFieldConst(163773705062531020)}, + {field.NewFieldConst(10365756846699668634), field.NewFieldConst(5245413619357449)}, + {field.NewFieldConst(15929862436085820709), field.NewFieldConst(10957910821863876318)}, + {field.NewFieldConst(977018799724983158), field.NewFieldConst(15040949766668867994)}, + {field.NewFieldConst(2993125862244950582), field.NewFieldConst(13234404554976574543)}, + {field.NewFieldConst(14122201262568632993), field.NewFieldConst(93763383340088526)}, + {field.NewFieldConst(8975477202804925208), field.NewFieldConst(1040893022864763499)}, + {field.NewFieldConst(7725813871064262870), field.NewFieldConst(14455479145922718826)}, + {field.NewFieldConst(1073062170185630790), field.NewFieldConst(16407856079088655345)}, + {field.NewFieldConst(17737117878818849535), field.NewFieldConst(1900599912944642061)}, + {field.NewFieldConst(12256168642879070567), field.NewFieldConst(8539769760609459864)}, + {field.NewFieldConst(15141228232285134803), field.NewFieldConst(897120225935075003)}, + {field.NewFieldConst(3388596123376728329), field.NewFieldConst(5128230734992475590)}, + {field.NewFieldConst(8733319491992764673), field.NewFieldConst(1928863683866117576)}, + {field.NewFieldConst(5203485787146767490), field.NewFieldConst(12954094447445057610)}, + {field.NewFieldConst(5201734155949618873), field.NewFieldConst(3995115267673262244)}, + {field.NewFieldConst(8666839426855174616), field.NewFieldConst(3659748522909014185)}, + {field.NewFieldConst(9240426493517714121), field.NewFieldConst(12895319645103780590)}, + {field.NewFieldConst(10104523192405168095), field.NewFieldConst(8335084014759232790)}, + {field.NewFieldConst(12471660706832322357), field.NewFieldConst(16692471091408210242)}, + {field.NewFieldConst(7713567301004647325), field.NewFieldConst(2346765742178693341)}, + {field.NewFieldConst(5087966313974874861), field.NewFieldConst(17995538175842083522)}, + {field.NewFieldConst(1103485120645095922), field.NewFieldConst(17358959631107792889)}, + {field.NewFieldConst(16443030134912318512), field.NewFieldConst(4694929981527462915)}, + {field.NewFieldConst(5229836547906072694), field.NewFieldConst(10529861755371621018)}, + {field.NewFieldConst(17706463046886551260), field.NewFieldConst(7014625543777947259)}, + {field.NewFieldConst(17494246083650429806), field.NewFieldConst(10059232320812188522)}, + {field.NewFieldConst(6009623857477500128), field.NewFieldConst(9041821915077023327)}, + {field.NewFieldConst(15414837134646072506), field.NewFieldConst(17735866267331281406)}, + {field.NewFieldConst(9582418254228040565), field.NewFieldConst(9475780400052940525)}, + {field.NewFieldConst(3850010214259020229), field.NewFieldConst(2344916032711572881)}, + {field.NewFieldConst(3276478492985700631), field.NewFieldConst(9347511148183965796)}, + {field.NewFieldConst(4260955157349956538), field.NewFieldConst(3737557221553060525)}, + {field.NewFieldConst(1814028760671441115), field.NewFieldConst(1709540851509897224)}, + {field.NewFieldConst(304220870213251471), field.NewFieldConst(18339319635968408171)}, + {field.NewFieldConst(6309601903165399081), field.NewFieldConst(4611660338915358676)}, + {field.NewFieldConst(5440836432197140901), field.NewFieldConst(835184832962669050)}, + {field.NewFieldConst(4132483007111889331), field.NewFieldConst(17679464861654166329)}, + {field.NewFieldConst(12071698679631585615), field.NewFieldConst(3526806430507304767)}, + {field.NewFieldConst(16570124099871162516), field.NewFieldConst(16394949299416922104)}, + {field.NewFieldConst(11779301434103087470), field.NewFieldConst(9928702854994401626)}, + {field.NewFieldConst(486097273023099818), field.NewFieldConst(1666631222233964241)}, + {field.NewFieldConst(13426511095962901265), field.NewFieldConst(16977352762229561063)}, + {field.NewFieldConst(7848259968166982335), field.NewFieldConst(8923641610835432771)}, + {field.NewFieldConst(6717523783985825261), field.NewFieldConst(8442698012198213832)}, + {field.NewFieldConst(16551829854897630528), field.NewFieldConst(1207332518477764340)}, + {field.NewFieldConst(9552262459546034571), field.NewFieldConst(4701791517562735608)}, + {field.NewFieldConst(6527201331407091692), field.NewFieldConst(10762913938781033944)}, + {field.NewFieldConst(11212416663128404375), field.NewFieldConst(6847749339754298086)}, + {field.NewFieldConst(10791247438031342492), field.NewFieldConst(3448715099533950037)}, + {field.NewFieldConst(1719220253088662156), field.NewFieldConst(15702968714187742357)}, + {field.NewFieldConst(14008817631758138024), field.NewFieldConst(17297897981954620228)}, + {field.NewFieldConst(7768014097976613936), field.NewFieldConst(15806402621409309279)}, + {field.NewFieldConst(3886721256453659755), field.NewFieldConst(16395869594056206627)}, + {field.NewFieldConst(13997073954856864246), field.NewFieldConst(1233051863712529371)}, + {field.NewFieldConst(11334349192463912274), field.NewFieldConst(5454820034730801470)}, + {field.NewFieldConst(7648426950649263998), field.NewFieldConst(9412547620105462810)}, + {field.NewFieldConst(2869115266070242006), field.NewFieldConst(9873001547032180059)}, + {field.NewFieldConst(11864269740491424738), field.NewFieldConst(3771973823544233765)}, + {field.NewFieldConst(9374340554044631499), field.NewFieldConst(11414175937704649426)}, + {field.NewFieldConst(8970748854700874383), field.NewFieldConst(2703579039677419011)}, + {field.NewFieldConst(3743841601176432106), field.NewFieldConst(11043980835019875782)}, + {field.NewFieldConst(1654705359096618107), field.NewFieldConst(4374088811382131752)}, + {field.NewFieldConst(10209435051454821145), field.NewFieldConst(4087979231575661143)}, + {field.NewFieldConst(9566392584670645438), field.NewFieldConst(5102479111558561813)}, + {field.NewFieldConst(4542214823227660682), field.NewFieldConst(16447152846983873546)}, + {field.NewFieldConst(3619667706484141693), field.NewFieldConst(3976495805371636999)}, + {field.NewFieldConst(14677559952589127978), field.NewFieldConst(1506330427474903904)}, + {field.NewFieldConst(9618330319963013853), field.NewFieldConst(7774314641304317232)}, + {field.NewFieldConst(15136595569611237026), field.NewFieldConst(6241976546079100101)}, + {field.NewFieldConst(6190131967820348937), field.NewFieldConst(8898314655028146727)}, + {field.NewFieldConst(10664902807329902141), field.NewFieldConst(399679411582475270)}, + {field.NewFieldConst(4620231951016842028), field.NewFieldConst(14227502135369964656)}, + {field.NewFieldConst(14442830168084065060), field.NewFieldConst(18194643570654368962)}, + {field.NewFieldConst(6026772169794354979), field.NewFieldConst(15538586941211648185)}, + {field.NewFieldConst(3305763071851691617), field.NewFieldConst(7414963068017211970)}, + {field.NewFieldConst(2348819716102409971), field.NewFieldConst(3414253607649082297)}, + {field.NewFieldConst(5561613987159516190), field.NewFieldConst(18108137586585031915)}, + {field.NewFieldConst(11622858756456645517), field.NewFieldConst(5481788959889711288)}, + {field.NewFieldConst(14329441999576805903), field.NewFieldConst(7316385947805485474)}, + {field.NewFieldConst(6619906970666076294), field.NewFieldConst(11606453814479815487)}, + {field.NewFieldConst(273184393202580706), field.NewFieldConst(15538333835729971074)}, + {field.NewFieldConst(16891566794426605557), field.NewFieldConst(432853148035369520)}, + {field.NewFieldConst(3134481789780853760), field.NewFieldConst(10023938129020275945)}, } var reducingExtensionGateExpectedConstraints = []field.QuadraticExtension{ - {field.NewFieldElement(12512260201049243975), field.NewFieldElement(5104620179714279781)}, - {field.NewFieldElement(13013016297591764071), field.NewFieldElement(3905565448987160512)}, - {field.NewFieldElement(18168316387479509651), field.NewFieldElement(15285510648877030958)}, - {field.NewFieldElement(2704136035168106924), field.NewFieldElement(17701154289967205509)}, - {field.NewFieldElement(6350634844525158810), field.NewFieldElement(6841530668953763541)}, - {field.NewFieldElement(14558428225759052231), field.NewFieldElement(6228114011555775975)}, - {field.NewFieldElement(11984059988070020226), field.NewFieldElement(6404501976404464308)}, - {field.NewFieldElement(7499833675686066082), field.NewFieldElement(13203954482927844021)}, - {field.NewFieldElement(53729277296365862), field.NewFieldElement(11604944835579274791)}, - {field.NewFieldElement(649276793194856338), field.NewFieldElement(15769159485820654298)}, - {field.NewFieldElement(7220059241713171194), field.NewFieldElement(7593947467996717503)}, - {field.NewFieldElement(11725388872832717991), field.NewFieldElement(2472966042937251891)}, - {field.NewFieldElement(17103067711705259268), field.NewFieldElement(12741737218458998807)}, - {field.NewFieldElement(2053029714235535081), field.NewFieldElement(5621084618445985853)}, - {field.NewFieldElement(394074652594148954), field.NewFieldElement(14480160107167739683)}, - {field.NewFieldElement(16319639492172307693), field.NewFieldElement(18262596047016856354)}, - {field.NewFieldElement(7349401242823131130), field.NewFieldElement(16637643780538375248)}, - {field.NewFieldElement(2968776512542894745), field.NewFieldElement(7967382686110631950)}, - {field.NewFieldElement(4131567287142440211), field.NewFieldElement(16488573781037653146)}, - {field.NewFieldElement(3210618110340609396), field.NewFieldElement(15575562053796139855)}, - {field.NewFieldElement(866179987510198517), field.NewFieldElement(1621207644178469397)}, - {field.NewFieldElement(13787839347867512750), field.NewFieldElement(5082451965770365331)}, - {field.NewFieldElement(16727747831341625951), field.NewFieldElement(17003066965000183599)}, - {field.NewFieldElement(5844378810576570680), field.NewFieldElement(7917389141334353441)}, - {field.NewFieldElement(2806785896842529320), field.NewFieldElement(2418902247526900913)}, - {field.NewFieldElement(16911660151499877134), field.NewFieldElement(12021165187528883860)}, - {field.NewFieldElement(17281860563566587308), field.NewFieldElement(907492056629373413)}, - {field.NewFieldElement(2149753706739034128), field.NewFieldElement(12371022473774589200)}, - {field.NewFieldElement(7841056796552151745), field.NewFieldElement(3143088841967149638)}, - {field.NewFieldElement(11915031067231681577), field.NewFieldElement(18108223564563708813)}, - {field.NewFieldElement(2094314575212662773), field.NewFieldElement(188561272841399737)}, - {field.NewFieldElement(16712479120741377751), field.NewFieldElement(13153292267876520211)}, - {field.NewFieldElement(11528911604171979726), field.NewFieldElement(889050185568489714)}, - {field.NewFieldElement(13117878881472895975), field.NewFieldElement(2608864599443833112)}, - {field.NewFieldElement(310976139454954605), field.NewFieldElement(271726012479588385)}, - {field.NewFieldElement(4724981023605656141), field.NewFieldElement(7786903198345013664)}, - {field.NewFieldElement(7358470379588594806), field.NewFieldElement(5500290420069122896)}, - {field.NewFieldElement(11249736961064437940), field.NewFieldElement(7500992311029866319)}, - {field.NewFieldElement(16247982877846154545), field.NewFieldElement(18437922661172982146)}, - {field.NewFieldElement(14828806288276948771), field.NewFieldElement(161861918745757497)}, - {field.NewFieldElement(12207866405175784678), field.NewFieldElement(17882395070256177480)}, - {field.NewFieldElement(1862300191557939305), field.NewFieldElement(12946149812989300425)}, - {field.NewFieldElement(113183958399514852), field.NewFieldElement(6003153612730483196)}, - {field.NewFieldElement(17112839880895845290), field.NewFieldElement(3628345828628316007)}, - {field.NewFieldElement(8779978792406228661), field.NewFieldElement(11992923889396921201)}, - {field.NewFieldElement(6179077038148294340), field.NewFieldElement(11713998999910876710)}, - {field.NewFieldElement(13454002959297605186), field.NewFieldElement(2204743745696912515)}, - {field.NewFieldElement(15623020893752344305), field.NewFieldElement(13749522681861530980)}, - {field.NewFieldElement(6206230970377487041), field.NewFieldElement(16389331421791613953)}, - {field.NewFieldElement(2425462828014799977), field.NewFieldElement(1558769431852532736)}, - {field.NewFieldElement(2327926263345738065), field.NewFieldElement(8779034796068602190)}, - {field.NewFieldElement(14563770135458078041), field.NewFieldElement(6494115966350812505)}, - {field.NewFieldElement(8082502921781233722), field.NewFieldElement(7935499582140944140)}, - {field.NewFieldElement(14539277379887693704), field.NewFieldElement(5161629331161118775)}, - {field.NewFieldElement(13736527598285458228), field.NewFieldElement(7309962536813433388)}, - {field.NewFieldElement(13933813405709515396), field.NewFieldElement(17798686485131016236)}, - {field.NewFieldElement(8897530535975229493), field.NewFieldElement(14404791097089986313)}, - {field.NewFieldElement(18088311324021484864), field.NewFieldElement(11991882587468162630)}, - {field.NewFieldElement(8956488301372897339), field.NewFieldElement(8045253716620738816)}, - {field.NewFieldElement(16016384501418916541), field.NewFieldElement(3181272893128323084)}, - {field.NewFieldElement(2517080075900745791), field.NewFieldElement(18241855168616334247)}, - {field.NewFieldElement(17868385271737172979), field.NewFieldElement(3149251797904840387)}, - {field.NewFieldElement(16240211689398081741), field.NewFieldElement(12595579002758809850)}, - {field.NewFieldElement(15129425055871583477), field.NewFieldElement(16556688233744925655)}, - {field.NewFieldElement(12118068802024437752), field.NewFieldElement(1415394251822514067)}, - {field.NewFieldElement(9998982344935417389), field.NewFieldElement(1388414311221312252)}, + {field.NewFieldConst(12512260201049243975), field.NewFieldConst(5104620179714279781)}, + {field.NewFieldConst(13013016297591764071), field.NewFieldConst(3905565448987160512)}, + {field.NewFieldConst(18168316387479509651), field.NewFieldConst(15285510648877030958)}, + {field.NewFieldConst(2704136035168106924), field.NewFieldConst(17701154289967205509)}, + {field.NewFieldConst(6350634844525158810), field.NewFieldConst(6841530668953763541)}, + {field.NewFieldConst(14558428225759052231), field.NewFieldConst(6228114011555775975)}, + {field.NewFieldConst(11984059988070020226), field.NewFieldConst(6404501976404464308)}, + {field.NewFieldConst(7499833675686066082), field.NewFieldConst(13203954482927844021)}, + {field.NewFieldConst(53729277296365862), field.NewFieldConst(11604944835579274791)}, + {field.NewFieldConst(649276793194856338), field.NewFieldConst(15769159485820654298)}, + {field.NewFieldConst(7220059241713171194), field.NewFieldConst(7593947467996717503)}, + {field.NewFieldConst(11725388872832717991), field.NewFieldConst(2472966042937251891)}, + {field.NewFieldConst(17103067711705259268), field.NewFieldConst(12741737218458998807)}, + {field.NewFieldConst(2053029714235535081), field.NewFieldConst(5621084618445985853)}, + {field.NewFieldConst(394074652594148954), field.NewFieldConst(14480160107167739683)}, + {field.NewFieldConst(16319639492172307693), field.NewFieldConst(18262596047016856354)}, + {field.NewFieldConst(7349401242823131130), field.NewFieldConst(16637643780538375248)}, + {field.NewFieldConst(2968776512542894745), field.NewFieldConst(7967382686110631950)}, + {field.NewFieldConst(4131567287142440211), field.NewFieldConst(16488573781037653146)}, + {field.NewFieldConst(3210618110340609396), field.NewFieldConst(15575562053796139855)}, + {field.NewFieldConst(866179987510198517), field.NewFieldConst(1621207644178469397)}, + {field.NewFieldConst(13787839347867512750), field.NewFieldConst(5082451965770365331)}, + {field.NewFieldConst(16727747831341625951), field.NewFieldConst(17003066965000183599)}, + {field.NewFieldConst(5844378810576570680), field.NewFieldConst(7917389141334353441)}, + {field.NewFieldConst(2806785896842529320), field.NewFieldConst(2418902247526900913)}, + {field.NewFieldConst(16911660151499877134), field.NewFieldConst(12021165187528883860)}, + {field.NewFieldConst(17281860563566587308), field.NewFieldConst(907492056629373413)}, + {field.NewFieldConst(2149753706739034128), field.NewFieldConst(12371022473774589200)}, + {field.NewFieldConst(7841056796552151745), field.NewFieldConst(3143088841967149638)}, + {field.NewFieldConst(11915031067231681577), field.NewFieldConst(18108223564563708813)}, + {field.NewFieldConst(2094314575212662773), field.NewFieldConst(188561272841399737)}, + {field.NewFieldConst(16712479120741377751), field.NewFieldConst(13153292267876520211)}, + {field.NewFieldConst(11528911604171979726), field.NewFieldConst(889050185568489714)}, + {field.NewFieldConst(13117878881472895975), field.NewFieldConst(2608864599443833112)}, + {field.NewFieldConst(310976139454954605), field.NewFieldConst(271726012479588385)}, + {field.NewFieldConst(4724981023605656141), field.NewFieldConst(7786903198345013664)}, + {field.NewFieldConst(7358470379588594806), field.NewFieldConst(5500290420069122896)}, + {field.NewFieldConst(11249736961064437940), field.NewFieldConst(7500992311029866319)}, + {field.NewFieldConst(16247982877846154545), field.NewFieldConst(18437922661172982146)}, + {field.NewFieldConst(14828806288276948771), field.NewFieldConst(161861918745757497)}, + {field.NewFieldConst(12207866405175784678), field.NewFieldConst(17882395070256177480)}, + {field.NewFieldConst(1862300191557939305), field.NewFieldConst(12946149812989300425)}, + {field.NewFieldConst(113183958399514852), field.NewFieldConst(6003153612730483196)}, + {field.NewFieldConst(17112839880895845290), field.NewFieldConst(3628345828628316007)}, + {field.NewFieldConst(8779978792406228661), field.NewFieldConst(11992923889396921201)}, + {field.NewFieldConst(6179077038148294340), field.NewFieldConst(11713998999910876710)}, + {field.NewFieldConst(13454002959297605186), field.NewFieldConst(2204743745696912515)}, + {field.NewFieldConst(15623020893752344305), field.NewFieldConst(13749522681861530980)}, + {field.NewFieldConst(6206230970377487041), field.NewFieldConst(16389331421791613953)}, + {field.NewFieldConst(2425462828014799977), field.NewFieldConst(1558769431852532736)}, + {field.NewFieldConst(2327926263345738065), field.NewFieldConst(8779034796068602190)}, + {field.NewFieldConst(14563770135458078041), field.NewFieldConst(6494115966350812505)}, + {field.NewFieldConst(8082502921781233722), field.NewFieldConst(7935499582140944140)}, + {field.NewFieldConst(14539277379887693704), field.NewFieldConst(5161629331161118775)}, + {field.NewFieldConst(13736527598285458228), field.NewFieldConst(7309962536813433388)}, + {field.NewFieldConst(13933813405709515396), field.NewFieldConst(17798686485131016236)}, + {field.NewFieldConst(8897530535975229493), field.NewFieldConst(14404791097089986313)}, + {field.NewFieldConst(18088311324021484864), field.NewFieldConst(11991882587468162630)}, + {field.NewFieldConst(8956488301372897339), field.NewFieldConst(8045253716620738816)}, + {field.NewFieldConst(16016384501418916541), field.NewFieldConst(3181272893128323084)}, + {field.NewFieldConst(2517080075900745791), field.NewFieldConst(18241855168616334247)}, + {field.NewFieldConst(17868385271737172979), field.NewFieldConst(3149251797904840387)}, + {field.NewFieldConst(16240211689398081741), field.NewFieldConst(12595579002758809850)}, + {field.NewFieldConst(15129425055871583477), field.NewFieldConst(16556688233744925655)}, + {field.NewFieldConst(12118068802024437752), field.NewFieldConst(1415394251822514067)}, + {field.NewFieldConst(9998982344935417389), field.NewFieldConst(1388414311221312252)}, } // ReducingGate { num_coeffs: 44 } var reducingGateExpectedConstraints = []field.QuadraticExtension{ - {field.NewFieldElement(2762695979854660261), field.NewFieldElement(6188975775006680731)}, - {field.NewFieldElement(1791331417935738626), field.NewFieldElement(17085037714198081810)}, - {field.NewFieldElement(2937679508710033736), field.NewFieldElement(5129621779087684534)}, - {field.NewFieldElement(481168721643876637), field.NewFieldElement(7141872137498120988)}, - {field.NewFieldElement(17254181100047942156), field.NewFieldElement(17775174281554210440)}, - {field.NewFieldElement(5198890470471443302), field.NewFieldElement(14888425516661975457)}, - {field.NewFieldElement(13028786198899252632), field.NewFieldElement(10937447292538980197)}, - {field.NewFieldElement(2265158031754703100), field.NewFieldElement(12577502307628934155)}, - {field.NewFieldElement(15551968276096003032), field.NewFieldElement(15292448269321193280)}, - {field.NewFieldElement(17365969756658867370), field.NewFieldElement(17369305944822545977)}, - {field.NewFieldElement(7080686817257839256), field.NewFieldElement(593963095520237279)}, - {field.NewFieldElement(9676311908112124362), field.NewFieldElement(15674622921902422959)}, - {field.NewFieldElement(11251136116732324348), field.NewFieldElement(18440217803596221468)}, - {field.NewFieldElement(3735056268905622852), field.NewFieldElement(13863980656029437128)}, - {field.NewFieldElement(8027041826265159623), field.NewFieldElement(11754189465873578671)}, - {field.NewFieldElement(17583392801264300641), field.NewFieldElement(6466906893845676112)}, - {field.NewFieldElement(10453982665201242303), field.NewFieldElement(10957427537661178463)}, - {field.NewFieldElement(8008073576872573103), field.NewFieldElement(15936946455243860971)}, - {field.NewFieldElement(10779255795330506743), field.NewFieldElement(1425676337306283564)}, - {field.NewFieldElement(13500038741878953694), field.NewFieldElement(5693690628820948906)}, - {field.NewFieldElement(6987584139748553407), field.NewFieldElement(4433192799815624764)}, - {field.NewFieldElement(3618013197373611562), field.NewFieldElement(15641412670596115335)}, - {field.NewFieldElement(4523765518023087797), field.NewFieldElement(5497960888090896635)}, - {field.NewFieldElement(8750545727419259671), field.NewFieldElement(17422860419602722677)}, - {field.NewFieldElement(17564615024878416866), field.NewFieldElement(16238022624102079273)}, - {field.NewFieldElement(3740814195084876131), field.NewFieldElement(17474834584441312839)}, - {field.NewFieldElement(2239459464265888484), field.NewFieldElement(8706775397593275819)}, - {field.NewFieldElement(6491352471800031726), field.NewFieldElement(209451190673168977)}, - {field.NewFieldElement(5778494879465125706), field.NewFieldElement(7142303398286289731)}, - {field.NewFieldElement(7094902435091460736), field.NewFieldElement(17694563561889239395)}, - {field.NewFieldElement(2647942785603144770), field.NewFieldElement(12183038555524816414)}, - {field.NewFieldElement(15100729453671585276), field.NewFieldElement(8119652948094623285)}, - {field.NewFieldElement(3441209666651626111), field.NewFieldElement(10072736477013237067)}, - {field.NewFieldElement(2372663484566761092), field.NewFieldElement(594324049190490986)}, - {field.NewFieldElement(4026947675295370811), field.NewFieldElement(1179770390904329138)}, - {field.NewFieldElement(1595271198725095132), field.NewFieldElement(15771888513051752701)}, - {field.NewFieldElement(15924194187528252748), field.NewFieldElement(6763066202850242722)}, - {field.NewFieldElement(1445670890851930788), field.NewFieldElement(3792635664222385076)}, - {field.NewFieldElement(12273956505460180574), field.NewFieldElement(2686688969956106705)}, - {field.NewFieldElement(11658870742027189182), field.NewFieldElement(12329880551401953731)}, - {field.NewFieldElement(3044295792231373345), field.NewFieldElement(17852841657875251990)}, - {field.NewFieldElement(89567881331820860), field.NewFieldElement(15259944608836914642)}, - {field.NewFieldElement(358286967559220432), field.NewFieldElement(4492752479771433484)}, - {field.NewFieldElement(14577916428537408584), field.NewFieldElement(13741732911292090813)}, - {field.NewFieldElement(16727747831341625951), field.NewFieldElement(17003066965000183599)}, - {field.NewFieldElement(9070359631236984957), field.NewFieldElement(6062623613509003067)}, - {field.NewFieldElement(2410743624398118478), field.NewFieldElement(13772226839431038397)}, - {field.NewFieldElement(11807638155649559084), field.NewFieldElement(1137111487688533470)}, - {field.NewFieldElement(64491941894197002), field.NewFieldElement(5868353091743239378)}, - {field.NewFieldElement(11301275742904392411), field.NewFieldElement(16283949803466884532)}, - {field.NewFieldElement(9890416519568149104), field.NewFieldElement(8227793073753762383)}, - {field.NewFieldElement(14951282035757983160), field.NewFieldElement(9077678991191664958)}, - {field.NewFieldElement(5033664288544688549), field.NewFieldElement(9192774674510226248)}, - {field.NewFieldElement(11933408140918977315), field.NewFieldElement(7749057899233101160)}, - {field.NewFieldElement(9164812869909307746), field.NewFieldElement(1719896377847214041)}, - {field.NewFieldElement(15224563238586628983), field.NewFieldElement(2588693305957079413)}, - {field.NewFieldElement(1889812039818739618), field.NewFieldElement(4817606363423939521)}, - {field.NewFieldElement(15609561908880497864), field.NewFieldElement(11885907317258609874)}, - {field.NewFieldElement(6792442952488353934), field.NewFieldElement(15088298397252768139)}, - {field.NewFieldElement(2651197118788035780), field.NewFieldElement(5089685590535462009)}, - {field.NewFieldElement(11982358277830572398), field.NewFieldElement(15471174962798992515)}, - {field.NewFieldElement(7639615465545578427), field.NewFieldElement(12644783892223098985)}, - {field.NewFieldElement(11009184909998310074), field.NewFieldElement(17958525789123172556)}, - {field.NewFieldElement(7777052961871412232), field.NewFieldElement(9786263008632335028)}, - {field.NewFieldElement(13336166292448975341), field.NewFieldElement(15263885337654327510)}, - {field.NewFieldElement(12764160635364533900), field.NewFieldElement(15411617803867471736)}, - {field.NewFieldElement(17491426030593864841), field.NewFieldElement(2688540155718191896)}, - {field.NewFieldElement(4278381039362706308), field.NewFieldElement(17571997178209012848)}, - {field.NewFieldElement(12726900947926109267), field.NewFieldElement(1433345131505837369)}, - {field.NewFieldElement(6334884250665613762), field.NewFieldElement(9617978266076057841)}, - {field.NewFieldElement(17511031815464775451), field.NewFieldElement(12281753446186189470)}, - {field.NewFieldElement(10718030381939087273), field.NewFieldElement(10785278464322784199)}, - {field.NewFieldElement(6964802145991989973), field.NewFieldElement(5630451507536431311)}, - {field.NewFieldElement(1610931441749714598), field.NewFieldElement(17306081287063918214)}, - {field.NewFieldElement(12529885758752979710), field.NewFieldElement(12015226868538417544)}, - {field.NewFieldElement(8212526954290021947), field.NewFieldElement(2604665677904480075)}, - {field.NewFieldElement(836429499775217902), field.NewFieldElement(14951071826451735988)}, - {field.NewFieldElement(4322887569225425418), field.NewFieldElement(1803870148496860526)}, - {field.NewFieldElement(11933437515394389470), field.NewFieldElement(5432495301370703205)}, - {field.NewFieldElement(15379632811901291758), field.NewFieldElement(16475440758252311235)}, - {field.NewFieldElement(8378463548508566883), field.NewFieldElement(12576809460019959325)}, - {field.NewFieldElement(6878478934798340017), field.NewFieldElement(16203041885409513004)}, - {field.NewFieldElement(4704361120432029530), field.NewFieldElement(15619278597929334259)}, - {field.NewFieldElement(11896486732715322997), field.NewFieldElement(13476483500406677625)}, - {field.NewFieldElement(3818194554960853168), field.NewFieldElement(17483945143600046041)}, - {field.NewFieldElement(16655838413972803560), field.NewFieldElement(7859620736875007555)}, - {field.NewFieldElement(9466644546267012606), field.NewFieldElement(15636572488448679353)}, - {field.NewFieldElement(7705051962598852604), field.NewFieldElement(17843247208046088041)}, + {field.NewFieldConst(2762695979854660261), field.NewFieldConst(6188975775006680731)}, + {field.NewFieldConst(1791331417935738626), field.NewFieldConst(17085037714198081810)}, + {field.NewFieldConst(2937679508710033736), field.NewFieldConst(5129621779087684534)}, + {field.NewFieldConst(481168721643876637), field.NewFieldConst(7141872137498120988)}, + {field.NewFieldConst(17254181100047942156), field.NewFieldConst(17775174281554210440)}, + {field.NewFieldConst(5198890470471443302), field.NewFieldConst(14888425516661975457)}, + {field.NewFieldConst(13028786198899252632), field.NewFieldConst(10937447292538980197)}, + {field.NewFieldConst(2265158031754703100), field.NewFieldConst(12577502307628934155)}, + {field.NewFieldConst(15551968276096003032), field.NewFieldConst(15292448269321193280)}, + {field.NewFieldConst(17365969756658867370), field.NewFieldConst(17369305944822545977)}, + {field.NewFieldConst(7080686817257839256), field.NewFieldConst(593963095520237279)}, + {field.NewFieldConst(9676311908112124362), field.NewFieldConst(15674622921902422959)}, + {field.NewFieldConst(11251136116732324348), field.NewFieldConst(18440217803596221468)}, + {field.NewFieldConst(3735056268905622852), field.NewFieldConst(13863980656029437128)}, + {field.NewFieldConst(8027041826265159623), field.NewFieldConst(11754189465873578671)}, + {field.NewFieldConst(17583392801264300641), field.NewFieldConst(6466906893845676112)}, + {field.NewFieldConst(10453982665201242303), field.NewFieldConst(10957427537661178463)}, + {field.NewFieldConst(8008073576872573103), field.NewFieldConst(15936946455243860971)}, + {field.NewFieldConst(10779255795330506743), field.NewFieldConst(1425676337306283564)}, + {field.NewFieldConst(13500038741878953694), field.NewFieldConst(5693690628820948906)}, + {field.NewFieldConst(6987584139748553407), field.NewFieldConst(4433192799815624764)}, + {field.NewFieldConst(3618013197373611562), field.NewFieldConst(15641412670596115335)}, + {field.NewFieldConst(4523765518023087797), field.NewFieldConst(5497960888090896635)}, + {field.NewFieldConst(8750545727419259671), field.NewFieldConst(17422860419602722677)}, + {field.NewFieldConst(17564615024878416866), field.NewFieldConst(16238022624102079273)}, + {field.NewFieldConst(3740814195084876131), field.NewFieldConst(17474834584441312839)}, + {field.NewFieldConst(2239459464265888484), field.NewFieldConst(8706775397593275819)}, + {field.NewFieldConst(6491352471800031726), field.NewFieldConst(209451190673168977)}, + {field.NewFieldConst(5778494879465125706), field.NewFieldConst(7142303398286289731)}, + {field.NewFieldConst(7094902435091460736), field.NewFieldConst(17694563561889239395)}, + {field.NewFieldConst(2647942785603144770), field.NewFieldConst(12183038555524816414)}, + {field.NewFieldConst(15100729453671585276), field.NewFieldConst(8119652948094623285)}, + {field.NewFieldConst(3441209666651626111), field.NewFieldConst(10072736477013237067)}, + {field.NewFieldConst(2372663484566761092), field.NewFieldConst(594324049190490986)}, + {field.NewFieldConst(4026947675295370811), field.NewFieldConst(1179770390904329138)}, + {field.NewFieldConst(1595271198725095132), field.NewFieldConst(15771888513051752701)}, + {field.NewFieldConst(15924194187528252748), field.NewFieldConst(6763066202850242722)}, + {field.NewFieldConst(1445670890851930788), field.NewFieldConst(3792635664222385076)}, + {field.NewFieldConst(12273956505460180574), field.NewFieldConst(2686688969956106705)}, + {field.NewFieldConst(11658870742027189182), field.NewFieldConst(12329880551401953731)}, + {field.NewFieldConst(3044295792231373345), field.NewFieldConst(17852841657875251990)}, + {field.NewFieldConst(89567881331820860), field.NewFieldConst(15259944608836914642)}, + {field.NewFieldConst(358286967559220432), field.NewFieldConst(4492752479771433484)}, + {field.NewFieldConst(14577916428537408584), field.NewFieldConst(13741732911292090813)}, + {field.NewFieldConst(16727747831341625951), field.NewFieldConst(17003066965000183599)}, + {field.NewFieldConst(9070359631236984957), field.NewFieldConst(6062623613509003067)}, + {field.NewFieldConst(2410743624398118478), field.NewFieldConst(13772226839431038397)}, + {field.NewFieldConst(11807638155649559084), field.NewFieldConst(1137111487688533470)}, + {field.NewFieldConst(64491941894197002), field.NewFieldConst(5868353091743239378)}, + {field.NewFieldConst(11301275742904392411), field.NewFieldConst(16283949803466884532)}, + {field.NewFieldConst(9890416519568149104), field.NewFieldConst(8227793073753762383)}, + {field.NewFieldConst(14951282035757983160), field.NewFieldConst(9077678991191664958)}, + {field.NewFieldConst(5033664288544688549), field.NewFieldConst(9192774674510226248)}, + {field.NewFieldConst(11933408140918977315), field.NewFieldConst(7749057899233101160)}, + {field.NewFieldConst(9164812869909307746), field.NewFieldConst(1719896377847214041)}, + {field.NewFieldConst(15224563238586628983), field.NewFieldConst(2588693305957079413)}, + {field.NewFieldConst(1889812039818739618), field.NewFieldConst(4817606363423939521)}, + {field.NewFieldConst(15609561908880497864), field.NewFieldConst(11885907317258609874)}, + {field.NewFieldConst(6792442952488353934), field.NewFieldConst(15088298397252768139)}, + {field.NewFieldConst(2651197118788035780), field.NewFieldConst(5089685590535462009)}, + {field.NewFieldConst(11982358277830572398), field.NewFieldConst(15471174962798992515)}, + {field.NewFieldConst(7639615465545578427), field.NewFieldConst(12644783892223098985)}, + {field.NewFieldConst(11009184909998310074), field.NewFieldConst(17958525789123172556)}, + {field.NewFieldConst(7777052961871412232), field.NewFieldConst(9786263008632335028)}, + {field.NewFieldConst(13336166292448975341), field.NewFieldConst(15263885337654327510)}, + {field.NewFieldConst(12764160635364533900), field.NewFieldConst(15411617803867471736)}, + {field.NewFieldConst(17491426030593864841), field.NewFieldConst(2688540155718191896)}, + {field.NewFieldConst(4278381039362706308), field.NewFieldConst(17571997178209012848)}, + {field.NewFieldConst(12726900947926109267), field.NewFieldConst(1433345131505837369)}, + {field.NewFieldConst(6334884250665613762), field.NewFieldConst(9617978266076057841)}, + {field.NewFieldConst(17511031815464775451), field.NewFieldConst(12281753446186189470)}, + {field.NewFieldConst(10718030381939087273), field.NewFieldConst(10785278464322784199)}, + {field.NewFieldConst(6964802145991989973), field.NewFieldConst(5630451507536431311)}, + {field.NewFieldConst(1610931441749714598), field.NewFieldConst(17306081287063918214)}, + {field.NewFieldConst(12529885758752979710), field.NewFieldConst(12015226868538417544)}, + {field.NewFieldConst(8212526954290021947), field.NewFieldConst(2604665677904480075)}, + {field.NewFieldConst(836429499775217902), field.NewFieldConst(14951071826451735988)}, + {field.NewFieldConst(4322887569225425418), field.NewFieldConst(1803870148496860526)}, + {field.NewFieldConst(11933437515394389470), field.NewFieldConst(5432495301370703205)}, + {field.NewFieldConst(15379632811901291758), field.NewFieldConst(16475440758252311235)}, + {field.NewFieldConst(8378463548508566883), field.NewFieldConst(12576809460019959325)}, + {field.NewFieldConst(6878478934798340017), field.NewFieldConst(16203041885409513004)}, + {field.NewFieldConst(4704361120432029530), field.NewFieldConst(15619278597929334259)}, + {field.NewFieldConst(11896486732715322997), field.NewFieldConst(13476483500406677625)}, + {field.NewFieldConst(3818194554960853168), field.NewFieldConst(17483945143600046041)}, + {field.NewFieldConst(16655838413972803560), field.NewFieldConst(7859620736875007555)}, + {field.NewFieldConst(9466644546267012606), field.NewFieldConst(15636572488448679353)}, + {field.NewFieldConst(7705051962598852604), field.NewFieldConst(17843247208046088041)}, } // ArithmeticExtensionGate { num_ops: 10 } var arithmeticExtensionGateExpectedConstraints = []field.QuadraticExtension{ - {field.NewFieldElement(18152046378789398239), field.NewFieldElement(835198655627980634)}, - {field.NewFieldElement(14941458349516937745), field.NewFieldElement(195899842055585620)}, - {field.NewFieldElement(11444294347859626222), field.NewFieldElement(7618743177769594838)}, - {field.NewFieldElement(6847392923782354441), field.NewFieldElement(3129968840755754688)}, - {field.NewFieldElement(11707145384221145922), field.NewFieldElement(286105987739288036)}, - {field.NewFieldElement(2582465953258947981), field.NewFieldElement(9032385332294381140)}, - {field.NewFieldElement(13238521192691745149), field.NewFieldElement(9704746731861618809)}, - {field.NewFieldElement(1830772271680123935), field.NewFieldElement(2037318884130759975)}, - {field.NewFieldElement(5532751095564029866), field.NewFieldElement(11560707807043359130)}, - {field.NewFieldElement(4749576916935014495), field.NewFieldElement(2144864975020203842)}, - {field.NewFieldElement(18162899505828592791), field.NewFieldElement(13853020020051211390)}, - {field.NewFieldElement(16196741394015376387), field.NewFieldElement(16087121152637055080)}, - {field.NewFieldElement(15478783842112089677), field.NewFieldElement(8151788319455760610)}, - {field.NewFieldElement(4962260057365923941), field.NewFieldElement(12155107209004037964)}, - {field.NewFieldElement(18192514584072489162), field.NewFieldElement(2336293494478946065)}, - {field.NewFieldElement(3747540982963754880), field.NewFieldElement(5650114101530259911)}, - {field.NewFieldElement(17757207146926514655), field.NewFieldElement(13461601821205159205)}, - {field.NewFieldElement(17921720474545785568), field.NewFieldElement(4718996085070502683)}, - {field.NewFieldElement(4443998758263224376), field.NewFieldElement(13890461367328975727)}, - {field.NewFieldElement(13990958094457190244), field.NewFieldElement(3783673559976842909)}, + {field.NewFieldConst(18152046378789398239), field.NewFieldConst(835198655627980634)}, + {field.NewFieldConst(14941458349516937745), field.NewFieldConst(195899842055585620)}, + {field.NewFieldConst(11444294347859626222), field.NewFieldConst(7618743177769594838)}, + {field.NewFieldConst(6847392923782354441), field.NewFieldConst(3129968840755754688)}, + {field.NewFieldConst(11707145384221145922), field.NewFieldConst(286105987739288036)}, + {field.NewFieldConst(2582465953258947981), field.NewFieldConst(9032385332294381140)}, + {field.NewFieldConst(13238521192691745149), field.NewFieldConst(9704746731861618809)}, + {field.NewFieldConst(1830772271680123935), field.NewFieldConst(2037318884130759975)}, + {field.NewFieldConst(5532751095564029866), field.NewFieldConst(11560707807043359130)}, + {field.NewFieldConst(4749576916935014495), field.NewFieldConst(2144864975020203842)}, + {field.NewFieldConst(18162899505828592791), field.NewFieldConst(13853020020051211390)}, + {field.NewFieldConst(16196741394015376387), field.NewFieldConst(16087121152637055080)}, + {field.NewFieldConst(15478783842112089677), field.NewFieldConst(8151788319455760610)}, + {field.NewFieldConst(4962260057365923941), field.NewFieldConst(12155107209004037964)}, + {field.NewFieldConst(18192514584072489162), field.NewFieldConst(2336293494478946065)}, + {field.NewFieldConst(3747540982963754880), field.NewFieldConst(5650114101530259911)}, + {field.NewFieldConst(17757207146926514655), field.NewFieldConst(13461601821205159205)}, + {field.NewFieldConst(17921720474545785568), field.NewFieldConst(4718996085070502683)}, + {field.NewFieldConst(4443998758263224376), field.NewFieldConst(13890461367328975727)}, + {field.NewFieldConst(13990958094457190244), field.NewFieldConst(3783673559976842909)}, } // MulExtensionGate { num_ops: 13 } var mulExtensionGateExpectedConstraints = []field.QuadraticExtension{ - {field.NewFieldElement(7181113876231745794), field.NewFieldElement(7868884260109104825)}, - {field.NewFieldElement(14067639069854412134), field.NewFieldElement(2094238260641413106)}, - {field.NewFieldElement(3160167686452082144), field.NewFieldElement(15508587061137009544)}, - {field.NewFieldElement(2701966180261760724), field.NewFieldElement(49742798193009777)}, - {field.NewFieldElement(16965594259972472645), field.NewFieldElement(15119035756932709035)}, - {field.NewFieldElement(8587305003975146248), field.NewFieldElement(11788991692426475292)}, - {field.NewFieldElement(13134841191650990099), field.NewFieldElement(12468857767882216027)}, - {field.NewFieldElement(5079312787147663415), field.NewFieldElement(315076378722635206)}, - {field.NewFieldElement(4656603487897834248), field.NewFieldElement(4455086801173740459)}, - {field.NewFieldElement(3630077482584148572), field.NewFieldElement(3283664780554963370)}, - {field.NewFieldElement(1781217475359761081), field.NewFieldElement(17627776820166298232)}, - {field.NewFieldElement(5917159494270473360), field.NewFieldElement(6025450051539258087)}, - {field.NewFieldElement(6450855110748081528), field.NewFieldElement(7446684637376438458)}, - {field.NewFieldElement(8607810652222212781), field.NewFieldElement(7298919685405344815)}, - {field.NewFieldElement(13906434081686233303), field.NewFieldElement(13101189135710264580)}, - {field.NewFieldElement(6489826249831576523), field.NewFieldElement(11224737887667008267)}, - {field.NewFieldElement(3580221348553931303), field.NewFieldElement(4662435202527050543)}, - {field.NewFieldElement(7286527320055156837), field.NewFieldElement(15670292738296412147)}, - {field.NewFieldElement(2095892346123668330), field.NewFieldElement(5572639395382198548)}, - {field.NewFieldElement(11836511250144945185), field.NewFieldElement(6212767141717037414)}, - {field.NewFieldElement(12781535798978127236), field.NewFieldElement(14467390350363203888)}, - {field.NewFieldElement(2635017860820288214), field.NewFieldElement(6092079726747224779)}, - {field.NewFieldElement(18057143820634196774), field.NewFieldElement(16137749920970128474)}, - {field.NewFieldElement(16754543715625171524), field.NewFieldElement(15674433195919785024)}, - {field.NewFieldElement(2135423350522303111), field.NewFieldElement(32407260862438164)}, - {field.NewFieldElement(14956506296276270245), field.NewFieldElement(1145919757338314609)}, + {field.NewFieldConst(7181113876231745794), field.NewFieldConst(7868884260109104825)}, + {field.NewFieldConst(14067639069854412134), field.NewFieldConst(2094238260641413106)}, + {field.NewFieldConst(3160167686452082144), field.NewFieldConst(15508587061137009544)}, + {field.NewFieldConst(2701966180261760724), field.NewFieldConst(49742798193009777)}, + {field.NewFieldConst(16965594259972472645), field.NewFieldConst(15119035756932709035)}, + {field.NewFieldConst(8587305003975146248), field.NewFieldConst(11788991692426475292)}, + {field.NewFieldConst(13134841191650990099), field.NewFieldConst(12468857767882216027)}, + {field.NewFieldConst(5079312787147663415), field.NewFieldConst(315076378722635206)}, + {field.NewFieldConst(4656603487897834248), field.NewFieldConst(4455086801173740459)}, + {field.NewFieldConst(3630077482584148572), field.NewFieldConst(3283664780554963370)}, + {field.NewFieldConst(1781217475359761081), field.NewFieldConst(17627776820166298232)}, + {field.NewFieldConst(5917159494270473360), field.NewFieldConst(6025450051539258087)}, + {field.NewFieldConst(6450855110748081528), field.NewFieldConst(7446684637376438458)}, + {field.NewFieldConst(8607810652222212781), field.NewFieldConst(7298919685405344815)}, + {field.NewFieldConst(13906434081686233303), field.NewFieldConst(13101189135710264580)}, + {field.NewFieldConst(6489826249831576523), field.NewFieldConst(11224737887667008267)}, + {field.NewFieldConst(3580221348553931303), field.NewFieldConst(4662435202527050543)}, + {field.NewFieldConst(7286527320055156837), field.NewFieldConst(15670292738296412147)}, + {field.NewFieldConst(2095892346123668330), field.NewFieldConst(5572639395382198548)}, + {field.NewFieldConst(11836511250144945185), field.NewFieldConst(6212767141717037414)}, + {field.NewFieldConst(12781535798978127236), field.NewFieldConst(14467390350363203888)}, + {field.NewFieldConst(2635017860820288214), field.NewFieldConst(6092079726747224779)}, + {field.NewFieldConst(18057143820634196774), field.NewFieldConst(16137749920970128474)}, + {field.NewFieldConst(16754543715625171524), field.NewFieldConst(15674433195919785024)}, + {field.NewFieldConst(2135423350522303111), field.NewFieldConst(32407260862438164)}, + {field.NewFieldConst(14956506296276270245), field.NewFieldConst(1145919757338314609)}, } // ExponentiationGate { num_power_bits: 67, _phantom: PhantomData } var exponentiationGateExpectedConstraints = []field.QuadraticExtension{ - {field.NewFieldElement(11917134172330913896), field.NewFieldElement(17387498340632768165)}, - {field.NewFieldElement(1312379412936626785), field.NewFieldElement(8487972230502205858)}, - {field.NewFieldElement(1034346392193469803), field.NewFieldElement(10387255969849204765)}, - {field.NewFieldElement(8975374558919785259), field.NewFieldElement(8379061308496297909)}, - {field.NewFieldElement(5137354887085653470), field.NewFieldElement(18342299770587131344)}, - {field.NewFieldElement(11284168756796657450), field.NewFieldElement(13822895496426653701)}, - {field.NewFieldElement(235168160386175185), field.NewFieldElement(17356178727442490793)}, - {field.NewFieldElement(11012326969983488833), field.NewFieldElement(13315935561725076264)}, - {field.NewFieldElement(11064160789252923988), field.NewFieldElement(243775009899162201)}, - {field.NewFieldElement(17368303548433332975), field.NewFieldElement(15625080509274199608)}, - {field.NewFieldElement(5849122830228985352), field.NewFieldElement(5103229940930953650)}, - {field.NewFieldElement(14713362802405597126), field.NewFieldElement(8157398625845036781)}, - {field.NewFieldElement(16495373179302807753), field.NewFieldElement(4597863041430416411)}, - {field.NewFieldElement(3274329863393011112), field.NewFieldElement(8955190641874111502)}, - {field.NewFieldElement(4704531612240997322), field.NewFieldElement(2253948388369651634)}, - {field.NewFieldElement(13333514818352143222), field.NewFieldElement(4999457874559250243)}, - {field.NewFieldElement(2284463506187861590), field.NewFieldElement(13765412523042072026)}, - {field.NewFieldElement(16636340184626646426), field.NewFieldElement(3174763529046637372)}, - {field.NewFieldElement(5336400619848923540), field.NewFieldElement(10513883740898299385)}, - {field.NewFieldElement(14200134528033869480), field.NewFieldElement(11039588311485209657)}, - {field.NewFieldElement(18377155443679293884), field.NewFieldElement(13521764320839726823)}, - {field.NewFieldElement(242773453939591946), field.NewFieldElement(6326451192242543829)}, - {field.NewFieldElement(1296949085249594883), field.NewFieldElement(7990211688523987915)}, - {field.NewFieldElement(5510982641888481009), field.NewFieldElement(10552089306004766754)}, - {field.NewFieldElement(10914255593671877946), field.NewFieldElement(18175495064507840841)}, - {field.NewFieldElement(7575617967752753230), field.NewFieldElement(9665518441862148402)}, - {field.NewFieldElement(14351249981525100362), field.NewFieldElement(5763278800672952095)}, - {field.NewFieldElement(16319397571073742470), field.NewFieldElement(1318308384414985616)}, - {field.NewFieldElement(12030088917335470405), field.NewFieldElement(6668172884819717021)}, - {field.NewFieldElement(17509060699703766693), field.NewFieldElement(1489607021074587548)}, - {field.NewFieldElement(1096695845774334385), field.NewFieldElement(6122861634465429123)}, - {field.NewFieldElement(13460252757128783693), field.NewFieldElement(17777045084091738197)}, - {field.NewFieldElement(14557885155010631641), field.NewFieldElement(4298885986874834349)}, - {field.NewFieldElement(3635088766034344822), field.NewFieldElement(8827496887313967507)}, - {field.NewFieldElement(6550916348715580989), field.NewFieldElement(4180030543088252998)}, - {field.NewFieldElement(16051569484464055768), field.NewFieldElement(2121040925634405127)}, - {field.NewFieldElement(1788913367411914907), field.NewFieldElement(10745316805250218547)}, - {field.NewFieldElement(4832917661842853637), field.NewFieldElement(1148465658973892394)}, - {field.NewFieldElement(9162757057100424164), field.NewFieldElement(7814738929773741429)}, - {field.NewFieldElement(13840071942242698046), field.NewFieldElement(12500211120922811757)}, - {field.NewFieldElement(10699948139249128560), field.NewFieldElement(4891144553679573560)}, - {field.NewFieldElement(14602444997841482522), field.NewFieldElement(17017251371157941125)}, - {field.NewFieldElement(586839629673374241), field.NewFieldElement(3363863469002405744)}, - {field.NewFieldElement(9011045001648305113), field.NewFieldElement(7085187243048562102)}, - {field.NewFieldElement(13032999395920684322), field.NewFieldElement(6189400872664562846)}, - {field.NewFieldElement(8971070287177655421), field.NewFieldElement(12582676780734324056)}, - {field.NewFieldElement(558400378011382278), field.NewFieldElement(6298195151594790629)}, - {field.NewFieldElement(17192073729541567806), field.NewFieldElement(5497805500866221538)}, - {field.NewFieldElement(5728605922884243514), field.NewFieldElement(18070340533610014206)}, - {field.NewFieldElement(15473455953886985277), field.NewFieldElement(11635823818659992567)}, - {field.NewFieldElement(7477545430207969908), field.NewFieldElement(2742755471302540300)}, - {field.NewFieldElement(12407179232895419141), field.NewFieldElement(17302315821428133291)}, - {field.NewFieldElement(12858531909631903407), field.NewFieldElement(14746185565916474858)}, - {field.NewFieldElement(12872867896453911017), field.NewFieldElement(6563250576201773751)}, - {field.NewFieldElement(3384183107205264844), field.NewFieldElement(11512795156033923138)}, - {field.NewFieldElement(8430135350637925522), field.NewFieldElement(10199901650713033996)}, - {field.NewFieldElement(11167364659650598214), field.NewFieldElement(447394121422751322)}, - {field.NewFieldElement(4931438368828291722), field.NewFieldElement(16717867949669373753)}, - {field.NewFieldElement(5151270559741115914), field.NewFieldElement(45949586886299827)}, - {field.NewFieldElement(11159644559144981603), field.NewFieldElement(2120703503452727949)}, - {field.NewFieldElement(8830601119784247875), field.NewFieldElement(8542262650554393830)}, - {field.NewFieldElement(6142186624494698182), field.NewFieldElement(7120939306807396235)}, - {field.NewFieldElement(11716893898091265261), field.NewFieldElement(4311673012489504666)}, - {field.NewFieldElement(2133003157459487893), field.NewFieldElement(1909522153859214178)}, - {field.NewFieldElement(427412581044646901), field.NewFieldElement(15454912207372224939)}, - {field.NewFieldElement(1842301960762096227), field.NewFieldElement(12476329615991638721)}, - {field.NewFieldElement(696538585954127499), field.NewFieldElement(2702122491633241201)}, - {field.NewFieldElement(5755584054765687076), field.NewFieldElement(5430280214517080555)}, + {field.NewFieldConst(11917134172330913896), field.NewFieldConst(17387498340632768165)}, + {field.NewFieldConst(1312379412936626785), field.NewFieldConst(8487972230502205858)}, + {field.NewFieldConst(1034346392193469803), field.NewFieldConst(10387255969849204765)}, + {field.NewFieldConst(8975374558919785259), field.NewFieldConst(8379061308496297909)}, + {field.NewFieldConst(5137354887085653470), field.NewFieldConst(18342299770587131344)}, + {field.NewFieldConst(11284168756796657450), field.NewFieldConst(13822895496426653701)}, + {field.NewFieldConst(235168160386175185), field.NewFieldConst(17356178727442490793)}, + {field.NewFieldConst(11012326969983488833), field.NewFieldConst(13315935561725076264)}, + {field.NewFieldConst(11064160789252923988), field.NewFieldConst(243775009899162201)}, + {field.NewFieldConst(17368303548433332975), field.NewFieldConst(15625080509274199608)}, + {field.NewFieldConst(5849122830228985352), field.NewFieldConst(5103229940930953650)}, + {field.NewFieldConst(14713362802405597126), field.NewFieldConst(8157398625845036781)}, + {field.NewFieldConst(16495373179302807753), field.NewFieldConst(4597863041430416411)}, + {field.NewFieldConst(3274329863393011112), field.NewFieldConst(8955190641874111502)}, + {field.NewFieldConst(4704531612240997322), field.NewFieldConst(2253948388369651634)}, + {field.NewFieldConst(13333514818352143222), field.NewFieldConst(4999457874559250243)}, + {field.NewFieldConst(2284463506187861590), field.NewFieldConst(13765412523042072026)}, + {field.NewFieldConst(16636340184626646426), field.NewFieldConst(3174763529046637372)}, + {field.NewFieldConst(5336400619848923540), field.NewFieldConst(10513883740898299385)}, + {field.NewFieldConst(14200134528033869480), field.NewFieldConst(11039588311485209657)}, + {field.NewFieldConst(18377155443679293884), field.NewFieldConst(13521764320839726823)}, + {field.NewFieldConst(242773453939591946), field.NewFieldConst(6326451192242543829)}, + {field.NewFieldConst(1296949085249594883), field.NewFieldConst(7990211688523987915)}, + {field.NewFieldConst(5510982641888481009), field.NewFieldConst(10552089306004766754)}, + {field.NewFieldConst(10914255593671877946), field.NewFieldConst(18175495064507840841)}, + {field.NewFieldConst(7575617967752753230), field.NewFieldConst(9665518441862148402)}, + {field.NewFieldConst(14351249981525100362), field.NewFieldConst(5763278800672952095)}, + {field.NewFieldConst(16319397571073742470), field.NewFieldConst(1318308384414985616)}, + {field.NewFieldConst(12030088917335470405), field.NewFieldConst(6668172884819717021)}, + {field.NewFieldConst(17509060699703766693), field.NewFieldConst(1489607021074587548)}, + {field.NewFieldConst(1096695845774334385), field.NewFieldConst(6122861634465429123)}, + {field.NewFieldConst(13460252757128783693), field.NewFieldConst(17777045084091738197)}, + {field.NewFieldConst(14557885155010631641), field.NewFieldConst(4298885986874834349)}, + {field.NewFieldConst(3635088766034344822), field.NewFieldConst(8827496887313967507)}, + {field.NewFieldConst(6550916348715580989), field.NewFieldConst(4180030543088252998)}, + {field.NewFieldConst(16051569484464055768), field.NewFieldConst(2121040925634405127)}, + {field.NewFieldConst(1788913367411914907), field.NewFieldConst(10745316805250218547)}, + {field.NewFieldConst(4832917661842853637), field.NewFieldConst(1148465658973892394)}, + {field.NewFieldConst(9162757057100424164), field.NewFieldConst(7814738929773741429)}, + {field.NewFieldConst(13840071942242698046), field.NewFieldConst(12500211120922811757)}, + {field.NewFieldConst(10699948139249128560), field.NewFieldConst(4891144553679573560)}, + {field.NewFieldConst(14602444997841482522), field.NewFieldConst(17017251371157941125)}, + {field.NewFieldConst(586839629673374241), field.NewFieldConst(3363863469002405744)}, + {field.NewFieldConst(9011045001648305113), field.NewFieldConst(7085187243048562102)}, + {field.NewFieldConst(13032999395920684322), field.NewFieldConst(6189400872664562846)}, + {field.NewFieldConst(8971070287177655421), field.NewFieldConst(12582676780734324056)}, + {field.NewFieldConst(558400378011382278), field.NewFieldConst(6298195151594790629)}, + {field.NewFieldConst(17192073729541567806), field.NewFieldConst(5497805500866221538)}, + {field.NewFieldConst(5728605922884243514), field.NewFieldConst(18070340533610014206)}, + {field.NewFieldConst(15473455953886985277), field.NewFieldConst(11635823818659992567)}, + {field.NewFieldConst(7477545430207969908), field.NewFieldConst(2742755471302540300)}, + {field.NewFieldConst(12407179232895419141), field.NewFieldConst(17302315821428133291)}, + {field.NewFieldConst(12858531909631903407), field.NewFieldConst(14746185565916474858)}, + {field.NewFieldConst(12872867896453911017), field.NewFieldConst(6563250576201773751)}, + {field.NewFieldConst(3384183107205264844), field.NewFieldConst(11512795156033923138)}, + {field.NewFieldConst(8430135350637925522), field.NewFieldConst(10199901650713033996)}, + {field.NewFieldConst(11167364659650598214), field.NewFieldConst(447394121422751322)}, + {field.NewFieldConst(4931438368828291722), field.NewFieldConst(16717867949669373753)}, + {field.NewFieldConst(5151270559741115914), field.NewFieldConst(45949586886299827)}, + {field.NewFieldConst(11159644559144981603), field.NewFieldConst(2120703503452727949)}, + {field.NewFieldConst(8830601119784247875), field.NewFieldConst(8542262650554393830)}, + {field.NewFieldConst(6142186624494698182), field.NewFieldConst(7120939306807396235)}, + {field.NewFieldConst(11716893898091265261), field.NewFieldConst(4311673012489504666)}, + {field.NewFieldConst(2133003157459487893), field.NewFieldConst(1909522153859214178)}, + {field.NewFieldConst(427412581044646901), field.NewFieldConst(15454912207372224939)}, + {field.NewFieldConst(1842301960762096227), field.NewFieldConst(12476329615991638721)}, + {field.NewFieldConst(696538585954127499), field.NewFieldConst(2702122491633241201)}, + {field.NewFieldConst(5755584054765687076), field.NewFieldConst(5430280214517080555)}, } // CosetInterpolationGate { subgroup_bits: 4, degree: 6, barycentric_weights: [17293822565076172801, 18374686475376656385, 18446744069413535745, 281474976645120, 17592186044416, 18446744069414584577, 18446744000695107601, 18446744065119617025, 1152921504338411520, 72057594037927936, 18446744069415632897, 18446462594437939201, 18446726477228539905, 18446744069414584065, 68719476720, 4294967296], _phantom: PhantomData } var cosetInterpolationGateExpectedConstraints = []field.QuadraticExtension{ - {field.NewFieldElement(13782516617623808439), field.NewFieldElement(15116825128522139629)}, - {field.NewFieldElement(10605488313706531843), field.NewFieldElement(16124703860676816956)}, - {field.NewFieldElement(2725554495824998780), field.NewFieldElement(13477621298303015045)}, - {field.NewFieldElement(2936187345854242438), field.NewFieldElement(5827982872566017395)}, - {field.NewFieldElement(11223822863576777799), field.NewFieldElement(2143123911507599653)}, - {field.NewFieldElement(4839015650475288776), field.NewFieldElement(745790217755162273)}, - {field.NewFieldElement(2205634412980832213), field.NewFieldElement(15767892564871259137)}, - {field.NewFieldElement(9091626478775122653), field.NewFieldElement(9730482292097571809)}, - {field.NewFieldElement(10636787321971723634), field.NewFieldElement(14666593583448965088)}, - {field.NewFieldElement(7179924177530514890), field.NewFieldElement(10610536358289043895)}, - {field.NewFieldElement(15067680125330943902), field.NewFieldElement(17960901266185771082)}, - {field.NewFieldElement(5184847499291037169), field.NewFieldElement(16061742535733361053)}, + {field.NewFieldConst(13782516617623808439), field.NewFieldConst(15116825128522139629)}, + {field.NewFieldConst(10605488313706531843), field.NewFieldConst(16124703860676816956)}, + {field.NewFieldConst(2725554495824998780), field.NewFieldConst(13477621298303015045)}, + {field.NewFieldConst(2936187345854242438), field.NewFieldConst(5827982872566017395)}, + {field.NewFieldConst(11223822863576777799), field.NewFieldConst(2143123911507599653)}, + {field.NewFieldConst(4839015650475288776), field.NewFieldConst(745790217755162273)}, + {field.NewFieldConst(2205634412980832213), field.NewFieldConst(15767892564871259137)}, + {field.NewFieldConst(9091626478775122653), field.NewFieldConst(9730482292097571809)}, + {field.NewFieldConst(10636787321971723634), field.NewFieldConst(14666593583448965088)}, + {field.NewFieldConst(7179924177530514890), field.NewFieldConst(10610536358289043895)}, + {field.NewFieldConst(15067680125330943902), field.NewFieldConst(17960901266185771082)}, + {field.NewFieldConst(5184847499291037169), field.NewFieldConst(16061742535733361053)}, } type TestGateCircuit struct { testGate gates.Gate - expectedConstraints []field.QuadraticExtension + ExpectedConstraints []field.QuadraticExtension } func (circuit *TestGateCircuit) Define(api frontend.API) error { @@ -732,17 +732,17 @@ func (circuit *TestGateCircuit) Define(api frontend.API) error { numSelectors := commonCircuitData.SelectorsInfo.NumSelectors() fieldAPI := field.NewFieldAPI(api) - qeAPI := field.NewQuadraticExtensionAPI(fieldAPI, commonCircuitData.DegreeBits) + qeAPI := field.NewQuadraticExtensionAPI(api, fieldAPI, commonCircuitData.DegreeBits) vars := gates.NewEvaluationVars(localConstants[numSelectors:], localWires, publicInputsHash) constraints := circuit.testGate.EvalUnfiltered(api, qeAPI, *vars) - if len(constraints) != len(circuit.expectedConstraints) { + if len(constraints) != len(circuit.ExpectedConstraints) { return errors.New("gate constraints length mismatch") } for i := 0; i < len(constraints); i++ { - qeAPI.AssertIsEqual(constraints[i], circuit.expectedConstraints[i]) + qeAPI.AssertIsEqual(constraints[i], circuit.ExpectedConstraints[i]) } return nil @@ -752,8 +752,8 @@ func TestGates(t *testing.T) { assert := test.NewAssert(t) testCase := func(testGate gates.Gate, expectedConstraints []field.QuadraticExtension) { - circuit := &TestGateCircuit{testGate: testGate, expectedConstraints: expectedConstraints} - witness := &TestGateCircuit{testGate: testGate, expectedConstraints: expectedConstraints} + circuit := &TestGateCircuit{testGate: testGate, ExpectedConstraints: expectedConstraints} + witness := &TestGateCircuit{testGate: testGate, ExpectedConstraints: expectedConstraints} err := test.IsSolved(circuit, witness, field.TEST_CURVE.ScalarField()) assert.NoError(err) } diff --git a/verifier/internal/gates/poseidon_gate.go b/verifier/internal/gates/poseidon_gate.go index d520558..0b5b901 100644 --- a/verifier/internal/gates/poseidon_gate.go +++ b/verifier/internal/gates/poseidon_gate.go @@ -147,7 +147,7 @@ func (g *PoseidonGate) EvalUnfiltered(api frontend.API, qeAPI *field.QuadraticEx sBoxIn := vars.localWires[g.WirePartialSBox(r)] constraints = append(constraints, qeAPI.SubExtension(state[0], sBoxIn)) state[0] = poseidonChip.SBoxMonomialExtension(sBoxIn) - state[0] = qeAPI.AddExtension(state[0], qeAPI.FieldToQE(field.NewFieldElement(poseidon.FAST_PARTIAL_ROUND_CONSTANTS[r]))) + state[0] = qeAPI.AddExtension(state[0], qeAPI.FieldToQE(poseidon.FAST_PARTIAL_ROUND_CONSTANTS[r])) state = poseidonChip.MdsPartialLayerFastExtension(state, int(r)) } sBoxIn := vars.localWires[g.WirePartialSBox(poseidon.N_PARTIAL_ROUNDS-1)] diff --git a/verifier/internal/gates/random_access_gate.go b/verifier/internal/gates/random_access_gate.go index a3fba82..214b7cd 100644 --- a/verifier/internal/gates/random_access_gate.go +++ b/verifier/internal/gates/random_access_gate.go @@ -115,7 +115,7 @@ func (g *RandomAccessGate) WireBit(i uint64, copy uint64) uint64 { } func (g *RandomAccessGate) EvalUnfiltered(api frontend.API, qeAPI *field.QuadraticExtensionAPI, vars EvaluationVars) []field.QuadraticExtension { - two := field.QuadraticExtension{field.NewFieldElement(2), field.NewFieldElement(0)} + two := field.QuadraticExtension{field.NewFieldConst(2), field.NewFieldConst(0)} constraints := []field.QuadraticExtension{} for copy := uint64(0); copy < g.numCopies; copy++ { diff --git a/verifier/internal/plonk/challenger.go b/verifier/internal/plonk/challenger.go index b8202ca..5a502b9 100644 --- a/verifier/internal/plonk/challenger.go +++ b/verifier/internal/plonk/challenger.go @@ -11,15 +11,15 @@ import ( ) type ChallengerChip struct { - api frontend.API `gnark:"-"` - field frontend.API `gnark:"-"` + api frontend.API `gnark:"-"` + field field.FieldAPI `gnark:"-"` poseidonChip *poseidon.PoseidonChip spongeState [poseidon.SPONGE_WIDTH]field.F inputBuffer []field.F outputBuffer []field.F } -func NewChallengerChip(api frontend.API, fieldAPI frontend.API, poseidonChip *poseidon.PoseidonChip) *ChallengerChip { +func NewChallengerChip(api frontend.API, fieldAPI field.FieldAPI, poseidonChip *poseidon.PoseidonChip) *ChallengerChip { var spongeState [poseidon.SPONGE_WIDTH]field.F var inputBuffer []field.F var outputBuffer []field.F diff --git a/verifier/internal/plonk/challenger_test.go b/verifier/internal/plonk/challenger_test.go index 66f850e..cd6244c 100644 --- a/verifier/internal/plonk/challenger_test.go +++ b/verifier/internal/plonk/challenger_test.go @@ -21,38 +21,38 @@ type TestChallengerCircuit struct { func (circuit *TestChallengerCircuit) Define(api frontend.API) error { fieldAPI := field.NewFieldAPI(api) degreeBits := 3 - qeAPI := field.NewQuadraticExtensionAPI(fieldAPI, uint64(degreeBits)) + qeAPI := field.NewQuadraticExtensionAPI(api, fieldAPI, uint64(degreeBits)) poseidonChip := poseidon.NewPoseidonChip(api, fieldAPI, qeAPI) challengerChip := NewChallengerChip(api, fieldAPI, poseidonChip) var circuitDigest [4]field.F for i := 0; i < len(circuitDigest); i++ { - circuitDigest[i] = fieldAPI.FromBinary(api.ToBinary(circuit.CircuitDigest[i], 64)).(field.F) + circuitDigest[i] = fieldAPI.FromBits(api.ToBinary(circuit.CircuitDigest[i], 64)...) } var publicInputs [3]field.F for i := 0; i < len(publicInputs); i++ { - publicInputs[i] = fieldAPI.FromBinary(api.ToBinary(circuit.PublicInputs[i], 64)).(field.F) + publicInputs[i] = fieldAPI.FromBits(api.ToBinary(circuit.PublicInputs[i], 64)...) } var wiresCap [16][4]field.F for i := 0; i < len(wiresCap); i++ { for j := 0; j < len(wiresCap[0]); j++ { - wiresCap[i][j] = fieldAPI.FromBinary(api.ToBinary(circuit.WiresCap[i][j], 64)).(field.F) + wiresCap[i][j] = fieldAPI.FromBits(api.ToBinary(circuit.WiresCap[i][j], 64)...) } } var plonkZsPartialProductsCap [16][4]field.F for i := 0; i < len(plonkZsPartialProductsCap); i++ { for j := 0; j < len(plonkZsPartialProductsCap[0]); j++ { - plonkZsPartialProductsCap[i][j] = fieldAPI.FromBinary(api.ToBinary(circuit.PlonkZsPartialProductsCap[i][j], 64)).(field.F) + plonkZsPartialProductsCap[i][j] = fieldAPI.FromBits(api.ToBinary(circuit.PlonkZsPartialProductsCap[i][j], 64)...) } } var quotientPolysCap [16][4]field.F for i := 0; i < len(quotientPolysCap); i++ { for j := 0; j < len(quotientPolysCap[0]); j++ { - quotientPolysCap[i][j] = fieldAPI.FromBinary(api.ToBinary(circuit.QuotientPolysCap[i][j], 64)).(field.F) + quotientPolysCap[i][j] = fieldAPI.FromBits(api.ToBinary(circuit.QuotientPolysCap[i][j], 64)...) } } @@ -66,10 +66,10 @@ func (circuit *TestChallengerCircuit) Define(api frontend.API) error { plonkGammas := challengerChip.GetNChallenges(numChallenges) expectedPublicInputHash := [4]field.F{ - field.NewFieldElementFromString("8416658900775745054"), - field.NewFieldElementFromString("12574228347150446423"), - field.NewFieldElementFromString("9629056739760131473"), - field.NewFieldElementFromString("3119289788404190010"), + field.NewFieldConstFromString("8416658900775745054"), + field.NewFieldConstFromString("12574228347150446423"), + field.NewFieldConstFromString("9629056739760131473"), + field.NewFieldConstFromString("3119289788404190010"), } for i := 0; i < 4; i++ { @@ -77,13 +77,13 @@ func (circuit *TestChallengerCircuit) Define(api frontend.API) error { } expectedPlonkBetas := [2]field.F{ - field.NewFieldElementFromString("4678728155650926271"), - field.NewFieldElementFromString("13611962404289024887"), + field.NewFieldConstFromString("4678728155650926271"), + field.NewFieldConstFromString("13611962404289024887"), } - expectedPlonkGammas := [2]frontend.Variable{ - field.NewFieldElementFromString("13237663823305715949"), - field.NewFieldElementFromString("15389314098328235145"), + expectedPlonkGammas := [2]field.F{ + field.NewFieldConstFromString("13237663823305715949"), + field.NewFieldConstFromString("15389314098328235145"), } for i := 0; i < 2; i++ { @@ -95,8 +95,8 @@ func (circuit *TestChallengerCircuit) Define(api frontend.API) error { plonkAlphas := challengerChip.GetNChallenges(numChallenges) expectedPlonkAlphas := [2]field.F{ - field.NewFieldElementFromString("14505919539124304197"), - field.NewFieldElementFromString("1695455639263736117"), + field.NewFieldConstFromString("14505919539124304197"), + field.NewFieldConstFromString("1695455639263736117"), } for i := 0; i < 2; i++ { @@ -107,8 +107,8 @@ func (circuit *TestChallengerCircuit) Define(api frontend.API) error { plonkZeta := challengerChip.GetExtensionChallenge() expectedPlonkZeta := field.QuadraticExtension{ - field.NewFieldElementFromString("14887793628029982930"), - field.NewFieldElementFromString("1136137158284059037"), + field.NewFieldConstFromString("14887793628029982930"), + field.NewFieldConstFromString("1136137158284059037"), } for i := 0; i < 2; i++ { diff --git a/verifier/internal/plonk/plonk.go b/verifier/internal/plonk/plonk.go index 286b7be..4a7e6c4 100644 --- a/verifier/internal/plonk/plonk.go +++ b/verifier/internal/plonk/plonk.go @@ -38,9 +38,9 @@ func NewPlonkChip(api frontend.API, qeAPI *field.QuadraticExtensionAPI, commonDa commonData: commonData, - DEGREE: field.NewFieldElement(1 << commonData.DegreeBits), - DEGREE_BITS_F: field.NewFieldElement(commonData.DegreeBits), - DEGREE_QE: field.QuadraticExtension{field.NewFieldElement(1 << commonData.DegreeBits), field.ZERO_F}, + DEGREE: field.NewFieldConst(1 << commonData.DegreeBits), + DEGREE_BITS_F: field.NewFieldConst(commonData.DegreeBits), + DEGREE_QE: field.QuadraticExtension{field.NewFieldConst(1 << commonData.DegreeBits), field.ZERO_F}, evaluateGatesChip: evaluateGatesChip, } diff --git a/verifier/internal/plonk/plonk_test.go b/verifier/internal/plonk/plonk_test.go index 2cafbbc..9554fbe 100644 --- a/verifier/internal/plonk/plonk_test.go +++ b/verifier/internal/plonk/plonk_test.go @@ -27,7 +27,7 @@ func (circuit *TestPlonkCircuit) Define(api frontend.API) error { proofChallenges := verifierChip.GetChallenges(proofWithPis, publicInputsHash, commonCircuitData, verifierOnlyCircuitData) fieldAPI := field.NewFieldAPI(api) - qeAPI := field.NewQuadraticExtensionAPI(fieldAPI, commonCircuitData.DegreeBits) + qeAPI := field.NewQuadraticExtensionAPI(api, fieldAPI, commonCircuitData.DegreeBits) plonkChip := plonk.NewPlonkChip( api, qeAPI, diff --git a/verifier/utils/deserialize.go b/verifier/utils/deserialize.go index 9a0e06e..8de59d5 100644 --- a/verifier/utils/deserialize.go +++ b/verifier/utils/deserialize.go @@ -229,7 +229,7 @@ func DeserializeFriProof(openingProofRaw struct { PowWitness uint64 }) common.FriProof { var openingProof common.FriProof - openingProof.PowWitness = field.NewFieldElement(openingProofRaw.PowWitness) + openingProof.PowWitness = field.NewFieldConst(openingProofRaw.PowWitness) openingProof.FinalPoly.Coeffs = utils.Uint64ArrayToQuadraticExtensionArray(openingProofRaw.FinalPoly.Coeffs) openingProof.CommitPhaseMerkleCaps = make([]common.MerkleCap, len(openingProofRaw.CommitPhaseMerkleCaps)) @@ -328,7 +328,7 @@ func DeserializeProofChallenges(path string) common.ProofChallenges { proofChallenges.PlonkZeta = utils.Uint64ArrayToQuadraticExtension(raw.PlonkZeta) proofChallenges.FriChallenges.FriAlpha = utils.Uint64ArrayToQuadraticExtension(raw.FriChallenges.FriAlpha) proofChallenges.FriChallenges.FriBetas = utils.Uint64ArrayToQuadraticExtensionArray(raw.FriChallenges.FriBetas) - proofChallenges.FriChallenges.FriPowResponse = field.NewFieldElement(raw.FriChallenges.FriPowResponse) + proofChallenges.FriChallenges.FriPowResponse = field.NewFieldConst(raw.FriChallenges.FriPowResponse) proofChallenges.FriChallenges.FriQueryIndices = utils.Uint64ArrayToFArray(raw.FriChallenges.FriQueryIndices) return proofChallenges diff --git a/verifier/verifier.go b/verifier/verifier.go index f55fe5f..a824144 100644 --- a/verifier/verifier.go +++ b/verifier/verifier.go @@ -11,7 +11,7 @@ import ( type VerifierChip struct { api frontend.API `gnark:"-"` - fieldAPI frontend.API `gnark:"-"` + fieldAPI field.FieldAPI `gnark:"-"` qeAPI *field.QuadraticExtensionAPI `gnark:"-"` poseidonChip *poseidon.PoseidonChip plonkChip *plonk.PlonkChip @@ -21,7 +21,7 @@ type VerifierChip struct { func NewVerifierChip(api frontend.API, commonCircuitData common.CommonCircuitData) *VerifierChip { fieldAPI := field.NewFieldAPI(api) - qeAPI := field.NewQuadraticExtensionAPI(fieldAPI, commonCircuitData.DegreeBits) + qeAPI := field.NewQuadraticExtensionAPI(api, fieldAPI, commonCircuitData.DegreeBits) hashAPI := poseidon.NewHashAPI(fieldAPI) poseidonChip := poseidon.NewPoseidonChip(api, fieldAPI, qeAPI) @@ -83,9 +83,75 @@ func (c *VerifierChip) GetChallenges( } } -func (c *VerifierChip) Verify(proofWithPis common.ProofWithPublicInputs, verifierData common.VerifierOnlyCircuitData, commonData common.CommonCircuitData) { - // TODO: Verify shape of the proof? +/* +func (c *VerifierChip) generateProofInput(commonData common.CommonCircuitData) common.ProofWithPublicInputs { + // Generate the parts of the witness that is for the plonky2 proof input + + capHeight := commonData.Config.FriConfig.CapHeight + + friCommitPhaseMerkleCaps := []common.MerkleCap{} + for i := 0; i < len(commonData.FriParams.ReductionArityBits); i++ { + friCommitPhaseMerkleCaps = append(friCommitPhaseMerkleCaps, common.NewMerkleCap(capHeight)) + } + + salt := commonData.SaltSize() + numLeavesPerOracle := []uint{ + commonData.NumPreprocessedPolys(), + commonData.Config.NumWires + salt, + commonData.NumZsPartialProductsPolys() + salt, + commonData.NumQuotientPolys() + salt, + } + friQueryRoundProofs := []common.FriQueryRound{} + for i := uint64(0); i < commonData.FriParams.Config.NumQueryRounds; i++ { + evalProofs := []common.EvalProof{} + merkleProofLen := commonData.FriParams.LDEBits() - capHeight + for _, numLeaves := range numLeavesPerOracle { + leaves := make([]field.F, numLeaves) + merkleProof := common.NewMerkleProof(merkleProofLen) + evalProofs = append(evalProofs, common.NewEvalProof(leaves, merkleProof)) + } + + initialTreesProof := common.NewFriInitialTreeProof(evalProofs) + steps := []common.FriQueryStep{} + for _, arityBit := range commonData.FriParams.ReductionArityBits { + if merkleProofLen < arityBit { + panic("merkleProofLen < arityBits") + } + + steps = append(steps, common.NewFriQueryStep(arityBit, merkleProofLen)) + } + + friQueryRoundProofs = append(friQueryRoundProofs, common.NewFriQueryRound(steps, initialTreesProof)) + } + + proofInput := common.ProofWithPublicInputs{ + Proof: common.Proof{ + WiresCap: common.NewMerkleCap(capHeight), + PlonkZsPartialProductsCap: common.NewMerkleCap(capHeight), + QuotientPolysCap: common.NewMerkleCap(capHeight), + Openings: common.NewOpeningSet( + commonData.Config.NumConstants, + commonData.Config.NumRoutedWires, + commonData.Config.NumWires, + commonData.Config.NumChallenges, + commonData.NumPartialProducts, + commonData.QuotientDegreeFactor, + ), + OpeningProof: common.FriProof{ + CommitPhaseMerkleCaps: friCommitPhaseMerkleCaps, + QueryRoundProofs: friQueryRoundProofs, + FinalPoly: common.NewPolynomialCoeffs(commonData.FriParams.FinalPolyLen()), + }, + }, + PublicInputs: make([]field.F, commonData.NumPublicInputs), + } + return proofInput +} +*/ + +func (c *VerifierChip) Verify(proofWithPis common.ProofWithPublicInputs, verifierData common.VerifierOnlyCircuitData, commonData common.CommonCircuitData) { + // Generate the parts of the witness that is for the plonky2 proof input publicInputsHash := c.GetPublicInputsHash(proofWithPis.PublicInputs) proofChallenges := c.GetChallenges(proofWithPis, publicInputsHash, commonData, verifierData) @@ -100,21 +166,21 @@ func (c *VerifierChip) Verify(proofWithPis common.ProofWithPublicInputs, verifie // Seems like there is a bug in the emulated field code. // Add ZERO to all of the fri challenges values to reduce them. - proofChallenges.PlonkZeta[0] = c.fieldAPI.Add(proofChallenges.PlonkZeta[0], field.ZERO_F).(field.F) - proofChallenges.PlonkZeta[1] = c.fieldAPI.Add(proofChallenges.PlonkZeta[1], field.ZERO_F).(field.F) + proofChallenges.PlonkZeta[0] = c.fieldAPI.Add(proofChallenges.PlonkZeta[0], field.ZERO_F) + proofChallenges.PlonkZeta[1] = c.fieldAPI.Add(proofChallenges.PlonkZeta[1], field.ZERO_F) - proofChallenges.FriChallenges.FriAlpha[0] = c.fieldAPI.Add(proofChallenges.FriChallenges.FriAlpha[0], field.ZERO_F).(field.F) - proofChallenges.FriChallenges.FriAlpha[1] = c.fieldAPI.Add(proofChallenges.FriChallenges.FriAlpha[1], field.ZERO_F).(field.F) + proofChallenges.FriChallenges.FriAlpha[0] = c.fieldAPI.Add(proofChallenges.FriChallenges.FriAlpha[0], field.ZERO_F) + proofChallenges.FriChallenges.FriAlpha[1] = c.fieldAPI.Add(proofChallenges.FriChallenges.FriAlpha[1], field.ZERO_F) for i := 0; i < len(proofChallenges.FriChallenges.FriBetas); i++ { - proofChallenges.FriChallenges.FriBetas[i][0] = c.fieldAPI.Add(proofChallenges.FriChallenges.FriBetas[i][0], field.ZERO_F).(field.F) - proofChallenges.FriChallenges.FriBetas[i][1] = c.fieldAPI.Add(proofChallenges.FriChallenges.FriBetas[i][1], field.ZERO_F).(field.F) + proofChallenges.FriChallenges.FriBetas[i][0] = c.fieldAPI.Add(proofChallenges.FriChallenges.FriBetas[i][0], field.ZERO_F) + proofChallenges.FriChallenges.FriBetas[i][1] = c.fieldAPI.Add(proofChallenges.FriChallenges.FriBetas[i][1], field.ZERO_F) } - proofChallenges.FriChallenges.FriPowResponse = c.fieldAPI.Add(proofChallenges.FriChallenges.FriPowResponse, field.ZERO_F).(field.F) + proofChallenges.FriChallenges.FriPowResponse = c.fieldAPI.Add(proofChallenges.FriChallenges.FriPowResponse, field.ZERO_F) for i := 0; i < len(proofChallenges.FriChallenges.FriQueryIndices); i++ { - proofChallenges.FriChallenges.FriQueryIndices[i] = c.fieldAPI.Add(proofChallenges.FriChallenges.FriQueryIndices[i], field.ZERO_F).(field.F) + proofChallenges.FriChallenges.FriQueryIndices[i] = c.fieldAPI.Add(proofChallenges.FriChallenges.FriQueryIndices[i], field.ZERO_F) } c.friChip.VerifyFriProof( diff --git a/verifier/verifier_test.go b/verifier/verifier_test.go index 9376638..ddf3c84 100644 --- a/verifier/verifier_test.go +++ b/verifier/verifier_test.go @@ -81,7 +81,7 @@ func (c *TestVerifierChallengesCircuit) GetChallengesSanityCheck( } // This test is commented out because pow_witness is randomized between runs of the prover. - // expectedPowResponse := field.NewFieldElementFromString("92909863298412") + // expectedPowResponse := field.NewFieldConstFromString("92909863298412") // c.field.AssertIsEqual(proofChallenges.FriChallenges.FriPowResponse, expectedPowResponse) if len(proofChallenges.FriChallenges.FriQueryIndices) != int(c.numFriQueries) { @@ -118,68 +118,68 @@ func TestFibonacciVerifierWitness(t *testing.T) { t: t, expectedPublicInputsHash: poseidon.Hash{ - field.NewFieldElementFromString("8416658900775745054"), - field.NewFieldElementFromString("12574228347150446423"), - field.NewFieldElementFromString("9629056739760131473"), - field.NewFieldElementFromString("3119289788404190010"), + field.NewFieldConstFromString("8416658900775745054"), + field.NewFieldConstFromString("12574228347150446423"), + field.NewFieldConstFromString("9629056739760131473"), + field.NewFieldConstFromString("3119289788404190010"), }, expectedPlonkBetas: []field.F{ - field.NewFieldElementFromString("4678728155650926271"), - field.NewFieldElementFromString("13611962404289024887"), + field.NewFieldConstFromString("4678728155650926271"), + field.NewFieldConstFromString("13611962404289024887"), }, expectedPlonkGammas: []field.F{ - field.NewFieldElementFromString("13237663823305715949"), - field.NewFieldElementFromString("15389314098328235145"), + field.NewFieldConstFromString("13237663823305715949"), + field.NewFieldConstFromString("15389314098328235145"), }, expectedPlonkAlphas: []field.F{ - field.NewFieldElementFromString("14505919539124304197"), - field.NewFieldElementFromString("1695455639263736117"), + field.NewFieldConstFromString("14505919539124304197"), + field.NewFieldConstFromString("1695455639263736117"), }, expectedPlonkZeta: field.QuadraticExtension{ - field.NewFieldElementFromString("14887793628029982930"), - field.NewFieldElementFromString("1136137158284059037"), + field.NewFieldConstFromString("14887793628029982930"), + field.NewFieldConstFromString("1136137158284059037"), }, expectedFriAlpha: field.QuadraticExtension{ - field.NewFieldElementFromString("14641715242626918707"), - field.NewFieldElementFromString("10574243340537902930"), + field.NewFieldConstFromString("14641715242626918707"), + field.NewFieldConstFromString("10574243340537902930"), }, expectedFriBetas: []field.QuadraticExtension{}, expectedFriQueryIndices: []field.F{ - field.NewFieldElement(6790812084677375942), - field.NewFieldElement(12394212020331474798), - field.NewFieldElement(16457600747000998582), - field.NewFieldElement(1543271328932331916), - field.NewFieldElement(12115726870906958644), - field.NewFieldElement(6775897107605342797), - field.NewFieldElement(15989401564746021030), - field.NewFieldElement(10691676456016926845), - field.NewFieldElement(1632499470630032007), - field.NewFieldElement(1317292355445098328), - field.NewFieldElement(18391440812534384252), - field.NewFieldElement(17321705613231354333), - field.NewFieldElement(6176487551308859603), - field.NewFieldElement(7119835651572002873), - field.NewFieldElement(3903019169623116693), - field.NewFieldElement(4886491111111487546), - field.NewFieldElement(4087641893164620518), - field.NewFieldElement(13801643080324181364), - field.NewFieldElement(16993775312274189321), - field.NewFieldElement(9268202926222765679), - field.NewFieldElement(10683001302406181735), - field.NewFieldElement(13359465725531647963), - field.NewFieldElement(4523327590105620849), - field.NewFieldElement(4883588003760409588), - field.NewFieldElement(187699146998097671), - field.NewFieldElement(14489263557623716717), - field.NewFieldElement(11748359318238148146), - field.NewFieldElement(13636347200053048758), + field.NewFieldConst(6790812084677375942), + field.NewFieldConst(12394212020331474798), + field.NewFieldConst(16457600747000998582), + field.NewFieldConst(1543271328932331916), + field.NewFieldConst(12115726870906958644), + field.NewFieldConst(6775897107605342797), + field.NewFieldConst(15989401564746021030), + field.NewFieldConst(10691676456016926845), + field.NewFieldConst(1632499470630032007), + field.NewFieldConst(1317292355445098328), + field.NewFieldConst(18391440812534384252), + field.NewFieldConst(17321705613231354333), + field.NewFieldConst(6176487551308859603), + field.NewFieldConst(7119835651572002873), + field.NewFieldConst(3903019169623116693), + field.NewFieldConst(4886491111111487546), + field.NewFieldConst(4087641893164620518), + field.NewFieldConst(13801643080324181364), + field.NewFieldConst(16993775312274189321), + field.NewFieldConst(9268202926222765679), + field.NewFieldConst(10683001302406181735), + field.NewFieldConst(13359465725531647963), + field.NewFieldConst(4523327590105620849), + field.NewFieldConst(4883588003760409588), + field.NewFieldConst(187699146998097671), + field.NewFieldConst(14489263557623716717), + field.NewFieldConst(11748359318238148146), + field.NewFieldConst(13636347200053048758), }, } witness := TestVerifierChallengesCircuit{} @@ -201,81 +201,81 @@ func TestDummyVerifierWitness(t *testing.T) { t: t, expectedPublicInputsHash: poseidon.Hash{ - field.NewFieldElementFromString("0"), - field.NewFieldElementFromString("0"), - field.NewFieldElementFromString("0"), - field.NewFieldElementFromString("0"), + field.NewFieldConstFromString("0"), + field.NewFieldConstFromString("0"), + field.NewFieldConstFromString("0"), + field.NewFieldConstFromString("0"), }, expectedPlonkBetas: []field.F{ - field.NewFieldElementFromString("11216469004148781751"), - field.NewFieldElementFromString("6201977337075152249"), + field.NewFieldConstFromString("11216469004148781751"), + field.NewFieldConstFromString("6201977337075152249"), }, expectedPlonkGammas: []field.F{ - field.NewFieldElementFromString("8369751006669847974"), - field.NewFieldElementFromString("3610024170884289835"), + field.NewFieldConstFromString("8369751006669847974"), + field.NewFieldConstFromString("3610024170884289835"), }, expectedPlonkAlphas: []field.F{ - field.NewFieldElementFromString("970160439138448145"), - field.NewFieldElementFromString("2402201283787401921"), + field.NewFieldConstFromString("970160439138448145"), + field.NewFieldConstFromString("2402201283787401921"), }, expectedPlonkZeta: field.QuadraticExtension{ - field.NewFieldElementFromString("17377750363769967882"), - field.NewFieldElementFromString("11921191651424768462"), + field.NewFieldConstFromString("17377750363769967882"), + field.NewFieldConstFromString("11921191651424768462"), }, expectedFriAlpha: field.QuadraticExtension{ - field.NewFieldElementFromString("16721004555774385479"), - field.NewFieldElementFromString("10688151135543754663"), + field.NewFieldConstFromString("16721004555774385479"), + field.NewFieldConstFromString("10688151135543754663"), }, expectedFriBetas: []field.QuadraticExtension{ { - field.NewFieldElementFromString("3312441922957827805"), - field.NewFieldElementFromString("15128092514958289671"), + field.NewFieldConstFromString("3312441922957827805"), + field.NewFieldConstFromString("15128092514958289671"), }, { - field.NewFieldElementFromString("13630530769060141802"), - field.NewFieldElementFromString("14559883974933163008"), + field.NewFieldConstFromString("13630530769060141802"), + field.NewFieldConstFromString("14559883974933163008"), }, { - field.NewFieldElementFromString("16146508250083930687"), - field.NewFieldElementFromString("5176346568444408396"), + field.NewFieldConstFromString("16146508250083930687"), + field.NewFieldConstFromString("5176346568444408396"), }, }, expectedFriQueryIndices: []field.F{ - field.NewFieldElement(16334967868590615051), - field.NewFieldElement(2911473540496037915), - field.NewFieldElement(14887216056886344225), - field.NewFieldElement(7808811227805914295), - field.NewFieldElement(2018594961417375749), - field.NewFieldElement(3733368398777208435), - field.NewFieldElement(2623035669037055104), - field.NewFieldElement(299243030573481514), - field.NewFieldElement(7189789717962704433), - field.NewFieldElement(14566344026886816268), - field.NewFieldElement(12555390069003437453), - field.NewFieldElement(17225508403199418233), - field.NewFieldElement(5088797913879903292), - field.NewFieldElement(9715691392773433023), - field.NewFieldElement(7565836764713256165), - field.NewFieldElement(1500143546029322929), - field.NewFieldElement(1245802417104422080), - field.NewFieldElement(6831959786661245110), - field.NewFieldElement(17271054758535453780), - field.NewFieldElement(6225460404576395409), - field.NewFieldElement(15932661092896277351), - field.NewFieldElement(12452534049198240575), - field.NewFieldElement(4225199666055520177), - field.NewFieldElement(13235091290587791090), - field.NewFieldElement(2562357622728700774), - field.NewFieldElement(17676678042980201498), - field.NewFieldElement(5837067135702409874), - field.NewFieldElement(11238419549114325157), + field.NewFieldConst(16334967868590615051), + field.NewFieldConst(2911473540496037915), + field.NewFieldConst(14887216056886344225), + field.NewFieldConst(7808811227805914295), + field.NewFieldConst(2018594961417375749), + field.NewFieldConst(3733368398777208435), + field.NewFieldConst(2623035669037055104), + field.NewFieldConst(299243030573481514), + field.NewFieldConst(7189789717962704433), + field.NewFieldConst(14566344026886816268), + field.NewFieldConst(12555390069003437453), + field.NewFieldConst(17225508403199418233), + field.NewFieldConst(5088797913879903292), + field.NewFieldConst(9715691392773433023), + field.NewFieldConst(7565836764713256165), + field.NewFieldConst(1500143546029322929), + field.NewFieldConst(1245802417104422080), + field.NewFieldConst(6831959786661245110), + field.NewFieldConst(17271054758535453780), + field.NewFieldConst(6225460404576395409), + field.NewFieldConst(15932661092896277351), + field.NewFieldConst(12452534049198240575), + field.NewFieldConst(4225199666055520177), + field.NewFieldConst(13235091290587791090), + field.NewFieldConst(2562357622728700774), + field.NewFieldConst(17676678042980201498), + field.NewFieldConst(5837067135702409874), + field.NewFieldConst(11238419549114325157), }, } witness := TestVerifierChallengesCircuit{} // No real witness as the test circuit's Define function will inject in the witness