diff --git a/verifier_circuit/src/prover/expr.ts b/verifier_circuit/src/prover/expr.ts index ad06de7d..69b622c5 100644 --- a/verifier_circuit/src/prover/expr.ts +++ b/verifier_circuit/src/prover/expr.ts @@ -80,6 +80,22 @@ export class Variable { point_evaluations = evals.genericSelector; break; } + case GateType.CompleteAdd: { + point_evaluations = evals.completeAddSelector; + break; + } + case GateType.VarBaseMul: { + point_evaluations = evals.mulSelector; + break; + } + case GateType.EndoMul: { + point_evaluations = evals.emulSelector; + break; + } + case GateType.EndoMulScalar: { + point_evaluations = evals.endomulScalarSelector; + break; + } } break; } @@ -144,8 +160,8 @@ export namespace PolishToken { export type Sub = { kind: "sub" } - export type VanishesOnLast4Rows = { - kind: "vanishesonlast4rows" + export type VanishesOnZeroKnowledgeAndPreviousRows = { + kind: "vanishesonzeroknowledgeandpreviousrows" } export type UnnormalizedLagrangeBasis = { kind: "unnormalizedlagrangebasis" @@ -216,7 +232,7 @@ export namespace PolishToken { stack.push(c.mds[t.row][t.col]); break; } - case "vanishesonlast4rows": { + case "vanishesonzeroknowledgeandpreviousrows": { const ZK_ROWS = 3; const w4 = powScalar(domain_gen, domain_size - (ZK_ROWS + 1)); const w3 = domain_gen.mul(w4); @@ -312,7 +328,7 @@ export type PolishToken = | PolishToken.Add | PolishToken.Mul | PolishToken.Sub - | PolishToken.VanishesOnLast4Rows + | PolishToken.VanishesOnZeroKnowledgeAndPreviousRows | PolishToken.UnnormalizedLagrangeBasis | PolishToken.Store | PolishToken.Load diff --git a/verifier_circuit/src/prover/prover.ts b/verifier_circuit/src/prover/prover.ts index 18882b8b..0b2d5776 100644 --- a/verifier_circuit/src/prover/prover.ts +++ b/verifier_circuit/src/prover/prover.ts @@ -240,7 +240,7 @@ export class ProverProof { const evals = ProofEvaluations.combine(this.evals, powers_of_eval_points_for_chunks); //~ 29. Compute the evaluation of $ft(\zeta)$. - const zkp = index.zkpm.evaluate(zeta); + const zkp = index.permutation_vanishing_polynomial_m.evaluate(zeta); const zeta1m1 = zeta1.sub(Scalar.from(1)); const PERMUTATION_CONSTRAINTS = 3; // FIXME: hardcoded here @@ -456,6 +456,14 @@ export class ProofEvaluations { genericSelector: Evals /* evaluation of the poseidon selector polynomial */ poseidonSelector: Evals + /** evaluation of the elliptic curve addition selector polynomial */ + completeAddSelector: Evals + /** evaluation of the elliptic curve variable base scalar multiplication selector polynomial */ + mulSelector: Evals + /** evaluation of the endoscalar multiplication selector polynomial */ + emulSelector: Evals + /** evaluation of the endoscalar multiplication scalar computation selector polynomial */ + endomulScalarSelector: Evals constructor( w: Array, @@ -464,6 +472,10 @@ export class ProofEvaluations { coefficients: Array, genericSelector: Evals, poseidonSelector: Evals, + completeAddSelector: Evals, + mulSelector: Evals, + emulSelector: Evals, + endomulScalarSelector: Evals, lookup?: LookupEvaluations, public_input?: Evals, ) { @@ -474,6 +486,10 @@ export class ProofEvaluations { this.lookup = lookup; this.genericSelector = genericSelector; this.poseidonSelector = poseidonSelector; + this.completeAddSelector = completeAddSelector; + this.mulSelector = mulSelector; + this.emulSelector = emulSelector; + this.endomulScalarSelector = endomulScalarSelector; this.public_input = public_input; return this; } @@ -499,6 +515,10 @@ export class ProofEvaluations { //lookup, genericSelector, poseidonSelector, + completeAddSelector, + mulSelector, + emulSelector, + endomulScalarSelector, } = this; let public_input = undefined; @@ -511,6 +531,10 @@ export class ProofEvaluations { coefficients.map(f), f(genericSelector), f(poseidonSelector), + f(completeAddSelector), + f(mulSelector), + f(emulSelector), + f(endomulScalarSelector), undefined, // FIXME: ignoring lookup public_input ) diff --git a/verifier_circuit/src/serde/serde_index.ts b/verifier_circuit/src/serde/serde_index.ts index b3ec9fad..acf4a454 100644 --- a/verifier_circuit/src/serde/serde_index.ts +++ b/verifier_circuit/src/serde/serde_index.ts @@ -46,7 +46,7 @@ export type VariableJSON = { export namespace PolishTokenJSON { export type UnitVariant = string - export type Literal = Scalar + export type Literal = string // Scalar export type Cell = VariableJSON export type Pow = number export type Mds = { @@ -91,7 +91,7 @@ interface VerifierIndexJSON { //powers_of_alpha: AlphasJSON shift: string[] - zkpm: PolynomialJSON + permutation_vanishing_polynomial_m: PolynomialJSON w: string endo: string linear_constant_term: PolishTokenJSON[] @@ -144,16 +144,16 @@ export function deserPolishToken(json: PolishTokenJSON): PolishToken | undefined case "Alpha": return { kind: "alpha" } case "Beta": return { kind: "beta" } case "Gamma": return { kind: "gamma" } - case "EndoCoefficint": return { kind: "endocoefficient" } + case "EndoCoefficient": return { kind: "endocoefficient" } case "Dup": return { kind: "dup" } case "Add": return { kind: "add" } case "Mul": return { kind: "mul" } case "Sub": return { kind: "sub" } - case "VanishesOnLast4Rows": return { kind: "vanishesonlast4rows" } + case "VanishesOnZeroKnowledgeAndPreviousRows": return { kind: "vanishesonzeroknowledgeandpreviousrows" } case "Store": return { kind: "store" } } } else { - if (json.Literal != null) return { kind: "literal", lit: json.Literal }; + if (json.Literal != null) return { kind: "literal", lit: deserHexScalar(json.Literal) }; if (json.Cell != null) { return { kind: "cell", cell: deserVariable(json.Cell) }; } @@ -184,7 +184,7 @@ export function deserVerifierIndex(json: VerifierIndexJSON): VerifierIndex { endomul_scalar_comm, //powers_of_alpha, shift, - zkpm, + permutation_vanishing_polynomial_m, w, endo, linear_constant_term, @@ -199,7 +199,7 @@ export function deserVerifierIndex(json: VerifierIndexJSON): VerifierIndex { [ArgumentType.id({ kind: "gate", type: GateType.Zero }), [0, 21]], [ArgumentType.id({ kind: "permutation" }), [21, 3]] ] - )); + )); return new VerifierIndex( domain_size, @@ -216,7 +216,7 @@ export function deserVerifierIndex(json: VerifierIndexJSON): VerifierIndex { deserPolyComm(endomul_scalar_comm), powers_of_alpha, shift.map(deserHexScalar), - deserPolynomial(zkpm), + deserPolynomial(permutation_vanishing_polynomial_m), deserHexScalar(w), deserHexScalar(endo), linear_constant_term.map((token) => deserPolishToken(token)!), diff --git a/verifier_circuit/src/serde/serde_proof.ts b/verifier_circuit/src/serde/serde_proof.ts index 35074628..5cbf931e 100644 --- a/verifier_circuit/src/serde/serde_proof.ts +++ b/verifier_circuit/src/serde/serde_proof.ts @@ -22,9 +22,12 @@ interface ProofEvalsJSON { s: PointEvalsJSON[] // of size 7 - 1, total num of wirable registers minus one coefficients: PointEvalsJSON[] // of size 15, total num of registers (columns) //lookup?: LookupEvaluationsJSON - lookup: null, generic_selector: PointEvalsJSON poseidon_selector: PointEvalsJSON + complete_add_selector: PointEvalsJSON + mul_selector: PointEvalsJSON + emul_selector: PointEvalsJSON + endomul_scalar_selector: PointEvalsJSON } interface ProverCommitmentsJSON { @@ -64,8 +67,20 @@ export function deserProofEvals(json: ProofEvalsJSON): ProofEvaluations, powers_of_alpha: Alphas, shift: Scalar[], - zkpm: Polynomial, + permutation_vanishing_polynomial_m: Polynomial, w: Scalar, endo: Scalar, linear_constant_term: PolishToken[] @@ -98,7 +98,7 @@ export class VerifierIndex { this.endomul_scalar_comm = endomul_scalar_comm; this.powers_of_alpha = powers_of_alpha; this.shift = shift; - this.zkpm = zkpm; + this.permutation_vanishing_polynomial_m = permutation_vanishing_polynomial_m; this.w = w; this.endo = endo; this.linear_constant_term = linear_constant_term; diff --git a/verifier_circuit/test/proof.json b/verifier_circuit/test/proof.json index 90ec943d..2bdba554 100644 --- a/verifier_circuit/test/proof.json +++ b/verifier_circuit/test/proof.json @@ -1,208 +1,216 @@ { "evals": { + "public": { + "zeta": [ + "0000000000000000000000000000000000000000000000000000000000000000" + ], + "zeta_omega": [ + "0000000000000000000000000000000000000000000000000000000000000000" + ] + }, "w": [ { "zeta": [ - "6fdff23dd51794d3167062a4433861899319ceba78ea77350d09491eb19cea3b" + "0ee6997d54b010a4cf2c1f9786462cf4da736111d9fc4190e92810b1e16dde15" ], "zeta_omega": [ - "5f4c76faf4d878bc3a2553fb069330852ad3149ca12927a8a61b5cdbb7193e22" + "b26f402984840f073f6c4e633f23c61ec8f18b0741d5327d0840491e346fab1d" ] }, { "zeta": [ - "4952aec0f1fd55f9e725cb6d4e8fbec6b9c4afdd96ab41f997a017f7717f2d28" + "8ce15909db944f830bdef850f39e7bd6d14dad7ae6c6e7d68480dc503f01e025" ], "zeta_omega": [ - "9a165bb5dcc996187f5193dc040d1267248ac46784dbb1b0c1677dd5c84e2f1b" + "782a4fb4a6144bf1571006a3bd50072cf7661fbf85fe4d68dc717719e79a970a" ] }, { "zeta": [ - "78dc0bc2650f426e8629640f3ad63668cc021357852e92a36c56bcd8c010063d" + "fc2cf9406945668625f3fe115f95f5ba2531342a609baa897c1c820d9a9e4d1d" ], "zeta_omega": [ - "5a10ed6186e31cc94c706fc94dfc4a41e6e821e58ad74d9d56c278c2cc128f0e" + "e5e136ec9a0d789d6563b60b605dc37427fa2be86090235fb4f6ed3d571a493a" ] }, { "zeta": [ - "4ec73d394fa093c66cdc7f20ee78f7e270dc2cae6389e1f798100ea873df140d" + "27aae43bb3ef5583f7d22e3e78d5993a85520e4ec3f8ac5735fa90fbe0134306" ], "zeta_omega": [ - "431c31c69461d7ea6286fdfd27ae6eb3ee21ab86bfef6c0138edea57ade4250e" + "62cbedf7b75551fce67a5fe24dd3906ee0c4acfbcb5f995ba4104a1b07074f3c" ] }, { "zeta": [ - "823ee2621dc84c9c29a416bd64065c31f1a845e4bffa6a92343a8edde0344106" + "935dcda7b3e24a8d23a9643b734ed55597761db9dad53a77fdcc490f9494341a" ], "zeta_omega": [ - "fadf44a565414b29ca782f49f583ea472dc0b867bd17b9ec45ab15ca4f7b5133" + "73ea3192c62b8e94412ed6dd2a7a781a3de32d57a90db2d005c4b01fda572926" ] }, { "zeta": [ - "cf9d129083fb070f07bd73f1a1fdb39e08bdec458fcccbfe77a64bba736bb23b" + "b5abf25b1768746624332857d4a9e72b2224ec90b02f3ad2427891d0266e2110" ], "zeta_omega": [ - "c2ace2e828fa51d797b12c7c70202fa20c8968f855d1a8b87e21782aca1c0f3d" + "868d3be77da38dc3f68f77ee6fd81c124b3bbff9f60ad4ea81653292dc749803" ] }, { "zeta": [ - "579fc7d77d58079be6faf954d9b06c6aae87367ef9cc3c0e7fc88af088cf961b" + "37c45fab485a6c29c4e2f69b0c3fac1a670afacb764daa88a5fd20dd5fd1cf2c" ], "zeta_omega": [ - "d533b07901d0b98db69bcdf02ab77989471a62e58836bef73082a6b2a00dec02" + "f1d9a127634238676a17d8da15fa197f60f7d4fbf1c45e61118b67757807f931" ] }, { "zeta": [ - "7cc73e5ea0354fb1c39ded320265da3d7325a961dff74da608fa6fdf6197a83b" + "766e37fe873a8182a387055ab80c3972f5cf6ee167ee3725c34d319e0556a026" ], "zeta_omega": [ - "45261886af4062481583bd44816c02b99470bb98630cff3633934ad27ff30226" + "8faac863474cb010ec3b197255b49af089c6a7462135a9a143ba7eac2d8b8a1b" ] }, { "zeta": [ - "1a2e2ab1cc7625161f6b5ad3b7f719c25f91d87e68da21e5495b2cec15ee3226" + "5b33af4bdb4a2ffce6f83f4ffcff41b42e092bd962857f568ae9d66be4e3fd0e" ], "zeta_omega": [ - "2ad8ef6cdd6079d3e43ff239a6b0a668bf42cf8c3b2b5bae26789afb571bb326" + "8bbd901bc84d16ee1253c3347fe178078f65098f4566a3f610ea8393fc25c601" ] }, { "zeta": [ - "ac08316a1fd90dddb600e50581ec69d6354a5086b2af87f27e317099ae919436" + "6c203ba435072a1e5bf8149908bafc528e997e5a3c755bc036d1e5b295a6bd2f" ], "zeta_omega": [ - "9f46c463e9e93baf0efe1748b547365806b410e0d570a713d7905343a10c371e" + "35026971f45dea7adc10042809240fec357a78b06cb1242545c8b7495eb42531" ] }, { "zeta": [ - "b121015d1bb8eb68b8bb7979709c96fc9393257e95ae7cdafd66f426cfcc031d" + "22625db3d0b02c6a8731e54543b5221acc66fec34adaad18e1e55b426261e008" ], "zeta_omega": [ - "6980d75abd6a4d1a96560158f4f83bc8cb6b36cc3f8f9ec24550d21b4f05aa13" + "87a3fa5df51d09e91446d39e7393265ac925243b27ce4accb6eeb6b3040ce830" ] }, { "zeta": [ - "f704c5769f65d70cfceafd865bb3d4f4013630cfc9c076df75b6c0ed2eb27128" + "71beb89e8a22117d500b0523b3df173a99c42bfc3fc83cd34520f8b94cd85b1d" ], "zeta_omega": [ - "7f5d4ce33cfe3b372953f5e22be09c0afb77888271b54945db9d3831fa711805" + "c060365bd84a892faf0011dd2983ea0202462451cdee6245a7d3128ace032013" ] }, { "zeta": [ - "7cc73cf94d387964d2aa595a5ad50d2157183d23716f3cb8690e63a8829e9402" + "6969086b1ca6b1facb8f1dc29256e75e8b567e1bd906d3095e02fdab7a33a218" ], "zeta_omega": [ - "3ffc73dd0eb2ab0176d833ae0fc2c3789ad98aabb66da7e17cf2619711e4c926" + "5fe9c2a335613df61cc5bc2a3a3868159e5034be123b81df244be4f34c8c7706" ] }, { "zeta": [ - "7ba913b79559033ecd1923689f8d49a2b354282e335cb27f58465340e753b73a" + "71c9093b5964be21c9501adafea1d03838c44a3a2d623c732908bfb65750bf20" ], "zeta_omega": [ - "955ccfe5cfae6b39ed71c4f5f0cd662baebf45c6b66dc89e23079dcb58c25007" + "d100e2bcc97a2fb1116d21a0a8a440245c014897b542ace3748b09dc90de140d" ] }, { "zeta": [ - "3820476983a07d70ce90cd2cb453b6f854a13d627261853fb625bc0ceb7f1116" + "2803052d5d948655a52763e9874bc4a87a9a2a02d69b8c1ae4edc82b0c875a04" ], "zeta_omega": [ - "a82354c6fc3fed879706a8bed2e591ff406505f1b3249e3e06fea4692664ca31" + "0675c9e519dd2270f7e223f6c0f3b82b3e1aecf7f9451aa5bec64281895e9624" ] } ], "z": { "zeta": [ - "0014fda1f21907c059adf80bf99608cbef3654780e08ae384f4bcd6c5629f001" + "3760dbc3bf6a6361161d2142764a8c7c49a1470b3d91ae9ae84b389483745610" ], "zeta_omega": [ - "3aff02a9bfc9c353f9b34647427c82f371ba3f25811fe57de92ff3afeb66b919" + "8e462e7c827fdf9f1b5b0be91d47963fc55d194d0c2b673bbb62f7df8b8d703d" ] }, "s": [ { "zeta": [ - "cf7c33dad8d284a773c58720e6d8678ef29f1134660a73725737cc7971b3f229" + "352e67232211c9b8d6f78bc80019aa69ea1dfe9939e38109886dafb9ea4c3f05" ], "zeta_omega": [ - "cd52e0aa82512b00291fad06cbc81a77dc0a29814d71bad743fd2674b31ba503" + "ff58d7a3491543ebaa7eb998c30118627ce33f35f70b1fe7d2c17445c6e23f2f" ] }, { "zeta": [ - "5bb13236108d36b861ca286d6398d43a90a784250b1d50ba61d00455eae9021d" + "d5153c912a146a24896c90e7929723ed6a6fe261776272a46dd50ce2fa70c007" ], "zeta_omega": [ - "c1a86d71dcc9640ef960d96403944bc2b3ec0e2ed6ba814d5241c753253c3239" + "94a35d45710531e747033beff4868b8c34d85f743c6edb1b74d654256cae1007" ] }, { "zeta": [ - "f4694bdfc63411520b183608aeccafb1c588816ce8a4b8fe59e1b74415590f0d" + "de024f1e362c8a354674bda479befde7a4d7cca8359623213f9550c503dd9f0c" ], "zeta_omega": [ - "5e0407fced69f0ba9bff775e82fdb5bd543a9c0d1141f16d480f093e82af061c" + "b7cbc397cde4f1cb58b2a26c8c9d9e74d7c417a231c9c0060b7441c33877b92a" ] }, { "zeta": [ - "fd800c0df3f125db645297ae55509cb5f76ec6e246ae95aa5252af01f1e0792d" + "e8b28b30ef40ae073d20e20b751d06689ff593f8bd28c0423ed798ef98651a19" ], "zeta_omega": [ - "4a308c16df39919a8208d05b694f7b038d4597999b05d8085be3a60dd7af6918" + "a343ac274a8fad35bc45519056cbe03eb1efa1d8ec868b22ccc1569215aa2d26" ] }, { "zeta": [ - "186db89f0b6289b6b1c3f298ab0b4baacaff8df3d1e8c6cba456f36f7007ea00" + "76ded0bb0b99bc6f899c70f27cb3b7925da2d3a6b0d4c22731388921a4a2ad2c" ], "zeta_omega": [ - "5266fba41c1596853afc7d0f6fb314d0448728a047233ebc39ad9f028b6f2921" + "025c144695146b7de928e2f231e3f46f380020824aee3efd17b6d7fac3714b0f" ] }, { "zeta": [ - "ea699df77ecd1e7baaa7518fe68fe0f2215e7a70661eefc54e4197d617e76022" + "25562bc0927561e0dde38ecc96f95a9f686d3d06aaf8cde6b8d2466345423103" ], "zeta_omega": [ - "88dd977d88176caf4e937a43776125b9663afe151d8352186705bcf37b297e18" + "8b372cd6781b8e6a6964f9ff92c2b16865ab94a651438d50eb137e8a5796c93a" ] } ], "coefficients": [ { "zeta": [ - "1830aac7e06062845a97cddf1bf8624fe481388a6df0c336742a3e968428241a" + "bda9edb237d7be9ba7a63963b61c18731c4e363b860f23d0b8f67a23ff75e33e" ], "zeta_omega": [ - "5428fce5227cdc49c3cf958388797b7ef874f93cfc357f935ac40b4caeecc614" + "6ec661719a3f8ae701ab294ebe1560f2dcc8a5172e3765f70c5a1b56823d6d38" ] }, { "zeta": [ - "f1a2d8d0cf9de073cb83fe184381b74fdf48fdf547e20d6791bb392bea2a1f08" + "2c90e1e377c8b6a96f6f17f28032b4e101c79f806c7f1bb00a0e445c2d9f7216" ], "zeta_omega": [ - "a983ec7c1cbc0c209618e42a6f32be4f617c15c3742b09fa0a555f099b056c1f" + "6d51ae72a4f6da9ecf26190f1736404852b8d5e3ccf4b52b2ecebe8108856a1c" ] }, { "zeta": [ - "5b7462bad0128fe14fefb8a891e5f1a6b5e700ae92b45088cf16429c5c9cf527" + "47250ab48d0b30f67968d40729228615aabdca7f86d5f66ffca53ee1f0cad90d" ], "zeta_omega": [ - "1ed45bd66cac422c564bf3a581ddb1073581a3692e9ca7ac518e3552cca88635" + "878f708434f59028f9b85a014ba919548fc2b85e66ae189cf065c0d4a7d33121" ] }, { @@ -215,18 +223,18 @@ }, { "zeta": [ - "ab12da796f5147ff760fbf8ce7ca1ba632c35357ff10c2c2343c7f685cb1b239" + "f89218cb33044f7b117628e551a73fefacdcfcced950b23fe029d3f12f3dc819" ], "zeta_omega": [ - "ae0af8cad432bece2952b7a9d15e92f6771d290c80898b3ffb073c25903f1721" + "26fe881e38f9108d62205a41d0bff3d7bb5de49c424f864507c06c7f81cc2233" ] }, { "zeta": [ - "72a40c829088aad9ccddf17eb1440ed49969393800a514bf43418032e1c41902" + "03cff766a4f7a70544667961e3a55766c60b01bb0ce51940b59cb904f040bd0c" ], "zeta_omega": [ - "71fc57bc6e3dd8e93b72f41f0ebee6632df69ca62ad22640ac52419e7a954d0a" + "f455d2f5ad49d4831dbbef450d2633246c8b5e7694e57d93fdbfdb2a2a119f19" ] }, { @@ -239,26 +247,26 @@ }, { "zeta": [ - "5b7462bad0128fe14fefb8a891e5f1a6b5e700ae92b45088cf16429c5c9cf527" + "47250ab48d0b30f67968d40729228615aabdca7f86d5f66ffca53ee1f0cad90d" ], "zeta_omega": [ - "1ed45bd66cac422c564bf3a581ddb1073581a3692e9ca7ac518e3552cca88635" + "878f708434f59028f9b85a014ba919548fc2b85e66ae189cf065c0d4a7d33121" ] }, { "zeta": [ - "4c173b8ba0b06f551b73b7c1d466a9f69430fea3da965eef60d27bc746c71430" + "73b5eb9705d4e69fe9d7ebf9a9543af7ab846a00f354122007b4823d1e6a4c24" ], "zeta_omega": [ - "c6574853687d08c00ebb42c7f476293596fdb82ca3c7b0a65ce3945b67aef214" + "f4e01ef7d8eb6bc7c8df731062df599ce17a8e4233a3cec71e347f56b0589c3d" ] }, { "zeta": [ - "c7c9c0754e40f24bdd53db8e8441fffdfeefe0e6fec69844adb97e039a277f35" + "f2f428fdea14ff6f89a935228b5b902220c5fa58c0867ebf75f05fe84fbb4d00" ], "zeta_omega": [ - "cc114852f7b70dfbb16dce69b5e2c42e1d31efbe2ae53dbfa262b9e89a147c0c" + "3f52e432fd50af1105530fbfb10cd4b1e34627b019848a1e0c40b5292daae43f" ] }, { @@ -302,13 +310,12 @@ ] } ], - "lookup": null, "generic_selector": { "zeta": [ - "1830aac7e06062845a97cddf1bf8624fe481388a6df0c336742a3e968428241a" + "bda9edb237d7be9ba7a63963b61c18731c4e363b860f23d0b8f67a23ff75e33e" ], "zeta_omega": [ - "5428fce5227cdc49c3cf958388797b7ef874f93cfc357f935ac40b4caeecc614" + "6ec661719a3f8ae701ab294ebe1560f2dcc8a5172e3765f70c5a1b56823d6d38" ] }, "poseidon_selector": { @@ -318,7 +325,60 @@ "zeta_omega": [ "0000000000000000000000000000000000000000000000000000000000000000" ] - } + }, + "complete_add_selector": { + "zeta": [ + "0000000000000000000000000000000000000000000000000000000000000000" + ], + "zeta_omega": [ + "0000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "mul_selector": { + "zeta": [ + "0000000000000000000000000000000000000000000000000000000000000000" + ], + "zeta_omega": [ + "0000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "emul_selector": { + "zeta": [ + "0000000000000000000000000000000000000000000000000000000000000000" + ], + "zeta_omega": [ + "0000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "endomul_scalar_selector": { + "zeta": [ + "0000000000000000000000000000000000000000000000000000000000000000" + ], + "zeta_omega": [ + "0000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "range_check0_selector": null, + "range_check1_selector": null, + "foreign_field_add_selector": null, + "foreign_field_mul_selector": null, + "xor_selector": null, + "rot_selector": null, + "lookup_aggregation": null, + "lookup_table": null, + "lookup_sorted": [ + null, + null, + null, + null, + null + ], + "runtime_lookup_table": null, + "runtime_lookup_table_selector": null, + "xor_lookup_selector": null, + "lookup_gate_lookup_selector": null, + "range_check_lookup_selector": null, + "foreign_field_mul_lookup_selector": null }, "prev_challenges": [], "commitments": { @@ -326,8 +386,8 @@ { "unshifted": [ { - "x": "11384881716366433235881989838753750779999371919399684632247936799250435624576", - "y": "6377247596799976024146273333997354256491984436498742280552134462817620204824" + "x": "10022776920178662625653882024831784887362651599537661268802649794620075359780", + "y": "13701797794263560059647750725460854299125412005452969236441406556995645973354" } ], "shifted": null @@ -335,8 +395,8 @@ { "unshifted": [ { - "x": "23582050993710722229262393296152908283091470665247386288684305006034648219878", - "y": "11427701692432169677029262551996362857526596480466214518689572468137018560549" + "x": "26733394152545209208068317420650363312016669179694707697294710434170358968895", + "y": "27283796072705867952890642786162372198728964826471486212109422128169343208561" } ], "shifted": null @@ -344,8 +404,8 @@ { "unshifted": [ { - "x": "13420348026069661676356401587438186500690266400750710862020011111977649091561", - "y": "26720866708575721266346505743831955353205768002726988427931914807074755926754" + "x": "26832580301520667744736498832448118134748734604326970153483132759726646508636", + "y": "10551775357371742425092311229648401818656103049057558007939327382682532058938" } ], "shifted": null @@ -353,8 +413,8 @@ { "unshifted": [ { - "x": "20942824374959140391194769574625643240503685395525356298970493400101130580624", - "y": "23048057204713119470527010821487872399327116088706083768235242560730401950260" + "x": "26428988116372924205190706365806805748030317937581363229595594220534360510759", + "y": "25181416823082157543551240450769726491863681506537351192447817174464973769051" } ], "shifted": null @@ -362,8 +422,8 @@ { "unshifted": [ { - "x": "11935450655571424083926994095109336988925681968028483533705509059092377476215", - "y": "4590748708308733542646839028114638894405267161198294719089388455746285542089" + "x": "910500587799090382961496465745730573634582891221485983989100626416911651459", + "y": "21531517860719575675082870616588036399687101929562533026417488386911000863795" } ], "shifted": null @@ -371,8 +431,8 @@ { "unshifted": [ { - "x": "17176414549347296146584364917978442318273984484518020742545764868369118260039", - "y": "28229360108900966183510148963675726139419731843358293976735838661487745242116" + "x": "16831552317401615597425478591189746105208803794982249767480834126495255577813", + "y": "27433459228660556824873024450011935106969276873668905825893392034776015366251" } ], "shifted": null @@ -380,8 +440,8 @@ { "unshifted": [ { - "x": "10420073920374347839431118128426996495869125267986160092586222285484288288658", - "y": "25325690471240418651410230120018573662175773565273087485153329058971142754891" + "x": "21929088669959974085508443703241713635569150357267277470338498888088258794005", + "y": "4777731708882135459414548776995593449279176542048253822947812303866514258286" } ], "shifted": null @@ -389,8 +449,8 @@ { "unshifted": [ { - "x": "24620954147249906012917432693088389116084496387535426937178842631406091115502", - "y": "11155582652209346076263785849940885945729282522255489020093612566069838893780" + "x": "22153334492442604519549381298171284336824568443893278522746580758682054062055", + "y": "28093204732158178168022317115265144032442917649395153204329716743993428376589" } ], "shifted": null @@ -398,8 +458,8 @@ { "unshifted": [ { - "x": "17904918018814743380590016387581743358943618636118409543516559286811512096775", - "y": "10025707689940467690825331600762375199310559368275892765085215622727872567055" + "x": "25829024159590199026945236380949108953760470363251286591469499395547064635030", + "y": "5686295917491656884871290293310306287847821329857830099354849241704098282794" } ], "shifted": null @@ -407,8 +467,8 @@ { "unshifted": [ { - "x": "27917318206268406763809683429126691983413050720967139880706344988504463137207", - "y": "6849875308433828577926250343731932303650620156640881173113932637504510884108" + "x": "5172326612620111066596222440010075983968019914068357669174022124413716354527", + "y": "13524044551866970782172466989233190805060205221412143629026791582962031535516" } ], "shifted": null @@ -416,8 +476,8 @@ { "unshifted": [ { - "x": "13248707500698262655178357883510197387350675267119724555765123564569192140193", - "y": "20656059333545396354423850646702432049727115024896225122943362277715697946422" + "x": "27613126824213957172671503416561162823208813960420169681543252991311896255571", + "y": "26627835619281186262077066043685739030224985288908123974772080081328551556344" } ], "shifted": null @@ -425,8 +485,8 @@ { "unshifted": [ { - "x": "3193722797246961528467985187458094965081742971691336805347685128982059643212", - "y": "20004244311647839466260570779624242301746217475373023748566588453470291141699" + "x": "13060297186041780339979020052593478424298684383351529424867055130001170790013", + "y": "8868145033229076688829193189237344243102384739708121758396164036641391459735" } ], "shifted": null @@ -434,8 +494,8 @@ { "unshifted": [ { - "x": "21368868918107605530895810758222552021657342644662619332144318831669736538371", - "y": "11930647724953385482364371941455641720053706498134962124435289084134976099316" + "x": "4614904183320023229247782190493622335981951628433169546621511480227633044369", + "y": "18938732178329036441917057256236781984888602404862696571519987767379921670592" } ], "shifted": null @@ -443,8 +503,8 @@ { "unshifted": [ { - "x": "4817890692203475457804247124110138814404688173657953334796853485889910047660", - "y": "10179982826813182235847185450867248675081612714048814891139635372666325677829" + "x": "10293397417492836074720920635017394488920088179151684210537772439040196384970", + "y": "14047602945002805448395213221122072975216505043263716771470957008437559800641" } ], "shifted": null @@ -452,8 +512,8 @@ { "unshifted": [ { - "x": "5757284003245788174536467954388975109848602379593001060172413725921358585068", - "y": "26947575012508696814262938903616317137442612861039926289821545928758084107850" + "x": "16024882234255838927826334837195651052153488500073918112950162061034699108414", + "y": "3030529933593209204702010191013628500332772166450574161444601374023469860610" } ], "shifted": null @@ -462,8 +522,8 @@ "z_comm": { "unshifted": [ { - "x": "27285601422906567298538009214194058556126914841904878122318874164221841507749", - "y": "14349788589232709002093153997774141127635301911135633000878968064143276099855" + "x": "5547352251596161920214942394907698665400106285217635163449958947034037368238", + "y": "18553274959867830657681984173309694874401768236473221045991225344823410772036" } ], "shifted": null @@ -471,37 +531,37 @@ "t_comm": { "unshifted": [ { - "x": "8805277882655656467193175196361174093678700754063151818998802085916756673005", - "y": "300172395869950793410412617727709273378504150931038332449292302014952891971" + "x": "7993188324869153183594168112527739844889410088499661819775294627686099796520", + "y": "16123905790044065919925604141547195113762056888904195158043914155001383084418" }, { - "x": "2076004840779126951786499827974649110610572112265923316638680432143775592975", - "y": "16768676648464829762075712760524762824966785005507529636529598830790061559233" + "x": "2299744548254158761442385359728073239768200658332559572716009806074498307109", + "y": "23591468709464412112182346181055065457737619368651946791490357432027400753989" }, { - "x": "8823432075147848236450174905896661973126263906066363390749554493122393080991", - "y": "19704912285258893829352227998466358773155096997296884533033337027062868803128" + "x": "5722286270359766587171714934624156804462792637271582224929996201750684972575", + "y": "13799145093900302433910040731490245836303278361838365123772607015060903381672" }, { - "x": "9135022274669669959755391037633061819923121234372959775061383665206736139835", - "y": "13520897393253151148659657723887550526805053196379606360279109502975032225192" + "x": "4375565337655738803748117702273334826523357876571305195047338477338956069341", + "y": "6707714141149503836374994820516266694589240816467772816312752789391061162889" }, { - "x": "24117808017215309244484848073037613298274530757291661076918734827000987150957", - "y": "24591963585738099353826441712028601704692832722331344814465309537984428631549" + "x": "20709455550993955243686605265474039656049186630223318233710463022638141875886", + "y": "607328732290887459306439718028091235798467750563101999532696033028977090067" }, { - "x": "3160969236717355551588163932060691997342246968873193306316416940325204366347", - "y": "6005427610245917597982544313151383928426882778548046653669900797227393977869" + "x": "5107239719630018103426988720326342612046041793728116962759729013480817724174", + "y": "13813912715176564411872308681781072374737819980001727346627184628967703020376" }, { - "x": "22762217490338737643112275435474984909796013763805252909913842877673764290840", - "y": "1342193049382370281865428682864017076474271523734151287834754946791340726459" + "x": "21708500263784719610775021094641531346593968037328216875365265388493119315179", + "y": "14237292939959023011035187838027518760539907998922394467664833882476558935999" } ], "shifted": null }, "lookup": null }, - "ft_eval1": "0e3d4f149cee38f972072b75627974fc4b9e497267fe92d1f1cd88bdabde722e" + "ft_eval1": "58e73073fe8e4832c20b7467c5e63338385949ab8b899761b7a5dc636bc9aa32" } \ No newline at end of file diff --git a/verifier_circuit/test/verifier_index.json b/verifier_circuit/test/verifier_index.json index 1a5032a2..b615bda3 100644 --- a/verifier_circuit/test/verifier_index.json +++ b/verifier_circuit/test/verifier_index.json @@ -226,8 +226,8 @@ "complete_add_comm": { "unshifted": [ { - "x": "0", - "y": "1" + "x": "15427374333697483577096356340297985232933727912694971579453397496858943128065", + "y": "2509910240642018366461735648111399592717548684137438645981418079872989533888" } ], "shifted": null @@ -235,8 +235,8 @@ "mul_comm": { "unshifted": [ { - "x": "0", - "y": "1" + "x": "15427374333697483577096356340297985232933727912694971579453397496858943128065", + "y": "2509910240642018366461735648111399592717548684137438645981418079872989533888" } ], "shifted": null @@ -244,8 +244,8 @@ "emul_comm": { "unshifted": [ { - "x": "0", - "y": "1" + "x": "15427374333697483577096356340297985232933727912694971579453397496858943128065", + "y": "2509910240642018366461735648111399592717548684137438645981418079872989533888" } ], "shifted": null @@ -253,8 +253,8 @@ "endomul_scalar_comm": { "unshifted": [ { - "x": "0", - "y": "1" + "x": "15427374333697483577096356340297985232933727912694971579453397496858943128065", + "y": "2509910240642018366461735648111399592717548684137438645981418079872989533888" } ], "shifted": null @@ -268,7 +268,7 @@ "847440624c26426e8480a31f28991cbe3647df8e70f027477aaec6ec68afb300", "a17401b24a567ee6bc8d8918b675061a6f13874aa7505d93edc06f53a41c3800" ], - "zkpm": [ + "permutation_vanishing_polynomial_m": [ "5aa64070cfa6b53073a54eaa71fdd846db7cec674172ccbee0f50ec031c1841e", "5b280603c585ca9e67cae70b868be9e1bfbbcac31b487b553d22c6f4ea31dc37", "98ad9f969f783138e1fb5c6010da258f82017d1e624fc62521dff2640d630307", @@ -1255,6 +1255,3466 @@ "Mul", "Add", "Mul", + { + "Cell": { + "col": { + "Index": "VarBaseMul" + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 5 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 6 + }, + "row": "Next" + } + }, + { + "Cell": { + "col": { + "Witness": 5 + }, + "row": "Next" + } + }, + { + "Cell": { + "col": { + "Witness": 4 + }, + "row": "Next" + } + }, + { + "Cell": { + "col": { + "Witness": 3 + }, + "row": "Next" + } + }, + { + "Cell": { + "col": { + "Witness": 2 + }, + "row": "Next" + } + }, + { + "Cell": { + "col": { + "Witness": 4 + }, + "row": "Curr" + } + }, + "Dup", + "Add", + "Add", + "Dup", + "Add", + "Add", + "Dup", + "Add", + "Add", + "Dup", + "Add", + "Add", + "Dup", + "Add", + "Add", + "Sub", + "Alpha", + { + "Pow": 1 + }, + { + "Cell": { + "col": { + "Witness": 2 + }, + "row": "Next" + } + }, + "Dup", + "Mul", + { + "Cell": { + "col": { + "Witness": 2 + }, + "row": "Next" + } + }, + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 2 + }, + { + "Cell": { + "col": { + "Witness": 2 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Next" + } + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 3 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 2 + }, + "row": "Next" + } + }, + "Dup", + "Add", + { + "Literal": "0100000000000000000000000000000000000000000000000000000000000000" + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 1 + }, + "row": "Curr" + } + }, + "Mul", + "Sub", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 3 + }, + { + "Cell": { + "col": { + "Witness": 3 + }, + "row": "Curr" + } + }, + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 2 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Next" + } + }, + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Next" + } + }, + "Mul", + "Store", + { + "Cell": { + "col": { + "Witness": 2 + }, + "row": "Curr" + } + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Sub", + "Sub", + "Store", + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Next" + } + }, + "Mul", + "Sub", + "Store", + { + "Load": 17 + }, + "Mul", + { + "Load": 16 + }, + { + "Load": 16 + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Sub", + { + "Load": 15 + }, + "Add", + "Mul", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 4 + }, + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 3 + }, + "row": "Curr" + } + }, + "Add", + { + "Load": 16 + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 2 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + "Sub", + { + "Load": 17 + }, + "Mul", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 5 + }, + { + "Cell": { + "col": { + "Witness": 3 + }, + "row": "Next" + } + }, + "Dup", + "Mul", + { + "Cell": { + "col": { + "Witness": 3 + }, + "row": "Next" + } + }, + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 6 + }, + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Next" + } + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 3 + }, + "row": "Next" + } + }, + "Dup", + "Add", + { + "Literal": "0100000000000000000000000000000000000000000000000000000000000000" + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 1 + }, + "row": "Curr" + } + }, + "Mul", + "Sub", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 7 + }, + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Next" + } + }, + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Next" + } + }, + "Mul", + "Store", + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Sub", + "Sub", + "Store", + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Next" + } + }, + "Mul", + "Sub", + "Store", + { + "Load": 20 + }, + "Mul", + { + "Load": 19 + }, + { + "Load": 19 + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Sub", + { + "Load": 18 + }, + "Add", + "Mul", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 8 + }, + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + "Add", + { + "Load": 19 + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + "Sub", + { + "Load": 20 + }, + "Mul", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 9 + }, + { + "Cell": { + "col": { + "Witness": 4 + }, + "row": "Next" + } + }, + "Dup", + "Mul", + { + "Cell": { + "col": { + "Witness": 4 + }, + "row": "Next" + } + }, + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 10 + }, + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Next" + } + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 4 + }, + "row": "Next" + } + }, + "Dup", + "Add", + { + "Literal": "0100000000000000000000000000000000000000000000000000000000000000" + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 1 + }, + "row": "Curr" + } + }, + "Mul", + "Sub", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 11 + }, + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Curr" + } + }, + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Next" + } + }, + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Next" + } + }, + "Mul", + "Store", + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Sub", + "Sub", + "Store", + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Next" + } + }, + "Mul", + "Sub", + "Store", + { + "Load": 23 + }, + "Mul", + { + "Load": 22 + }, + { + "Load": 22 + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Sub", + { + "Load": 21 + }, + "Add", + "Mul", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 12 + }, + { + "Cell": { + "col": { + "Witness": 12 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Curr" + } + }, + "Add", + { + "Load": 22 + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + "Sub", + { + "Load": 23 + }, + "Mul", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 13 + }, + { + "Cell": { + "col": { + "Witness": 5 + }, + "row": "Next" + } + }, + "Dup", + "Mul", + { + "Cell": { + "col": { + "Witness": 5 + }, + "row": "Next" + } + }, + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 14 + }, + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Next" + } + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 12 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 5 + }, + "row": "Next" + } + }, + "Dup", + "Add", + { + "Literal": "0100000000000000000000000000000000000000000000000000000000000000" + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 1 + }, + "row": "Curr" + } + }, + "Mul", + "Sub", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 15 + }, + { + "Cell": { + "col": { + "Witness": 12 + }, + "row": "Curr" + } + }, + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Next" + } + }, + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Next" + } + }, + "Mul", + "Store", + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Sub", + "Sub", + "Store", + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Next" + } + }, + "Mul", + "Sub", + "Store", + { + "Load": 26 + }, + "Mul", + { + "Load": 25 + }, + { + "Load": 25 + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Sub", + { + "Load": 24 + }, + "Add", + "Mul", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 16 + }, + { + "Cell": { + "col": { + "Witness": 14 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 12 + }, + "row": "Curr" + } + }, + "Add", + { + "Load": 25 + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + "Sub", + { + "Load": 26 + }, + "Mul", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 17 + }, + { + "Cell": { + "col": { + "Witness": 6 + }, + "row": "Next" + } + }, + "Dup", + "Mul", + { + "Cell": { + "col": { + "Witness": 6 + }, + "row": "Next" + } + }, + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 18 + }, + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Next" + } + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 14 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 6 + }, + "row": "Next" + } + }, + "Dup", + "Add", + { + "Literal": "0100000000000000000000000000000000000000000000000000000000000000" + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 1 + }, + "row": "Curr" + } + }, + "Mul", + "Sub", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 19 + }, + { + "Cell": { + "col": { + "Witness": 14 + }, + "row": "Curr" + } + }, + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Next" + } + }, + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Next" + } + }, + "Mul", + "Store", + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Sub", + "Sub", + "Store", + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Next" + } + }, + "Mul", + "Sub", + "Store", + { + "Load": 29 + }, + "Mul", + { + "Load": 28 + }, + { + "Load": 28 + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Next" + } + }, + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Sub", + { + "Load": 27 + }, + "Add", + "Mul", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 20 + }, + { + "Cell": { + "col": { + "Witness": 1 + }, + "row": "Next" + } + }, + { + "Cell": { + "col": { + "Witness": 14 + }, + "row": "Curr" + } + }, + "Add", + { + "Load": 28 + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Next" + } + }, + "Sub", + { + "Load": 29 + }, + "Mul", + "Sub", + "Mul", + "Add", + "Mul", + "Add", + { + "Cell": { + "col": { + "Index": "CompleteAdd" + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 2 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Sub", + "Store", + "Mul", + { + "Literal": "0100000000000000000000000000000000000000000000000000000000000000" + }, + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + "Sub", + "Sub", + "Alpha", + { + "Pow": 1 + }, + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + { + "Load": 30 + }, + "Mul", + "Mul", + "Add", + "Alpha", + { + "Pow": 2 + }, + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 1 + }, + "row": "Curr" + } + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Mul", + "Store", + "Dup", + "Add", + "Sub", + { + "Load": 31 + }, + "Sub", + "Mul", + { + "Literal": "0100000000000000000000000000000000000000000000000000000000000000" + }, + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + "Sub", + { + "Load": 30 + }, + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 3 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 1 + }, + "row": "Curr" + } + }, + "Sub", + "Store", + "Sub", + "Mul", + "Add", + "Mul", + "Add", + "Alpha", + { + "Pow": 3 + }, + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 2 + }, + "row": "Curr" + } + }, + "Add", + { + "Cell": { + "col": { + "Witness": 4 + }, + "row": "Curr" + } + }, + "Add", + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + "Mul", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 4 + }, + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 4 + }, + "row": "Curr" + } + }, + "Sub", + "Mul", + { + "Cell": { + "col": { + "Witness": 1 + }, + "row": "Curr" + } + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 5 + }, + "row": "Curr" + } + }, + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 5 + }, + { + "Load": 32 + }, + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 6 + }, + "row": "Curr" + } + }, + "Sub", + "Mul", + "Mul", + "Add", + "Alpha", + { + "Pow": 6 + }, + { + "Load": 32 + }, + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 6 + }, + "row": "Curr" + } + }, + "Sub", + "Mul", + "Add", + "Mul", + "Add", + { + "Cell": { + "col": { + "Index": "EndoMul" + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + "Dup", + "Mul", + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + "Sub", + "Alpha", + { + "Pow": 1 + }, + { + "Cell": { + "col": { + "Witness": 12 + }, + "row": "Curr" + } + }, + "Dup", + "Mul", + { + "Cell": { + "col": { + "Witness": 12 + }, + "row": "Curr" + } + }, + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 2 + }, + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + "Dup", + "Mul", + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 3 + }, + { + "Cell": { + "col": { + "Witness": 14 + }, + "row": "Curr" + } + }, + "Dup", + "Mul", + { + "Cell": { + "col": { + "Witness": 14 + }, + "row": "Curr" + } + }, + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 4 + }, + { + "Literal": "0100000000000000000000000000000000000000000000000000000000000000" + }, + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + "EndoCoefficient", + { + "Literal": "0100000000000000000000000000000000000000000000000000000000000000" + }, + "Sub", + "Mul", + "Add", + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Mul", + "Store", + { + "Cell": { + "col": { + "Witness": 4 + }, + "row": "Curr" + } + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 12 + }, + "row": "Curr" + } + }, + "Dup", + "Add", + { + "Literal": "0100000000000000000000000000000000000000000000000000000000000000" + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 1 + }, + "row": "Curr" + } + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 5 + }, + "row": "Curr" + } + }, + "Sub", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 5 + }, + { + "Cell": { + "col": { + "Witness": 4 + }, + "row": "Curr" + } + }, + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + "Dup", + "Mul", + "Store", + "Sub", + { + "Load": 33 + }, + "Add", + { + "Cell": { + "col": { + "Witness": 4 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + "Sub", + "Store", + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 5 + }, + "row": "Curr" + } + }, + "Add", + "Store", + "Add", + "Mul", + { + "Cell": { + "col": { + "Witness": 5 + }, + "row": "Curr" + } + }, + "Dup", + "Add", + { + "Load": 35 + }, + "Mul", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 6 + }, + { + "Load": 36 + }, + "Dup", + "Mul", + { + "Load": 35 + }, + "Dup", + "Mul", + { + "Load": 34 + }, + { + "Load": 33 + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + "Add", + "Mul", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 7 + }, + { + "Literal": "0100000000000000000000000000000000000000000000000000000000000000" + }, + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + "EndoCoefficient", + { + "Literal": "0100000000000000000000000000000000000000000000000000000000000000" + }, + "Sub", + "Mul", + "Add", + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Mul", + "Store", + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Curr" + } + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 14 + }, + "row": "Curr" + } + }, + "Dup", + "Add", + { + "Literal": "0100000000000000000000000000000000000000000000000000000000000000" + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 1 + }, + "row": "Curr" + } + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + "Sub", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 8 + }, + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Curr" + } + }, + "Dup", + "Mul", + "Store", + "Sub", + { + "Load": 37 + }, + "Add", + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 4 + }, + "row": "Next" + } + }, + "Sub", + "Store", + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Curr" + } + }, + "Mul", + { + "Cell": { + "col": { + "Witness": 5 + }, + "row": "Next" + } + }, + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + "Add", + "Store", + "Add", + "Mul", + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + "Dup", + "Add", + { + "Load": 39 + }, + "Mul", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 9 + }, + { + "Load": 40 + }, + "Dup", + "Mul", + { + "Load": 39 + }, + "Dup", + "Mul", + { + "Load": 38 + }, + { + "Load": 37 + }, + "Sub", + { + "Cell": { + "col": { + "Witness": 4 + }, + "row": "Next" + } + }, + "Add", + "Mul", + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 10 + }, + { + "Cell": { + "col": { + "Witness": 6 + }, + "row": "Curr" + } + }, + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + "Add", + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 12 + }, + "row": "Curr" + } + }, + "Add", + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + "Add", + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 14 + }, + "row": "Curr" + } + }, + "Add", + { + "Cell": { + "col": { + "Witness": 6 + }, + "row": "Next" + } + }, + "Sub", + "Mul", + "Add", + "Mul", + "Add", + { + "Cell": { + "col": { + "Index": "EndoMulScalar" + }, + "row": "Curr" + } + }, + { + "Cell": { + "col": { + "Witness": 0 + }, + "row": "Curr" + } + }, + "Dup", + "Add", + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 6 + }, + "row": "Curr" + } + }, + "Add", + "Dup", + "Add", + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + "Add", + "Dup", + "Add", + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + "Add", + "Dup", + "Add", + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + "Add", + "Dup", + "Add", + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Curr" + } + }, + "Add", + "Dup", + "Add", + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + "Add", + "Dup", + "Add", + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 12 + }, + "row": "Curr" + } + }, + "Add", + "Dup", + "Add", + "Dup", + "Add", + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + "Add", + { + "Cell": { + "col": { + "Witness": 1 + }, + "row": "Curr" + } + }, + "Sub", + "Alpha", + { + "Pow": 1 + }, + { + "Cell": { + "col": { + "Witness": 2 + }, + "row": "Curr" + } + }, + "Dup", + "Add", + { + "Literal": "010000000bf96cd94938dcadfe32c26055555555555555555555555555555515" + }, + { + "Cell": { + "col": { + "Witness": 6 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "feffff7f907523c66e54ca047e4c231100000000000000000000000000000020" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 6 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "02000080857cb6ec241cee567f1961b0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 6 + }, + "row": "Curr" + } + }, + "Mul", + "Store", + "Add", + "Dup", + "Add", + { + "Literal": "010000000bf96cd94938dcadfe32c26055555555555555555555555555555515" + }, + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "feffff7f907523c66e54ca047e4c231100000000000000000000000000000020" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "02000080857cb6ec241cee567f1961b0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + "Mul", + "Store", + "Add", + "Dup", + "Add", + { + "Literal": "010000000bf96cd94938dcadfe32c26055555555555555555555555555555515" + }, + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "feffff7f907523c66e54ca047e4c231100000000000000000000000000000020" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "02000080857cb6ec241cee567f1961b0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + "Mul", + "Store", + "Add", + "Dup", + "Add", + { + "Literal": "010000000bf96cd94938dcadfe32c26055555555555555555555555555555515" + }, + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "feffff7f907523c66e54ca047e4c231100000000000000000000000000000020" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "02000080857cb6ec241cee567f1961b0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + "Mul", + "Store", + "Add", + "Dup", + "Add", + { + "Literal": "010000000bf96cd94938dcadfe32c26055555555555555555555555555555515" + }, + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "feffff7f907523c66e54ca047e4c231100000000000000000000000000000020" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "02000080857cb6ec241cee567f1961b0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Curr" + } + }, + "Mul", + "Store", + "Add", + "Dup", + "Add", + { + "Literal": "010000000bf96cd94938dcadfe32c26055555555555555555555555555555515" + }, + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "feffff7f907523c66e54ca047e4c231100000000000000000000000000000020" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "02000080857cb6ec241cee567f1961b0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + "Mul", + "Store", + "Add", + "Dup", + "Add", + { + "Literal": "010000000bf96cd94938dcadfe32c26055555555555555555555555555555515" + }, + { + "Cell": { + "col": { + "Witness": 12 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "feffff7f907523c66e54ca047e4c231100000000000000000000000000000020" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 12 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "02000080857cb6ec241cee567f1961b0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 12 + }, + "row": "Curr" + } + }, + "Mul", + "Store", + "Add", + "Dup", + "Add", + { + "Literal": "010000000bf96cd94938dcadfe32c26055555555555555555555555555555515" + }, + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "feffff7f907523c66e54ca047e4c231100000000000000000000000000000020" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "02000080857cb6ec241cee567f1961b0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + "Mul", + "Store", + "Add", + { + "Cell": { + "col": { + "Witness": 4 + }, + "row": "Curr" + } + }, + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 2 + }, + { + "Cell": { + "col": { + "Witness": 3 + }, + "row": "Curr" + } + }, + "Dup", + "Add", + { + "Load": 41 + }, + { + "Literal": "0000000021eb468cdda89409fc98462200000000000000000000000000000040" + }, + { + "Cell": { + "col": { + "Witness": 6 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0300000000000000000000000000000000000000000000000000000000000000" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 6 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0000000021eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + "Add", + "Add", + "Dup", + "Add", + { + "Load": 42 + }, + { + "Literal": "0000000021eb468cdda89409fc98462200000000000000000000000000000040" + }, + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0300000000000000000000000000000000000000000000000000000000000000" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0000000021eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + "Add", + "Add", + "Dup", + "Add", + { + "Load": 43 + }, + { + "Literal": "0000000021eb468cdda89409fc98462200000000000000000000000000000040" + }, + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0300000000000000000000000000000000000000000000000000000000000000" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0000000021eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + "Add", + "Add", + "Dup", + "Add", + { + "Load": 44 + }, + { + "Literal": "0000000021eb468cdda89409fc98462200000000000000000000000000000040" + }, + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0300000000000000000000000000000000000000000000000000000000000000" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0000000021eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + "Add", + "Add", + "Dup", + "Add", + { + "Load": 45 + }, + { + "Literal": "0000000021eb468cdda89409fc98462200000000000000000000000000000040" + }, + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0300000000000000000000000000000000000000000000000000000000000000" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0000000021eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + "Add", + "Add", + "Dup", + "Add", + { + "Load": 46 + }, + { + "Literal": "0000000021eb468cdda89409fc98462200000000000000000000000000000040" + }, + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0300000000000000000000000000000000000000000000000000000000000000" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0000000021eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + "Add", + "Add", + "Dup", + "Add", + { + "Load": 47 + }, + { + "Literal": "0000000021eb468cdda89409fc98462200000000000000000000000000000040" + }, + { + "Cell": { + "col": { + "Witness": 12 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0300000000000000000000000000000000000000000000000000000000000000" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 12 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0000000021eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + "Add", + "Add", + "Dup", + "Add", + { + "Load": 48 + }, + { + "Literal": "0000000021eb468cdda89409fc98462200000000000000000000000000000040" + }, + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0300000000000000000000000000000000000000000000000000000000000000" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0000000021eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + "Add", + "Add", + { + "Cell": { + "col": { + "Witness": 5 + }, + "row": "Curr" + } + }, + "Sub", + "Mul", + "Add", + "Alpha", + { + "Pow": 3 + }, + { + "Cell": { + "col": { + "Witness": 6 + }, + "row": "Curr" + } + }, + { + "Literal": "fbffffff20eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 6 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0b00000000000000000000000000000000000000000000000000000000000000" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 6 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "fbffffff20eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 6 + }, + "row": "Curr" + } + }, + "Mul", + "Mul", + "Add", + "Alpha", + { + "Pow": 4 + }, + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + { + "Literal": "fbffffff20eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0b00000000000000000000000000000000000000000000000000000000000000" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "fbffffff20eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 7 + }, + "row": "Curr" + } + }, + "Mul", + "Mul", + "Add", + "Alpha", + { + "Pow": 5 + }, + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + { + "Literal": "fbffffff20eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0b00000000000000000000000000000000000000000000000000000000000000" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "fbffffff20eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 8 + }, + "row": "Curr" + } + }, + "Mul", + "Mul", + "Add", + "Alpha", + { + "Pow": 6 + }, + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + { + "Literal": "fbffffff20eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0b00000000000000000000000000000000000000000000000000000000000000" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "fbffffff20eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 9 + }, + "row": "Curr" + } + }, + "Mul", + "Mul", + "Add", + "Alpha", + { + "Pow": 7 + }, + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Curr" + } + }, + { + "Literal": "fbffffff20eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0b00000000000000000000000000000000000000000000000000000000000000" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "fbffffff20eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 10 + }, + "row": "Curr" + } + }, + "Mul", + "Mul", + "Add", + "Alpha", + { + "Pow": 8 + }, + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + { + "Literal": "fbffffff20eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0b00000000000000000000000000000000000000000000000000000000000000" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "fbffffff20eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 11 + }, + "row": "Curr" + } + }, + "Mul", + "Mul", + "Add", + "Alpha", + { + "Pow": 9 + }, + { + "Cell": { + "col": { + "Witness": 12 + }, + "row": "Curr" + } + }, + { + "Literal": "fbffffff20eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 12 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0b00000000000000000000000000000000000000000000000000000000000000" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 12 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "fbffffff20eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 12 + }, + "row": "Curr" + } + }, + "Mul", + "Mul", + "Add", + "Alpha", + { + "Pow": 10 + }, + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + { + "Literal": "fbffffff20eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "0b00000000000000000000000000000000000000000000000000000000000000" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + "Mul", + { + "Literal": "fbffffff20eb468cdda89409fc98462200000000000000000000000000000040" + }, + "Add", + { + "Cell": { + "col": { + "Witness": 13 + }, + "row": "Curr" + } + }, + "Mul", + "Mul", + "Add", + "Mul", + "Add", { "Cell": { "col": { diff --git a/verifier_circuit_tests/Cargo.lock b/verifier_circuit_tests/Cargo.lock index 017a524a..497b3810 100644 --- a/verifier_circuit_tests/Cargo.lock +++ b/verifier_circuit_tests/Cargo.lock @@ -332,7 +332,7 @@ dependencies = [ [[package]] name = "groupmap" version = "0.1.0" -source = "git+https://github.com/o1-labs/proof-systems.git#17041948eb2742244464d6749560a304213f4198" +source = "git+https://github.com/o1-labs/proof-systems.git?branch=develop#b62865a375ef9c962cbbcdcdf6a9e49d82f7fe4e" dependencies = [ "ark-ec", "ark-ff", @@ -378,7 +378,7 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "internal-tracing" version = "0.1.0" -source = "git+https://github.com/o1-labs/proof-systems.git#17041948eb2742244464d6749560a304213f4198" +source = "git+https://github.com/o1-labs/proof-systems.git?branch=develop#b62865a375ef9c962cbbcdcdf6a9e49d82f7fe4e" [[package]] name = "itertools" @@ -398,7 +398,7 @@ checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "kimchi" version = "0.1.0" -source = "git+https://github.com/o1-labs/proof-systems.git#17041948eb2742244464d6749560a304213f4198" +source = "git+https://github.com/o1-labs/proof-systems.git?branch=develop#b62865a375ef9c962cbbcdcdf6a9e49d82f7fe4e" dependencies = [ "ark-ec", "ark-ff", @@ -455,7 +455,7 @@ dependencies = [ [[package]] name = "mina-curves" version = "0.1.0" -source = "git+https://github.com/o1-labs/proof-systems.git#17041948eb2742244464d6749560a304213f4198" +source = "git+https://github.com/o1-labs/proof-systems.git?branch=develop#b62865a375ef9c962cbbcdcdf6a9e49d82f7fe4e" dependencies = [ "ark-ec", "ark-ff", @@ -464,7 +464,7 @@ dependencies = [ [[package]] name = "mina-poseidon" version = "0.1.0" -source = "git+https://github.com/o1-labs/proof-systems.git#17041948eb2742244464d6749560a304213f4198" +source = "git+https://github.com/o1-labs/proof-systems.git?branch=develop#b62865a375ef9c962cbbcdcdf6a9e49d82f7fe4e" dependencies = [ "ark-ec", "ark-ff", @@ -534,7 +534,7 @@ dependencies = [ [[package]] name = "o1-utils" version = "0.1.0" -source = "git+https://github.com/o1-labs/proof-systems.git#17041948eb2742244464d6749560a304213f4198" +source = "git+https://github.com/o1-labs/proof-systems.git?branch=develop#b62865a375ef9c962cbbcdcdf6a9e49d82f7fe4e" dependencies = [ "ark-ec", "ark-ff", @@ -580,7 +580,7 @@ dependencies = [ [[package]] name = "poly-commitment" version = "0.1.0" -source = "git+https://github.com/o1-labs/proof-systems.git#17041948eb2742244464d6749560a304213f4198" +source = "git+https://github.com/o1-labs/proof-systems.git?branch=develop#b62865a375ef9c962cbbcdcdf6a9e49d82f7fe4e" dependencies = [ "ark-ec", "ark-ff", @@ -885,7 +885,7 @@ dependencies = [ [[package]] name = "turshi" version = "0.1.0" -source = "git+https://github.com/o1-labs/proof-systems.git#17041948eb2742244464d6749560a304213f4198" +source = "git+https://github.com/o1-labs/proof-systems.git?branch=develop#b62865a375ef9c962cbbcdcdf6a9e49d82f7fe4e" dependencies = [ "ark-ff", "hex", diff --git a/verifier_circuit_tests/Cargo.toml b/verifier_circuit_tests/Cargo.toml index a19d5f2e..8646bc41 100644 --- a/verifier_circuit_tests/Cargo.toml +++ b/verifier_circuit_tests/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -kimchi = {git = "https://github.com/o1-labs/proof-systems.git"} +kimchi = { git = "https://github.com/o1-labs/proof-systems.git", branch = "develop" } num-traits = "0.2" ark-ff = { version = "0.3.0", features = [ "parallel", "asm" ] } ark-ec = { version = "0.3.0", features = [ "parallel" ] } diff --git a/verifier_circuit_tests/src/lib.rs b/verifier_circuit_tests/src/lib.rs index 853974a5..da9a5c0b 100644 --- a/verifier_circuit_tests/src/lib.rs +++ b/verifier_circuit_tests/src/lib.rs @@ -1,6 +1,6 @@ use ark_ec::AffineCurve; use ark_ff::{One, PrimeField}; -use ark_poly::domain::EvaluationDomain; +use ark_poly::{domain::EvaluationDomain, UVPolynomial}; use kimchi::{ circuits::expr::PolishToken, curve::KimchiCurve, @@ -11,10 +11,10 @@ use kimchi::{ sponge::{DefaultFqSponge, DefaultFrSponge}, }, o1_utils::FieldHelpers, - poly_commitment::PolyComm, + poly_commitment::{evaluation_proof::OpeningProof, OpenProof, PolyComm, SRS}, proof::{ - LookupCommitments, LookupEvaluations, PointEvaluations, ProofEvaluations, - ProverCommitments, ProverProof, RecursionChallenge, + LookupCommitments, PointEvaluations, ProofEvaluations, ProverCommitments, ProverProof, + RecursionChallenge, }, verifier_index::VerifierIndex, }; @@ -43,57 +43,143 @@ pub type ScalarSponge = DefaultFrSponge; /// Enforce the length of evaluations inside [`Proof`]. /// Atm, the length of evaluations(both `zeta` and `zeta_omega`) SHOULD be 1. /// The length value is prone to future change. -pub fn check_proof_evals_len(proof: &ProverProof) -> Result<(), VerifyError> +pub fn check_proof_evals_len( + proof: &ProverProof, + expected_size: usize, +) -> Result<(), VerifyError> where G: KimchiCurve, G::BaseField: PrimeField, { let ProofEvaluations { + public, w, z, s, coefficients, - lookup, generic_selector, poseidon_selector, + complete_add_selector, + mul_selector, + emul_selector, + endomul_scalar_selector, + range_check0_selector, + range_check1_selector, + foreign_field_add_selector, + foreign_field_mul_selector, + xor_selector, + rot_selector, + lookup_aggregation, + lookup_table, + lookup_sorted, + runtime_lookup_table, + runtime_lookup_table_selector, + xor_lookup_selector, + lookup_gate_lookup_selector, + range_check_lookup_selector, + foreign_field_mul_lookup_selector, } = &proof.evals; - let check_eval_len = |eval: &PointEvaluations>| -> Result<(), VerifyError> { - if eval.zeta.len().is_one() && eval.zeta_omega.len().is_one() { - Ok(()) - } else { - Err(VerifyError::IncorrectEvaluationsLength) - } - }; + let check_eval_len = + |eval: &PointEvaluations>, str: &'static str| -> Result<(), VerifyError> { + if eval.zeta.len() != expected_size { + Err(VerifyError::IncorrectEvaluationsLength( + expected_size, + eval.zeta.len(), + str, + )) + } else if eval.zeta_omega.len() != expected_size { + Err(VerifyError::IncorrectEvaluationsLength( + expected_size, + eval.zeta_omega.len(), + str, + )) + } else { + Ok(()) + } + }; + + if let Some(public) = public { + check_eval_len(public, "public input")?; + } for w_i in w { - check_eval_len(w_i)?; + check_eval_len(w_i, "witness")?; } - check_eval_len(z)?; + check_eval_len(z, "permutation accumulator")?; for s_i in s { - check_eval_len(s_i)?; + check_eval_len(s_i, "permutation shifts")?; } for coeff in coefficients { - check_eval_len(coeff)?; + check_eval_len(coeff, "coefficients")?; } - if let Some(LookupEvaluations { - sorted, - aggreg, - table, - runtime, - }) = lookup - { - for sorted_i in sorted { - check_eval_len(sorted_i)?; - } - check_eval_len(aggreg)?; - check_eval_len(table)?; - if let Some(runtime) = &runtime { - check_eval_len(runtime)?; - } + + // Lookup evaluations + for sorted in lookup_sorted.iter().flatten() { + check_eval_len(sorted, "lookup sorted")? + } + + if let Some(lookup_aggregation) = lookup_aggregation { + check_eval_len(lookup_aggregation, "lookup aggregation")?; + } + if let Some(lookup_table) = lookup_table { + check_eval_len(lookup_table, "lookup table")?; + } + if let Some(runtime_lookup_table) = runtime_lookup_table { + check_eval_len(runtime_lookup_table, "runtime lookup table")?; + } + + check_eval_len(generic_selector, "generic selector")?; + check_eval_len(poseidon_selector, "poseidon selector")?; + check_eval_len(complete_add_selector, "complete add selector")?; + check_eval_len(mul_selector, "mul selector")?; + check_eval_len(emul_selector, "endomul selector")?; + check_eval_len(endomul_scalar_selector, "endomul scalar selector")?; + + // Optional gates + + if let Some(range_check0_selector) = range_check0_selector { + check_eval_len(range_check0_selector, "range check 0 selector")? + } + if let Some(range_check1_selector) = range_check1_selector { + check_eval_len(range_check1_selector, "range check 1 selector")? + } + if let Some(foreign_field_add_selector) = foreign_field_add_selector { + check_eval_len(foreign_field_add_selector, "foreign field add selector")? + } + if let Some(foreign_field_mul_selector) = foreign_field_mul_selector { + check_eval_len(foreign_field_mul_selector, "foreign field mul selector")? + } + if let Some(xor_selector) = xor_selector { + check_eval_len(xor_selector, "xor selector")? + } + if let Some(rot_selector) = rot_selector { + check_eval_len(rot_selector, "rot selector")? + } + + // Lookup selectors + + if let Some(runtime_lookup_table_selector) = runtime_lookup_table_selector { + check_eval_len( + runtime_lookup_table_selector, + "runtime lookup table selector", + )? + } + if let Some(xor_lookup_selector) = xor_lookup_selector { + check_eval_len(xor_lookup_selector, "xor lookup selector")? + } + if let Some(lookup_gate_lookup_selector) = lookup_gate_lookup_selector { + check_eval_len(lookup_gate_lookup_selector, "lookup gate lookup selector")? + } + if let Some(range_check_lookup_selector) = range_check_lookup_selector { + check_eval_len(range_check_lookup_selector, "range check lookup selector")? + } + if let Some(foreign_field_mul_lookup_selector) = foreign_field_mul_lookup_selector { + check_eval_len( + foreign_field_mul_lookup_selector, + "foreign field mul lookup selector", + )? } - check_eval_len(generic_selector)?; - check_eval_len(poseidon_selector)?; Ok(()) } @@ -132,19 +218,30 @@ impl From<&PolyComm> for UncompressedPolyComm { } /// Execute step 1 of partial verification -pub fn to_batch_step1(proof: &ProverProof) -> Result<(), VerifyError> +pub fn to_batch_step1>( + proof: &ProverProof, + verifier_index: &VerifierIndex, +) -> Result<(), VerifyError> where G: KimchiCurve, G::BaseField: PrimeField, { + let chunk_size = { + let d1_size = verifier_index.domain.size(); + if d1_size < verifier_index.max_poly_size { + 1 + } else { + d1_size / verifier_index.max_poly_size + } + }; println!("to_batch(), step 1: Commit to the negated public input polynomial."); - check_proof_evals_len(proof)?; + check_proof_evals_len(proof, chunk_size)?; Ok(()) } /// Execute step 2 of partial verification -pub fn to_batch_step2( - verifier_index: &VerifierIndex, +pub fn to_batch_step2>( + verifier_index: &VerifierIndex, public_input: &[::ScalarField], ) -> Result<(), VerifyError> where @@ -160,8 +257,7 @@ where } let lgr_comm = verifier_index .srs() - .lagrange_bases - .get(&verifier_index.domain.size()) + .get_lagrange_basis(verifier_index.domain.size()) .expect("pre-computed committed lagrange bases not found"); let com: Vec<_> = lgr_comm.iter().take(verifier_index.public).collect(); let elm: Vec<_> = public_input.iter().map(|s| -*s).collect(); @@ -207,14 +303,14 @@ pub struct VerifierIndexTS { //powers_of_alpha: Alphas, shift: Vec, - zkpm: Vec, + permutation_vanishing_polynomial_m: Vec, w: String, endo: String, linear_constant_term: Vec>, } -impl From<&VerifierIndex> for VerifierIndexTS { - fn from(value: &VerifierIndex) -> Self { +impl From<&VerifierIndex>> for VerifierIndexTS { + fn from(value: &VerifierIndex>) -> Self { let VerifierIndex { domain, public, @@ -229,7 +325,7 @@ impl From<&VerifierIndex> for VerifierIndexTS { endomul_scalar_comm, //powers_of_alpha, shift, - zkpm, + permutation_vanishing_polynomial_m, w, endo, linearization, @@ -262,7 +358,9 @@ impl From<&VerifierIndex> for VerifierIndexTS { PolishToken::Add => PolishToken::Add, PolishToken::Mul => PolishToken::Mul, PolishToken::Sub => PolishToken::Sub, - PolishToken::VanishesOnLast4Rows => PolishToken::VanishesOnLast4Rows, + PolishToken::VanishesOnZeroKnowledgeAndPreviousRows => { + PolishToken::VanishesOnZeroKnowledgeAndPreviousRows + } PolishToken::UnnormalizedLagrangeBasis(x) => { PolishToken::UnnormalizedLagrangeBasis(*x) } @@ -293,10 +391,10 @@ impl From<&VerifierIndex> for VerifierIndexTS { endomul_scalar_comm: UncompressedPolyComm::from(endomul_scalar_comm), //powers_of_alpha, shift: shift.iter().map(|e| e.to_hex()).collect::>(), - zkpm: zkpm + permutation_vanishing_polynomial_m: permutation_vanishing_polynomial_m .get() .unwrap() - .coeffs + .coeffs() .iter() .map(|e| e.to_hex()) .collect::>(), @@ -366,8 +464,8 @@ pub struct ProverProofTS { ft_eval1: String, } -impl From<&ProverProof> for ProverProofTS { - fn from(value: &ProverProof) -> Self { +impl From<&ProverProof>> for ProverProofTS { + fn from(value: &ProverProof>) -> Self { let ProverProof { evals, prev_challenges, diff --git a/verifier_circuit_tests/src/main.rs b/verifier_circuit_tests/src/main.rs index e71cac09..c548090b 100644 --- a/verifier_circuit_tests/src/main.rs +++ b/verifier_circuit_tests/src/main.rs @@ -26,7 +26,7 @@ fn main() { // Index let prover_index = - new_index_for_test_with_lookups::(gates, 0, 0, vec![], Some(vec![]), false); + new_index_for_test_with_lookups::(gates, 0, 0, vec![], Some(vec![]), false, None); // Print values for hardcoding in verifier_circuit/ let verifier_index = prover_index.verifier_index(); @@ -86,7 +86,7 @@ fn main() { let public_inputs = vec![]; - to_batch_step1(&proof).unwrap(); + to_batch_step1(&proof, &verifier_index).unwrap(); to_batch_step2(&verifier_index, &public_inputs).unwrap(); }