mirror of
https://github.com/arnaucube/gnark-plonky2-verifier.git
synced 2026-01-12 17:11:31 +01:00
Upgrade to gnark 0.8 (#18)
* make proof with PIS public input * upgraded to 0.8 gnark * reduced pow witness * fixed bug * fixed test * fixed bug * adding profiling * changed everything to be pointers * convert remaining poseidon constants * added the recursive_very_small * added more outputs for benchmark
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user