diff --git a/Cargo.toml b/Cargo.toml index 21b273eaa..6d12d29eb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -95,4 +95,4 @@ debug = true [patch.crates-io] zcash_note_encryption = { git = "https://github.com/QED-it/librustzcash.git", rev = "07c377ddedf71ab7c7a266d284b054a2dafc2ed4" } bridgetree = { git = "https://github.com/zcash/incrementalmerkletree.git", rev = "ea1686e8f8f6c1e41aa97251a7eb4fadfd33df47" } -incrementalmerkletree = { git = "https://github.com/zcash/incrementalmerkletree.git", rev = "ea1686e8f8f6c1e41aa97251a7eb4fadfd33df47" } \ No newline at end of file +incrementalmerkletree = { git = "https://github.com/zcash/incrementalmerkletree.git", rev = "ea1686e8f8f6c1e41aa97251a7eb4fadfd33df47" } diff --git a/src/circuit.rs b/src/circuit.rs index 24f3d2e86..9b2f9b766 100644 --- a/src/circuit.rs +++ b/src/circuit.rs @@ -2,6 +2,7 @@ use core::fmt; +use ff::Field; use group::{Curve, GroupEncoding}; use halo2_proofs::{ circuit::{floor_planner, Layouter, Value}, @@ -20,12 +21,13 @@ use self::{ commit_ivk::{CommitIvkChip, CommitIvkConfig}, gadget::{ add_chip::{AddChip, AddConfig}, - assign_free_advice, + assign_free_advice, assign_is_native_asset, }, note_commit::{NoteCommitChip, NoteCommitConfig}, }; use crate::{ builder::SpendInfo, + circuit::gadget::mux_chip::{MuxChip, MuxConfig}, constants::{ OrchardCommitDomains, OrchardFixedBases, OrchardFixedBasesFull, OrchardHashDomains, MERKLE_DEPTH_ORCHARD, @@ -65,7 +67,7 @@ mod note_commit; mod value_commit_orchard; /// Size of the Orchard circuit. -const K: u32 = 11; +const K: u32 = 12; // Absolute offsets for public inputs. const ANCHOR: usize = 0; @@ -96,6 +98,7 @@ pub struct Config { commit_ivk_config: CommitIvkConfig, old_note_commit_config: NoteCommitConfig, new_note_commit_config: NoteCommitConfig, + mux_config: MuxConfig, } /// The Orchard Action circuit. @@ -220,6 +223,8 @@ impl plonk::Circuit for Circuit { // Constrain v_old = 0 or enable_spends = 1 (https://p.z.cash/ZKS:action-enable-spend). // Constrain v_new = 0 or enable_outputs = 1 (https://p.z.cash/ZKS:action-enable-output). // Constrain split_flag = 1 or nf_old = nf_old_pub + // Constrain is_native_asset to be boolean + // Constraint if is_native_asset = 1 then asset = native_asset else asset != native_asset let q_orchard = meta.selector(); meta.create_gate("Orchard circuit checks", |meta| { let q_orchard = meta.query_selector(q_orchard); @@ -239,8 +244,23 @@ impl plonk::Circuit for Circuit { let nf_old = meta.query_advice(advices[9], Rotation::cur()); let nf_old_pub = meta.query_advice(advices[0], Rotation::next()); + let is_native_asset = meta.query_advice(advices[1], Rotation::next()); + let asset_x = meta.query_advice(advices[2], Rotation::next()); + let asset_y = meta.query_advice(advices[3], Rotation::next()); + let diff_asset_x_inv = meta.query_advice(advices[4], Rotation::next()); + let diff_asset_y_inv = meta.query_advice(advices[5], Rotation::next()); + let one = Expression::Constant(pallas::Base::one()); + let native_asset = AssetBase::native() + .cv_base() + .to_affine() + .coordinates() + .unwrap(); + + let diff_asset_x = asset_x - Expression::Constant(*native_asset.x()); + let diff_asset_y = asset_y - Expression::Constant(*native_asset.y()); + Constraints::with_selector( q_orchard, [ @@ -265,7 +285,30 @@ impl plonk::Circuit for Circuit { ), ( "split_flag = 1 or nf_old = nf_old_pub", - (one - split_flag) * (nf_old - nf_old_pub), + (one.clone() - split_flag) * (nf_old - nf_old_pub), + ), + ( + "bool_check is_native_asset", + bool_check(is_native_asset.clone()), + ), + ( + "(is_native_asset = 1) => (asset_x = native_asset_x)", + is_native_asset.clone() * diff_asset_x.clone(), + ), + ( + "(is_native_asset = 1) => (asset_y = native_asset_y)", + is_native_asset.clone() * diff_asset_y.clone(), + ), + // To prove that `asset` is not equal to `native_asset`, we will prove that at + // least one of `x(asset) - x(native_asset)` or `y(asset) - y(native_asset)` is + // not equal to zero. + // To prove that `x(asset) - x(native_asset)` (resp `y(asset) - y(native_asset)`) + // is not equal to zero, we will prove that it is invertible. + ( + "(is_native_asset = 0) => (asset != native_asset)", + (one.clone() - is_native_asset) + * (diff_asset_x * diff_asset_x_inv - one.clone()) + * (diff_asset_y * diff_asset_y_inv - one), ), ], ) @@ -383,6 +426,8 @@ impl plonk::Circuit for Circuit { let new_note_commit_config = NoteCommitChip::configure(meta, advices, sinsemilla_config_2.clone()); + let mux_config = MuxChip::configure(meta, advices[0], advices[1], advices[2], advices[3]); + Config { primary, q_orchard, @@ -397,6 +442,7 @@ impl plonk::Circuit for Circuit { commit_ivk_config, old_note_commit_config, new_note_commit_config, + mux_config, } } @@ -413,7 +459,7 @@ impl plonk::Circuit for Circuit { let ecc_chip = config.ecc_chip(); // Witness private inputs that are used across multiple checks. - let (psi_old, rho_old, cm_old, g_d_old, ak_P, nk, v_old, v_new) = { + let (psi_old, rho_old, cm_old, g_d_old, ak_P, nk, v_old, v_new, asset) = { // Witness psi_old let psi_old = assign_free_advice( layouter.namespace(|| "witness psi_old"), @@ -471,9 +517,27 @@ impl plonk::Circuit for Circuit { self.v_new, )?; - (psi_old, rho_old, cm_old, g_d_old, ak_P, nk, v_old, v_new) + // Witness asset + let asset = NonIdentityPoint::new( + ecc_chip.clone(), + layouter.namespace(|| "witness asset"), + self.asset.map(|asset| asset.cv_base().to_affine()), + )?; + + ( + psi_old, rho_old, cm_old, g_d_old, ak_P, nk, v_old, v_new, asset, + ) }; + // Witness is_native_asset which is equal to + // 1 if asset is equal to native asset, and + // 0 if asset is not equal to native asset. + let is_native_asset = assign_is_native_asset( + layouter.namespace(|| "witness is_native_asset"), + config.advices[0], + self.asset, + )?; + // Merkle path validity check (https://p.z.cash/ZKS:action-merkle-path-validity?partial). let root = { let path = self @@ -537,19 +601,13 @@ impl plonk::Circuit for Circuit { self.rcv.as_ref().map(|rcv| rcv.inner()), )?; - let asset = NonIdentityPoint::new( - ecc_chip.clone(), - layouter.namespace(|| "witness asset"), - self.asset.map(|asset| asset.cv_base().to_affine()), - )?; - let cv_net = gadget::value_commit_orchard( layouter.namespace(|| "cv_net = ValueCommit^Orchard_rcv(v_net_magnitude_sign)"), config.sinsemilla_chip_1(), ecc_chip.clone(), v_net_magnitude_sign.clone(), rcv, - asset, + asset.clone(), )?; // Constrain cv_net to equal public input @@ -658,12 +716,15 @@ impl plonk::Circuit for Circuit { config.sinsemilla_chip_1(), config.ecc_chip(), config.note_commit_chip_old(), + config.mux_chip(), g_d_old.inner(), pk_d_old.inner(), v_old.clone(), rho_old, psi_old, + asset.inner(), rcm_old, + is_native_asset.clone(), )?; // Constrain derived cm_old to equal witnessed cm_old @@ -716,12 +777,15 @@ impl plonk::Circuit for Circuit { config.sinsemilla_chip_2(), config.ecc_chip(), config.note_commit_chip_new(), + config.mux_chip(), g_d_new.inner(), pk_d_new.inner(), v_new.clone(), rho_new, psi_new, + asset.inner(), rcm_new, + is_native_asset.clone(), )?; let cmx = cm_new.extract_p(); @@ -795,6 +859,72 @@ impl plonk::Circuit for Circuit { 1, )?; + is_native_asset.copy_advice( + || "is_native_asset", + &mut region, + config.advices[1], + 1, + )?; + asset + .inner() + .x() + .copy_advice(|| "asset_x", &mut region, config.advices[2], 1)?; + asset + .inner() + .y() + .copy_advice(|| "asset_y", &mut region, config.advices[3], 1)?; + + // `diff_asset_x_inv` and `diff_asset_y_inv` will be used to prove that + // if is_native_asset = 0, then asset != native_asset. + region.assign_advice( + || "diff_asset_x_inv", + config.advices[4], + 1, + || { + self.asset.map(|asset| { + let asset_x = *asset.cv_base().to_affine().coordinates().unwrap().x(); + let native_asset_x = *AssetBase::native() + .cv_base() + .to_affine() + .coordinates() + .unwrap() + .x(); + + let diff_asset_x = asset_x - native_asset_x; + + if diff_asset_x == pallas::Base::zero() { + pallas::Base::zero() + } else { + diff_asset_x.invert().unwrap() + } + }) + }, + )?; + region.assign_advice( + || "diff_asset_y_inv", + config.advices[5], + 1, + || { + self.asset.map(|asset| { + let asset_y = *asset.cv_base().to_affine().coordinates().unwrap().y(); + let native_asset_y = *AssetBase::native() + .cv_base() + .to_affine() + .coordinates() + .unwrap() + .y(); + + let diff_asset_y = asset_y - native_asset_y; + + if diff_asset_y == pallas::Base::zero() { + pallas::Base::zero() + } else { + diff_asset_y.invert().unwrap() + } + }) + }, + )?; + config.q_orchard.enable(&mut region, 0) }, )?; @@ -1111,8 +1241,8 @@ mod tests { K, &circuits[0], ); - assert_eq!(usize::from(circuit_cost.proof_size(1)), 5024); - assert_eq!(usize::from(circuit_cost.proof_size(2)), 7296); + assert_eq!(usize::from(circuit_cost.proof_size(1)), 5088); + assert_eq!(usize::from(circuit_cost.proof_size(2)), 7360); usize::from(circuit_cost.proof_size(instances.len())) }; @@ -1141,6 +1271,7 @@ mod tests { #[test] fn serialized_proof_test_case() { + use std::fs; use std::io::{Read, Write}; let vk = VerifyingKey::build(); @@ -1209,7 +1340,7 @@ mod tests { let proof = Proof::create(&pk, &[circuit], instances, &mut rng).unwrap(); assert!(proof.verify(&vk, instances).is_ok()); - let file = std::fs::File::create("circuit_proof_test_case.bin")?; + let file = std::fs::File::create("src/circuit_proof_test_case.bin")?; write_test_case(file, &instance, &proof) }; create_proof().expect("should be able to write new proof"); @@ -1217,10 +1348,10 @@ mod tests { // Parse the hardcoded proof test case. let (instance, proof) = { - let test_case_bytes = include_bytes!("circuit_proof_test_case.bin"); + let test_case_bytes = fs::read("src/circuit_proof_test_case.bin").unwrap(); read_test_case(&test_case_bytes[..]).expect("proof must be valid") }; - assert_eq!(proof.0.len(), 5024); + assert_eq!(proof.0.len(), 5088); assert!(proof.verify(&vk, &[instance]).is_ok()); } diff --git a/src/circuit/gadget.rs b/src/circuit/gadget.rs index 8c0440aef..646bef288 100644 --- a/src/circuit/gadget.rs +++ b/src/circuit/gadget.rs @@ -5,6 +5,7 @@ use pasta_curves::pallas; use super::{commit_ivk::CommitIvkChip, note_commit::NoteCommitChip}; use crate::constants::{NullifierK, OrchardCommitDomains, OrchardFixedBases, OrchardHashDomains}; +use crate::note::AssetBase; use halo2_gadgets::{ ecc::{chip::EccChip, EccInstructions, FixedPointBaseField, Point, X}, poseidon::{ @@ -19,6 +20,7 @@ use halo2_proofs::{ }; pub(in crate::circuit) mod add_chip; +pub(in crate::circuit) mod mux_chip; impl super::Config { pub(super) fn add_chip(&self) -> add_chip::AddChip { @@ -68,6 +70,10 @@ impl super::Config { pub(super) fn note_commit_chip_old(&self) -> NoteCommitChip { NoteCommitChip::construct(self.old_note_commit_config.clone()) } + + pub(super) fn mux_chip(&self) -> mux_chip::MuxChip { + mux_chip::MuxChip::construct(self.mux_config.clone()) + } } /// An instruction set for adding two circuit words (field elements). @@ -100,6 +106,28 @@ where ) } +/// Witnesses is_native_asset. +pub(in crate::circuit) fn assign_is_native_asset( + layouter: impl Layouter, + column: Column, + asset: Value, +) -> Result, plonk::Error> +where + Assigned: for<'v> From<&'v pasta_curves::Fp>, +{ + assign_free_advice( + layouter, + column, + asset.map(|asset| { + if bool::from(asset.is_native()) { + pallas::Base::one() + } else { + pallas::Base::zero() + } + }), + ) +} + /// `DeriveNullifier` from [Section 4.16: Note Commitments and Nullifiers]. /// /// [Section 4.16: Note Commitments and Nullifiers]: https://zips.z.cash/protocol/protocol.pdf#commitmentsandnullifiers diff --git a/src/circuit/gadget/mux_chip.rs b/src/circuit/gadget/mux_chip.rs new file mode 100644 index 000000000..dbe54ed40 --- /dev/null +++ b/src/circuit/gadget/mux_chip.rs @@ -0,0 +1,338 @@ +use halo2_gadgets::ecc::chip::EccPoint; +use halo2_proofs::{ + circuit::{AssignedCell, Chip, Layouter, Value}, + plonk::{self, Advice, Column, ConstraintSystem, Constraints, Expression, Selector}, + poly::Rotation, +}; +use pasta_curves::pallas; + +#[derive(Clone, Debug)] +pub(in crate::circuit) struct MuxConfig { + choice: Column, + left: Column, + right: Column, + out: Column, + q_mux: Selector, +} + +/// A chip implementing a multiplexer on a single row. +/// +/// out = if (choice == 0) {left} else {right} +/// +/// `choice` must be constrained to {0, 1} separately. +#[derive(Clone, Debug)] +pub(in crate::circuit) struct MuxChip { + config: MuxConfig, +} + +impl Chip for MuxChip { + type Config = MuxConfig; + type Loaded = (); + + fn config(&self) -> &Self::Config { + &self.config + } + + fn loaded(&self) -> &Self::Loaded { + &() + } +} + +impl MuxChip { + pub(in crate::circuit) fn configure( + meta: &mut ConstraintSystem, + choice: Column, + left: Column, + right: Column, + out: Column, + ) -> MuxConfig { + let q_mux = meta.selector(); + meta.create_gate("Field element multiplexer", |meta| { + let q_mux = meta.query_selector(q_mux); + let choice = meta.query_advice(choice, Rotation::cur()); + let left = meta.query_advice(left, Rotation::cur()); + let right = meta.query_advice(right, Rotation::cur()); + let out = meta.query_advice(out, Rotation::cur()); + + let one = Expression::Constant(pallas::Base::one()); + + let should_be_zero = (one - choice.clone()) * left + choice * right - out; + + Constraints::with_selector(q_mux, Some(should_be_zero)) + }); + + MuxConfig { + choice, + left, + right, + out, + q_mux, + } + } + + pub(in crate::circuit) fn construct(config: MuxConfig) -> Self { + Self { config } + } +} + +/// An instruction set for multiplexing two points. +pub(crate) trait MuxInstructions { + /// Constraints `MUX(choice, left, right)` and returns the selected point. + fn mux( + &self, + layouter: impl Layouter, + choice: &AssignedCell, + left: &EccPoint, + right: &EccPoint, + ) -> Result; +} + +impl MuxInstructions for MuxChip { + fn mux( + &self, + mut layouter: impl Layouter, + choice: &AssignedCell, + left: &EccPoint, + right: &EccPoint, + ) -> Result { + let x_cell = layouter.assign_region( + || "mux x", + |mut region| { + self.config.q_mux.enable(&mut region, 0)?; + + choice.copy_advice(|| "copy choice", &mut region, self.config.choice, 0)?; + left.x() + .copy_advice(|| "copy left_x", &mut region, self.config.left, 0)?; + right + .x() + .copy_advice(|| "copy right_x", &mut region, self.config.right, 0)?; + + let out_val = (Value::known(pallas::Base::one()) - choice.value()) + * left.x().value() + + choice.value() * right.x().value(); + + region.assign_advice(|| "out x", self.config.out, 0, || out_val) + }, + )?; + let y_cell = layouter.assign_region( + || "mux y", + |mut region| { + self.config.q_mux.enable(&mut region, 0)?; + + choice.copy_advice(|| "copy choice", &mut region, self.config.choice, 0)?; + left.y() + .copy_advice(|| "copy left_y", &mut region, self.config.left, 0)?; + right + .y() + .copy_advice(|| "copy right_y", &mut region, self.config.right, 0)?; + + let out_val = (Value::known(pallas::Base::one()) - choice.value()) + * left.y().value() + + choice.value() * right.y().value(); + + region.assign_advice(|| "out y", self.config.out, 0, || out_val) + }, + )?; + + Ok(EccPoint::from_coordinates_unchecked( + x_cell.into(), + y_cell.into(), + )) + } +} + +#[cfg(test)] +mod tests { + use crate::circuit::gadget::mux_chip::{MuxChip, MuxConfig, MuxInstructions}; + + use crate::{circuit::gadget::assign_free_advice, circuit::K, constants::OrchardFixedBases}; + use halo2_gadgets::{ + ecc::{ + chip::{EccChip, EccConfig}, + Point, + }, + utilities::lookup_range_check::LookupRangeCheckConfig, + }; + + use group::{cofactor::CofactorCurveAffine, Curve, Group}; + use halo2_proofs::{ + circuit::{Layouter, SimpleFloorPlanner, Value}, + dev::MockProver, + plonk::{Advice, Circuit, Column, ConstraintSystem, Error, Instance}, + }; + use pasta_curves::arithmetic::CurveAffine; + use pasta_curves::{pallas, EpAffine}; + + use rand::rngs::OsRng; + + #[test] + fn test_mux_chip() { + #[derive(Clone, Debug)] + pub struct MyConfig { + primary: Column, + advice: Column, + mux_config: MuxConfig, + ecc_config: EccConfig, + } + #[derive(Default)] + struct MyCircuit { + left_point: Value, + right_point: Value, + choice: Value, + } + + impl Circuit for MyCircuit { + type Config = MyConfig; + type FloorPlanner = SimpleFloorPlanner; + + fn without_witnesses(&self) -> Self { + Self::default() + } + + fn configure(meta: &mut ConstraintSystem) -> Self::Config { + let advices = [ + meta.advice_column(), + meta.advice_column(), + meta.advice_column(), + meta.advice_column(), + meta.advice_column(), + meta.advice_column(), + meta.advice_column(), + meta.advice_column(), + meta.advice_column(), + meta.advice_column(), + ]; + + for advice in advices.iter() { + meta.enable_equality(*advice); + } + + // Instance column used for public inputs + let primary = meta.instance_column(); + meta.enable_equality(primary); + + let mux_config = + MuxChip::configure(meta, advices[0], advices[1], advices[2], advices[3]); + + let table_idx = meta.lookup_table_column(); + + let lagrange_coeffs = [ + meta.fixed_column(), + meta.fixed_column(), + meta.fixed_column(), + meta.fixed_column(), + meta.fixed_column(), + meta.fixed_column(), + meta.fixed_column(), + meta.fixed_column(), + ]; + meta.enable_constant(lagrange_coeffs[0]); + + let range_check = LookupRangeCheckConfig::configure(meta, advices[9], table_idx); + + let ecc_config = EccChip::::configure( + meta, + advices, + lagrange_coeffs, + range_check, + ); + + MyConfig { + primary, + advice: advices[0], + mux_config, + ecc_config, + } + } + + fn synthesize( + &self, + config: Self::Config, + mut layouter: impl Layouter, + ) -> Result<(), Error> { + // Construct a MUX chip + let mux_chip = MuxChip::construct(config.mux_config); + + // Construct an ECC chip + let ecc_chip = EccChip::construct(config.ecc_config); + + // Assign left point + let left_point = Point::new( + ecc_chip.clone(), + layouter.namespace(|| "left point"), + self.left_point.map(|left_point| left_point), + )?; + + // Assign right point + let right_point = Point::new( + ecc_chip, + layouter.namespace(|| "right point"), + self.right_point.map(|right_point| right_point), + )?; + + // Assign choice + let choice = assign_free_advice( + layouter.namespace(|| "choice"), + config.advice, + self.choice, + )?; + + // Apply mux + let result = mux_chip.mux( + layouter.namespace(|| "MUX"), + &choice, + left_point.inner(), + right_point.inner(), + )?; + + // Check equality with instance + layouter.constrain_instance(result.x().cell(), config.primary, 0)?; + layouter.constrain_instance(result.y().cell(), config.primary, 1) + } + } + + // Test different circuits + let mut circuits = vec![]; + let mut instances = vec![]; + for choice in [false, true] { + let choice_value = if choice { + pallas::Base::one() + } else { + pallas::Base::zero() + }; + for left_point in [ + pallas::Point::identity().to_affine(), + pallas::Point::random(OsRng).to_affine(), + ] { + for right_point in [ + pallas::Point::identity().to_affine(), + pallas::Point::random(OsRng).to_affine(), + ] { + circuits.push(MyCircuit { + left_point: Value::known(left_point), + right_point: Value::known(right_point), + choice: Value::known(choice_value), + }); + let expected_output = if choice { right_point } else { left_point }; + let (expected_x, expected_y) = if bool::from(expected_output.is_identity()) { + (pallas::Base::zero(), pallas::Base::zero()) + } else { + let coords = expected_output.coordinates().unwrap(); + (*coords.x(), *coords.y()) + }; + instances.push([[expected_x, expected_y]]); + } + } + } + + for (circuit, instance) in circuits.iter().zip(instances.iter()) { + let prover = MockProver::::run( + K, + circuit, + instance.iter().map(|p| p.to_vec()).collect(), + ) + .unwrap(); + assert_eq!(prover.verify(), Ok(())); + } + } +} diff --git a/src/circuit/note_commit.rs b/src/circuit/note_commit.rs index 9daa685f2..47e2fda1c 100644 --- a/src/circuit/note_commit.rs +++ b/src/circuit/note_commit.rs @@ -9,6 +9,7 @@ use halo2_proofs::{ use pasta_curves::pallas; use crate::{ + circuit::gadget::mux_chip::{MuxChip, MuxInstructions}, constants::{OrchardCommitDomains, OrchardFixedBases, OrchardHashDomains, T_P}, value::NoteValue, }; @@ -575,13 +576,16 @@ impl DecomposeG { ) } } - -/// h = h_0 || h_1 || h_2 -/// = (bits 249..=253 of psi) || (bit 254 of psi) || 4 zero bits +/// h_zec = h_0 || h_1 || h_2_zec +/// = (bits 249..=253 of psi) || (bit 254 of psi) || 4 zero bits /// -/// | A_6 | A_7 | A_8 | q_notecommit_h | -/// ------------------------------------ -/// | h | h_0 | h_1 | 1 | +/// h_zsa = h_0 || h_1 || h_2_zsa +/// = (bits 249..=253 of psi) || (bit 254 of psi) || (bits 0..=3 of x(asset)) +/// +/// | A_6 | A_7 | A_8 | q_notecommit_h | +/// -------------------------------------------- +/// | h_zec | h_0 | h_1 | 1 | +/// | h_zsa | h_2_zsa | | 0 | /// /// #[derive(Clone, Debug)] @@ -599,27 +603,38 @@ impl DecomposeH { col_m: Column, col_r: Column, two_pow_5: pallas::Base, + two_pow_6: pallas::Base, ) -> Self { let q_notecommit_h = meta.selector(); meta.create_gate("NoteCommit MessagePiece h", |meta| { let q_notecommit_h = meta.query_selector(q_notecommit_h); - // h has been constrained to 10 bits by the Sinsemilla hash. - let h = meta.query_advice(col_l, Rotation::cur()); + // h_zec has been constrained to 10 bits by the Sinsemilla hash. + let h_zec = meta.query_advice(col_l, Rotation::cur()); // h_0 has been constrained to be 5 bits outside this gate. let h_0 = meta.query_advice(col_m, Rotation::cur()); // This gate constrains h_1 to be boolean. let h_1 = meta.query_advice(col_r, Rotation::cur()); - // h = h_0 + (2^5) h_1 - let decomposition_check = h - (h_0 + h_1.clone() * two_pow_5); + // h_zsa has been constrained to 10 bits by the Sinsemilla hash. + let h_zsa = meta.query_advice(col_l, Rotation::next()); + // h_2_zsa has been constrained to be 4 bits outside this gate. + let h_2_zsa = meta.query_advice(col_m, Rotation::next()); + + // h_zec = h_0 + (2^5) h_1 + let zec_decomposition_check = h_zec - (h_0.clone() + h_1.clone() * two_pow_5); + + // h_zsa = h_0 + (2^5) h_1 + (2^6) h_2_zsa + let zsa_decomposition_check = + h_zsa - (h_0 + h_1.clone() * two_pow_5 + h_2_zsa * two_pow_6); Constraints::with_selector( q_notecommit_h, [ ("bool_check h_1", bool_check(h_1)), - ("decomposition", decomposition_check), + ("zec_decomposition", zec_decomposition_check), + ("zsa_decomposition", zsa_decomposition_check), ], ) }); @@ -638,11 +653,14 @@ impl DecomposeH { chip: SinsemillaChip, layouter: &mut impl Layouter, psi: &AssignedCell, + asset: &NonIdentityEccPoint, ) -> Result< ( + NoteCommitPiece, NoteCommitPiece, RangeConstrained>, RangeConstrained>, + RangeConstrained>, ), Error, > { @@ -657,9 +675,17 @@ impl DecomposeH { // h_1 will be boolean-constrained in the gate. let h_1 = RangeConstrained::bitrange_of(psi.value(), 254..255); - let h = MessagePiece::from_subpieces( - chip, - layouter.namespace(|| "h"), + // Constrain h_2_zsa to be 4 bits. + let h_2_zsa = RangeConstrained::witness_short( + lookup_config, + layouter.namespace(|| "h_2_zsa"), + asset.x().value(), + 0..4, + )?; + + let h_zec = MessagePiece::from_subpieces( + chip.clone(), + layouter.namespace(|| "h_zec"), [ h_0.value(), h_1, @@ -667,34 +693,164 @@ impl DecomposeH { ], )?; - Ok((h, h_0, h_1)) + let h_zsa = MessagePiece::from_subpieces( + chip, + layouter.namespace(|| "h_zsa"), + [h_0.value(), h_1, h_2_zsa.value()], + )?; + + Ok((h_zec, h_zsa, h_0, h_1, h_2_zsa)) } fn assign( &self, layouter: &mut impl Layouter, - h: NoteCommitPiece, + h_zec: NoteCommitPiece, + h_zsa: NoteCommitPiece, h_0: RangeConstrained>, h_1: RangeConstrained>, + h_2_zsa: RangeConstrained>, ) -> Result, Error> { layouter.assign_region( || "NoteCommit MessagePiece h", |mut region| { self.q_notecommit_h.enable(&mut region, 0)?; - h.inner() + h_zec + .inner() .cell_value() - .copy_advice(|| "h", &mut region, self.col_l, 0)?; + .copy_advice(|| "h_zec", &mut region, self.col_l, 0)?; h_0.inner() .copy_advice(|| "h_0", &mut region, self.col_m, 0)?; let h_1 = region.assign_advice(|| "h_1", self.col_r, 0, || *h_1.inner())?; + h_zsa + .inner() + .cell_value() + .copy_advice(|| "h_zsa", &mut region, self.col_l, 1)?; + + h_2_zsa + .inner() + .copy_advice(|| "h_2_zsa", &mut region, self.col_m, 1)?; + Ok(h_1) }, ) } } +/// j = j_0 || j_1 +/// = (bit 254 of x(asset)) || (ỹ bit of asset) +/// +/// | A_6 | A_7 | A_8 | q_notecommit_j | +/// ------------------------------------ +/// | j | j_0 | j_1 | 1 | +/// +/// https://p.z.cash/orchard-0.1:note-commit-decomposition-j?partial +#[derive(Clone, Debug)] +struct DecomposeJ { + q_notecommit_j: Selector, + col_l: Column, + col_m: Column, + col_r: Column, +} + +impl DecomposeJ { + fn configure( + meta: &mut ConstraintSystem, + col_l: Column, + col_m: Column, + col_r: Column, + two: pallas::Base, + ) -> Self { + let q_notecommit_j = meta.selector(); + + meta.create_gate("NoteCommit MessagePiece j", |meta| { + let q_notecommit_j = meta.query_selector(q_notecommit_j); + + // j has been constrained to 10 bits by the Sinsemilla hash. + let j = meta.query_advice(col_l, Rotation::cur()); + // This gate constrains j_0 to be boolean. + let j_0 = meta.query_advice(col_m, Rotation::cur()); + // This gate constrains j_1 to be boolean. + let j_1 = meta.query_advice(col_r, Rotation::cur()); + + // j = j_0 + (2) j_1 + let decomposition_check = j - (j_0.clone() + j_1.clone() * two); + + Constraints::with_selector( + q_notecommit_j, + [ + ("bool_check j_0", bool_check(j_0)), + ("bool_check j_1", bool_check(j_1)), + ("decomposition", decomposition_check), + ], + ) + }); + + Self { + q_notecommit_j, + col_l, + col_m, + col_r, + } + } + + #[allow(clippy::type_complexity)] + fn decompose( + chip: SinsemillaChip, + layouter: &mut impl Layouter, + asset: &NonIdentityEccPoint, + ) -> Result< + ( + NoteCommitPiece, + RangeConstrained>, + RangeConstrained>, + ), + Error, + > { + // j_0, j_1 will be boolean-constrained in the gate. + let j_0 = RangeConstrained::bitrange_of(asset.x().value(), 254..255); + let j_1 = RangeConstrained::bitrange_of(asset.y().value(), 0..1); + + let j = MessagePiece::from_subpieces( + chip, + layouter.namespace(|| "j"), + [ + j_0, + j_1, + RangeConstrained::bitrange_of(Value::known(&pallas::Base::zero()), 0..8), + ], + )?; + + Ok((j, j_0, j_1)) + } + + fn assign( + &self, + layouter: &mut impl Layouter, + j: NoteCommitPiece, + j_0: RangeConstrained>, + j_1: RangeConstrained>, + ) -> Result, Error> { + layouter.assign_region( + || "NoteCommit MessagePiece j", + |mut region| { + self.q_notecommit_j.enable(&mut region, 0)?; + + j.inner() + .cell_value() + .copy_advice(|| "j", &mut region, self.col_l, 0)?; + let j_0 = region.assign_advice(|| "j_0", self.col_m, 0, || *j_0.inner())?; + j_1.inner() + .copy_advice(|| "j_1", &mut region, self.col_r, 0)?; + + Ok(j_0) + }, + ) + } +} + /// | A_6 | A_7 | A_8 | A_9 | q_notecommit_g_d | /// ----------------------------------------------------------- /// | x(g_d) | b_0 | a | z13_a | 1 | @@ -811,23 +967,29 @@ impl GdCanonicity { ) } } - -/// | A_6 | A_7 | A_8 | A_9 | q_notecommit_pk_d | -/// ------------------------------------------------------------------- -/// | x(pk_d) | b_3 | c | z13_c | 1 | -/// | | d_0 | b3_c_prime | z14_b3_c_prime | 0 | +/// For pk_d +/// | A_6 | A_7 | A_8 | A_9 | q_notecommit_pk_d_asset | +/// ------------------------------------------------------------------------- +/// | x(pk_d) | b_3 | c | z13_c | 1 | +/// | | d_0 | b3_c_prime | z14_b3_c_prime | 0 | +/// +/// For asset +/// | A_6 | A_7 | A_8 | A_9 | q_notecommit_pk_d_asset | +/// ------------------------------------------------------------------------------ +/// | x(asset) | h_2_zsa | i | z13_i | 1 | +/// | | j_0 | h2_i_prime | z14_h2_i_prime | 0 | /// /// #[derive(Clone, Debug)] -struct PkdCanonicity { - q_notecommit_pk_d: Selector, +struct PkdAssetCanonicity { + q_notecommit_pk_d_asset: Selector, col_l: Column, col_m: Column, col_r: Column, col_z: Column, } -impl PkdCanonicity { +impl PkdAssetCanonicity { #[allow(clippy::too_many_arguments)] fn configure( meta: &mut ConstraintSystem, @@ -840,10 +1002,13 @@ impl PkdCanonicity { two_pow_254: pallas::Base, t_p: Expression, ) -> Self { - let q_notecommit_pk_d = meta.selector(); + let q_notecommit_pk_d_asset = meta.selector(); - meta.create_gate("NoteCommit input pk_d", |meta| { - let q_notecommit_pk_d = meta.query_selector(q_notecommit_pk_d); + meta.create_gate("NoteCommit input pk_d or asset", |meta| { + // The comments and variable names are for `pk_d` + // This gate is also used with `asset`. + // We have just to replace `pk_d`, `b_3`, `c`, `d_0` by `asset`, `h_2_zsa`, `i`, `j_0` + let q_notecommit_pk_d_asset = meta.query_selector(q_notecommit_pk_d_asset); let pkd_x = meta.query_advice(col_l, Rotation::cur()); @@ -876,7 +1041,7 @@ impl PkdCanonicity { .map(move |(name, poly)| (name, d_0.clone() * poly)); Constraints::with_selector( - q_notecommit_pk_d, + q_notecommit_pk_d_asset, iter::empty() .chain(Some(("decomposition", decomposition_check))) .chain(Some(("b3_c_prime_check", b3_c_prime_check))) @@ -885,7 +1050,7 @@ impl PkdCanonicity { }); Self { - q_notecommit_pk_d, + q_notecommit_pk_d_asset, col_l, col_m, col_r, @@ -895,6 +1060,9 @@ impl PkdCanonicity { #[allow(clippy::too_many_arguments)] fn assign( + // This function is used for `pk_d` and `asset`. + // For `pk_d`, inputs are `pk_d`, `b_3`, `c`, `d_0`, `b3_c_prime`, `z13_c`, `z14_b3_c_prime` + // For `asset`, inputs are `asset`, `h_2_zsa`, `i`, `j_0`, `h2_i_prime`, `z13_i`, `z14_h2_i_prime` &self, layouter: &mut impl Layouter, pk_d: &NonIdentityEccPoint, @@ -906,7 +1074,7 @@ impl PkdCanonicity { z14_b3_c_prime: AssignedCell, ) -> Result<(), Error> { layouter.assign_region( - || "NoteCommit input pk_d", + || "NoteCommit input pk_d or asset", |mut region| { pk_d.x() .copy_advice(|| "pkd_x", &mut region, self.col_l, 0)?; @@ -923,7 +1091,7 @@ impl PkdCanonicity { z13_c.copy_advice(|| "z13_c", &mut region, self.col_z, 0)?; z14_b3_c_prime.copy_advice(|| "z14_b3_c_prime", &mut region, self.col_z, 1)?; - self.q_notecommit_pk_d.enable(&mut region, 0) + self.q_notecommit_pk_d_asset.enable(&mut region, 0) }, ) } @@ -1418,8 +1586,9 @@ pub struct NoteCommitConfig { e: DecomposeE, g: DecomposeG, h: DecomposeH, + j: DecomposeJ, g_d: GdCanonicity, - pk_d: PkdCanonicity, + pk_d_asset: PkdAssetCanonicity, value: ValueCanonicity, rho: RhoCanonicity, psi: PsiCanonicity, @@ -1474,7 +1643,8 @@ impl NoteCommitChip { let d = DecomposeD::configure(meta, col_l, col_m, col_r, two, two_pow_2, two_pow_10); let e = DecomposeE::configure(meta, col_l, col_m, col_r, two_pow_6); let g = DecomposeG::configure(meta, col_l, col_m, two, two_pow_10); - let h = DecomposeH::configure(meta, col_l, col_m, col_r, two_pow_5); + let h = DecomposeH::configure(meta, col_l, col_m, col_r, two_pow_5, two_pow_6); + let j = DecomposeJ::configure(meta, col_l, col_m, col_r, two); let g_d = GdCanonicity::configure( meta, @@ -1488,7 +1658,7 @@ impl NoteCommitChip { t_p.clone(), ); - let pk_d = PkdCanonicity::configure( + let pk_d_asset = PkdAssetCanonicity::configure( meta, col_l, col_m, @@ -1545,8 +1715,9 @@ impl NoteCommitChip { e, g, h, + j, g_d, - pk_d, + pk_d_asset, value, rho, psi, @@ -1574,12 +1745,15 @@ pub(in crate::circuit) mod gadgets { chip: SinsemillaChip, ecc_chip: EccChip, note_commit_chip: NoteCommitChip, + mux_chip: MuxChip, g_d: &NonIdentityEccPoint, pk_d: &NonIdentityEccPoint, value: AssignedCell, rho: AssignedCell, psi: AssignedCell, + asset: &NonIdentityEccPoint, rcm: ScalarFixed>, + is_native_asset: AssignedCell, ) -> Result>, Error> { let lookup_config = chip.config().lookup_config(); @@ -1623,10 +1797,22 @@ pub(in crate::circuit) mod gadgets { let (g, g_0, g_1) = DecomposeG::decompose(&lookup_config, chip.clone(), &mut layouter, &rho, &psi)?; - // h = h_0 || h_1 || h_2 + // h_zec = h_0 || h_1 || h_2_zec // = (bits 249..=253 of psi) || (bit 254 of psi) || 4 zero bits - let (h, h_0, h_1) = - DecomposeH::decompose(&lookup_config, chip.clone(), &mut layouter, &psi)?; + // h_zsa = h_0 || h_1 || h_2_zsa + // = (bits 249..=253 of psi) || (bit 254 of psi) || (bits 0..=3 of x(asset)) + let (h_zec, h_zsa, h_0, h_1, h_2_zsa) = + DecomposeH::decompose(&lookup_config, chip.clone(), &mut layouter, &psi, asset)?; + + // i = bits 4..=253 of asset + let i = MessagePiece::from_subpieces( + chip.clone(), + layouter.namespace(|| "i"), + [RangeConstrained::bitrange_of(asset.x().value(), 4..254)], + )?; + + // j = j_0 || j_1 || j_2 = (bit 254 of x(asset)) || (ỹ bit of asset) || 8 zero bits + let (j, j_0, j_1) = DecomposeJ::decompose(chip.clone(), &mut layouter, asset)?; // Check decomposition of `y(g_d)`. let b_2 = y_canonicity( @@ -1644,6 +1830,14 @@ pub(in crate::circuit) mod gadgets { pk_d.y(), d_1, )?; + // Check decomposition of `y(asset)`. + let j_1 = y_canonicity( + &lookup_config, + ¬e_commit_chip.config.y_canon, + layouter.namespace(|| "y(asset) decomposition"), + asset.y(), + j_1, + )?; // cm = NoteCommit^Orchard_rcm(g★_d || pk★_d || i2lebsp_{64}(v) || rho || psi) // @@ -1654,7 +1848,21 @@ pub(in crate::circuit) mod gadgets { // https://p.z.cash/ZKS:action-cm-old-integrity?partial // https://p.z.cash/ZKS:action-cmx-new-integrity?partial let (cm, zs) = { - let message = Message::from_pieces( + let message_zec = Message::from_pieces( + chip.clone(), + vec![ + a.clone(), + b.clone(), + c.clone(), + d.clone(), + e.clone(), + f.clone(), + g.clone(), + h_zec.clone(), + ], + ); + + let message_zsa = Message::from_pieces( chip.clone(), vec![ a.clone(), @@ -1664,18 +1872,61 @@ pub(in crate::circuit) mod gadgets { e.clone(), f.clone(), g.clone(), - h.clone(), + h_zsa.clone(), + i.clone(), + j.clone(), ], ); - let domain = CommitDomain::new(chip, ecc_chip, &OrchardCommitDomains::NoteCommit); - domain.commit( - layouter.namespace(|| "Process NoteCommit inputs"), - message, - rcm, - )? + + let zec_domain = CommitDomain::new( + chip.clone(), + ecc_chip.clone(), + &OrchardCommitDomains::NoteCommit, + ); + let zsa_domain = + CommitDomain::new(chip, ecc_chip.clone(), &OrchardCommitDomains::NoteZsaCommit); + + // We evaluate `hash_point_zec=hash(Q_ZEC, message_zec)` and `hash_point_zsa(Q_ZSA, message_zsa) + // and then perform a MUX to select the desired hash_point + // TODO: We can optimize the evaluation of hash_point by mutualizing a portion of the + // hash evaluation process between hash_point_zec and hash_point_zsa. + // 1. common_bits = a || b || c || d || e || f || g + // 2. suffix_zec = h_zec + // 3. suffix_zsa = h_zsa || i || j + // 4. Q = if (is_native_asset == 0) {Q_ZSA} else {Q_ZEC} + // 5. hash_prefix = hash(Q, common_bits) // this part is mutualized + // 6. hash_zec = hash(hash_prefix, suffix_zec) + // 7. hash_zsa = hash(hash_prefix, suffix_zsa) + // 8. hash_point = if (is_native_asset == 0) {hash_zsa} else {hash_zec} + let (hash_point_zec, _zs_zec) = + zec_domain.hash(layouter.namespace(|| "hash ZEC note"), message_zec)?; + let (hash_point_zsa, zs_zsa) = + zsa_domain.hash(layouter.namespace(|| "hash ZSA note"), message_zsa)?; + + // Perform a MUX to select the desired hash point + // hash_point = hash_zec if is_native_asset is true + // hash_point = hash_zsa if is_native_asset is false + let hash_point = Point::from_inner( + ecc_chip, + mux_chip.mux( + layouter.namespace(|| "mux on hash point"), + &is_native_asset, + &(hash_point_zsa.inner().clone().into()), + &(hash_point_zec.inner().clone().into()), + )?, + ); + + // To evaluate the blinding factor, we could use either zec_domain or zsa_domain + // because they have both the same `R` constant. + let blinding_factor = + zec_domain.blinding_factor(layouter.namespace(|| "[r] R"), rcm)?; + let commitment = + hash_point.add(layouter.namespace(|| "M + [r] R"), &blinding_factor)?; + + (commitment, zs_zsa) }; - // `CommitDomain::commit` returns the running sum for each `MessagePiece`. Grab + // `CommitDomain::hash` returns the running sum for each `MessagePiece`. Grab // the outputs that we will need for canonicity checks. let z13_a = zs[0][13].clone(); let z13_c = zs[2][13].clone(); @@ -1684,6 +1935,7 @@ pub(in crate::circuit) mod gadgets { let z1_g = zs[6][1].clone(); let g_2 = z1_g.clone(); let z13_g = zs[6][13].clone(); + let z13_i = zs[8][13].clone(); // Witness and constrain the bounds we need to ensure canonicity. let (a_prime, z13_a_prime) = canon_bitshift_130( @@ -1692,13 +1944,20 @@ pub(in crate::circuit) mod gadgets { a.inner().cell_value(), )?; - let (b3_c_prime, z14_b3_c_prime) = pkd_x_canonicity( + let (b3_c_prime, z14_b3_c_prime) = pkd_asset_x_canonicity( &lookup_config, layouter.namespace(|| "x(pk_d) canonicity"), b_3.clone(), c.inner().cell_value(), )?; + let (h2_i_prime, z14_h2_i_prime) = pkd_asset_x_canonicity( + &lookup_config, + layouter.namespace(|| "x(asset) canonicity"), + h_2_zsa.clone(), + i.inner().cell_value(), + )?; + let (e1_f_prime, z14_e1_f_prime) = rho_canonicity( &lookup_config, layouter.namespace(|| "rho canonicity"), @@ -1730,12 +1989,21 @@ pub(in crate::circuit) mod gadgets { .g .assign(&mut layouter, g, g_0, g_1.clone(), z1_g.clone())?; - let h_1 = cfg.h.assign(&mut layouter, h, h_0.clone(), h_1)?; + let h_1 = cfg.h.assign( + &mut layouter, + h_zec, + h_zsa, + h_0.clone(), + h_1, + h_2_zsa.clone(), + )?; + + let j_0 = cfg.j.assign(&mut layouter, j, j_0, j_1)?; cfg.g_d .assign(&mut layouter, g_d, a, b_0, b_1, a_prime, z13_a, z13_a_prime)?; - cfg.pk_d.assign( + cfg.pk_d_asset.assign( &mut layouter, pk_d, b_3, @@ -1746,6 +2014,17 @@ pub(in crate::circuit) mod gadgets { z14_b3_c_prime, )?; + cfg.pk_d_asset.assign( + &mut layouter, + asset, + h_2_zsa, + i, + j_0, + h2_i_prime, + z13_i, + z14_h2_i_prime, + )?; + cfg.value.assign(&mut layouter, value, d_2, z1_d, e_0)?; cfg.rho.assign( @@ -1810,15 +2089,16 @@ pub(in crate::circuit) mod gadgets { Ok((a_prime, zs[13].clone())) } - /// Check canonicity of `x(pk_d)` encoding. + /// Check canonicity of `x(pk_d)` and `x(asset)` encoding. /// /// [Specification](https://p.z.cash/orchard-0.1:note-commit-canonicity-pk_d?partial). - fn pkd_x_canonicity( + fn pkd_asset_x_canonicity( lookup_config: &LookupRangeCheckConfig, mut layouter: impl Layouter, b_3: RangeConstrained>, c: AssignedCell, ) -> Result { + // Example for `x(pk_d)`: // `x(pk_d)` = `b_3 (4 bits) || c (250 bits) || d_0 (1 bit)` // - d_0 = 1 => b_3 + 2^4 c < t_P // - 0 ≤ b_3 + 2^4 c < 2^134 @@ -1828,6 +2108,7 @@ pub(in crate::circuit) mod gadgets { // - z_13 of SinsemillaHash(c) == 0 constrains bits 4..=253 of pkd_x // to 130 bits. z13_c is directly checked in the gate. // - 0 ≤ b_3 + 2^4 c + 2^140 - t_P < 2^140 (14 ten-bit lookups) + // For `x(asset)`, we have to replace `pk_d`, `b_3`, `c`, `d_0` by `asset`, `h_2_zsa`, `i`, `j_0` // Decompose the low 140 bits of b3_c_prime = b_3 + 2^4 c + 2^140 - t_P, // and output the running sum at the end of it. @@ -2013,18 +2294,17 @@ pub(in crate::circuit) mod gadgets { #[cfg(test)] mod tests { - use core::iter; - use super::NoteCommitConfig; use crate::{ circuit::{ - gadget::assign_free_advice, + gadget::{ + assign_free_advice, assign_is_native_asset, + mux_chip::{MuxChip, MuxConfig}, + }, note_commit::{gadgets, NoteCommitChip}, }, - constants::{ - fixed_bases::NOTE_COMMITMENT_PERSONALIZATION, OrchardCommitDomains, OrchardFixedBases, - OrchardHashDomains, L_ORCHARD_BASE, L_VALUE, T_Q, - }, + constants::{OrchardCommitDomains, OrchardFixedBases, OrchardHashDomains, T_Q}, + note::{commitment::NoteCommitTrapdoor, AssetBase, NoteCommitment}, value::NoteValue, }; use halo2_gadgets::{ @@ -2033,18 +2313,17 @@ mod tests { NonIdentityPoint, ScalarFixed, }, sinsemilla::chip::SinsemillaChip, - sinsemilla::primitives::CommitDomain, utilities::lookup_range_check::LookupRangeCheckConfig, }; - use ff::{Field, PrimeField, PrimeFieldBits}; - use group::Curve; + use ff::{Field, PrimeField}; + use group::{Curve, Group, GroupEncoding}; use halo2_proofs::{ circuit::{Layouter, SimpleFloorPlanner, Value}, dev::MockProver, plonk::{Circuit, ConstraintSystem, Error}, }; - use pasta_curves::{arithmetic::CurveAffine, pallas}; + use pasta_curves::{arithmetic::CurveAffine, pallas, EpAffine}; use rand::{rngs::OsRng, RngCore}; @@ -2052,16 +2331,15 @@ mod tests { fn note_commit() { #[derive(Default)] struct MyCircuit { - gd_x: Value, - gd_y_lsb: Value, - pkd_x: Value, - pkd_y_lsb: Value, + g_d: Value, + pk_d: Value, rho: Value, psi: Value, + asset: Value, } impl Circuit for MyCircuit { - type Config = (NoteCommitConfig, EccConfig); + type Config = (NoteCommitConfig, EccConfig, MuxConfig); type FloorPlanner = SimpleFloorPlanner; fn without_witnesses(&self) -> Self { @@ -2130,7 +2408,10 @@ mod tests { range_check, ); - (note_commit_config, ecc_config) + let mux_config = + MuxChip::configure(meta, advices[0], advices[1], advices[2], advices[3]); + + (note_commit_config, ecc_config, mux_config) } fn synthesize( @@ -2138,7 +2419,7 @@ mod tests { config: Self::Config, mut layouter: impl Layouter, ) -> Result<(), Error> { - let (note_commit_config, ecc_config) = config; + let (note_commit_config, ecc_config, mux_config) = config; // Load the Sinsemilla generator lookup table used by the whole circuit. SinsemillaChip::< @@ -2157,41 +2438,22 @@ mod tests { // Construct a NoteCommit chip let note_commit_chip = NoteCommitChip::construct(note_commit_config.clone()); + // Construct a Mux chip + let mux_chip = MuxChip::construct(mux_config); + // Witness g_d - let g_d = { - let g_d = self.gd_x.zip(self.gd_y_lsb).map(|(x, y_lsb)| { - // Calculate y = (x^3 + 5).sqrt() - let mut y = (x.square() * x + pallas::Affine::b()).sqrt().unwrap(); - if bool::from(y.is_odd() ^ y_lsb.is_odd()) { - y = -y; - } - pallas::Affine::from_xy(x, y).unwrap() - }); - - NonIdentityPoint::new( - ecc_chip.clone(), - layouter.namespace(|| "witness g_d"), - g_d, - )? - }; + let g_d = NonIdentityPoint::new( + ecc_chip.clone(), + layouter.namespace(|| "witness g_d"), + self.g_d, + )?; // Witness pk_d - let pk_d = { - let pk_d = self.pkd_x.zip(self.pkd_y_lsb).map(|(x, y_lsb)| { - // Calculate y = (x^3 + 5).sqrt() - let mut y = (x.square() * x + pallas::Affine::b()).sqrt().unwrap(); - if bool::from(y.is_odd() ^ y_lsb.is_odd()) { - y = -y; - } - pallas::Affine::from_xy(x, y).unwrap() - }); - - NonIdentityPoint::new( - ecc_chip.clone(), - layouter.namespace(|| "witness pk_d"), - pk_d, - )? - }; + let pk_d = NonIdentityPoint::new( + ecc_chip.clone(), + layouter.namespace(|| "witness pk_d"), + self.pk_d, + )?; // Witness a random non-negative u64 note value // A note value cannot be negative. @@ -2228,54 +2490,52 @@ mod tests { Value::known(rcm), )?; + let asset = NonIdentityPoint::new( + ecc_chip.clone(), + layouter.namespace(|| "witness asset"), + self.asset.map(|asset| asset.cv_base().to_affine()), + )?; + + let is_native_asset = assign_is_native_asset( + layouter.namespace(|| "witness is_native_asset"), + note_commit_config.advices[0], + self.asset, + )?; let cm = gadgets::note_commit( layouter.namespace(|| "Hash NoteCommit pieces"), sinsemilla_chip, ecc_chip.clone(), note_commit_chip, + mux_chip, g_d.inner(), pk_d.inner(), value_var, rho, psi, + asset.inner(), rcm_gadget, + is_native_asset, )?; let expected_cm = { - let domain = CommitDomain::new(NOTE_COMMITMENT_PERSONALIZATION); // Hash g★_d || pk★_d || i2lebsp_{64}(v) || rho || psi - let lsb = |y_lsb: pallas::Base| y_lsb == pallas::Base::one(); let point = self - .gd_x - .zip(self.gd_y_lsb) - .zip(self.pkd_x.zip(self.pkd_y_lsb)) + .g_d + .zip(self.pk_d) .zip(self.rho.zip(self.psi)) - .map(|(((gd_x, gd_y_lsb), (pkd_x, pkd_y_lsb)), (rho, psi))| { - domain - .commit( - iter::empty() - .chain( - gd_x.to_le_bits().iter().by_vals().take(L_ORCHARD_BASE), - ) - .chain(Some(lsb(gd_y_lsb))) - .chain( - pkd_x - .to_le_bits() - .iter() - .by_vals() - .take(L_ORCHARD_BASE), - ) - .chain(Some(lsb(pkd_y_lsb))) - .chain(value.to_le_bits().iter().by_vals().take(L_VALUE)) - .chain( - rho.to_le_bits().iter().by_vals().take(L_ORCHARD_BASE), - ) - .chain( - psi.to_le_bits().iter().by_vals().take(L_ORCHARD_BASE), - ), - &rcm, - ) - .unwrap() - .to_affine() + .zip(self.asset) + .map(|(((g_d, pk_d), (rho, psi)), asset)| { + NoteCommitment::derive( + g_d.to_bytes(), + pk_d.to_bytes(), + value, + asset, + rho, + psi, + NoteCommitTrapdoor(rcm), + ) + .unwrap() + .inner() + .to_affine() }); NonIdentityPoint::new(ecc_chip, layouter.namespace(|| "witness cm"), point)? }; @@ -2283,74 +2543,132 @@ mod tests { } } + fn affine_point_from_coordinates(x_coord: pallas::Base, y_lsb: pallas::Base) -> EpAffine { + // Calculate y = (x^3 + 5).sqrt() + let mut y = (x_coord.square() * x_coord + pallas::Affine::b()) + .sqrt() + .unwrap(); + if bool::from(y.is_odd() ^ y_lsb.is_odd()) { + y = -y; + } + pallas::Affine::from_xy(x_coord, y).unwrap() + } + let two_pow_254 = pallas::Base::from_u128(1 << 127).square(); + let mut rng = OsRng; + let random_asset = AssetBase::random(&mut rng); + // Test different values of `ak`, `nk` - let circuits = [ + let mut circuits = vec![]; + for asset in [random_asset, AssetBase::native()] { // `gd_x` = -1, `pkd_x` = -1 (these have to be x-coordinates of curve points) // `rho` = 0, `psi` = 0 - MyCircuit { - gd_x: Value::known(-pallas::Base::one()), - gd_y_lsb: Value::known(pallas::Base::one()), - pkd_x: Value::known(-pallas::Base::one()), - pkd_y_lsb: Value::known(pallas::Base::one()), + circuits.push(MyCircuit { + g_d: Value::known(affine_point_from_coordinates( + -pallas::Base::one(), + pallas::Base::one(), + )), + pk_d: Value::known(affine_point_from_coordinates( + -pallas::Base::one(), + pallas::Base::one(), + )), rho: Value::known(pallas::Base::zero()), psi: Value::known(pallas::Base::zero()), - }, + asset: Value::known(asset), + }); // `rho` = T_Q - 1, `psi` = T_Q - 1 - MyCircuit { - gd_x: Value::known(-pallas::Base::one()), - gd_y_lsb: Value::known(pallas::Base::zero()), - pkd_x: Value::known(-pallas::Base::one()), - pkd_y_lsb: Value::known(pallas::Base::zero()), + circuits.push(MyCircuit { + g_d: Value::known(affine_point_from_coordinates( + -pallas::Base::one(), + pallas::Base::zero(), + )), + pk_d: Value::known(affine_point_from_coordinates( + -pallas::Base::one(), + pallas::Base::zero(), + )), rho: Value::known(pallas::Base::from_u128(T_Q - 1)), psi: Value::known(pallas::Base::from_u128(T_Q - 1)), - }, + asset: Value::known(asset), + }); // `rho` = T_Q, `psi` = T_Q - MyCircuit { - gd_x: Value::known(-pallas::Base::one()), - gd_y_lsb: Value::known(pallas::Base::one()), - pkd_x: Value::known(-pallas::Base::one()), - pkd_y_lsb: Value::known(pallas::Base::zero()), + circuits.push(MyCircuit { + g_d: Value::known(affine_point_from_coordinates( + -pallas::Base::one(), + pallas::Base::one(), + )), + pk_d: Value::known(affine_point_from_coordinates( + -pallas::Base::one(), + pallas::Base::zero(), + )), rho: Value::known(pallas::Base::from_u128(T_Q)), psi: Value::known(pallas::Base::from_u128(T_Q)), - }, + asset: Value::known(asset), + }); // `rho` = 2^127 - 1, `psi` = 2^127 - 1 - MyCircuit { - gd_x: Value::known(-pallas::Base::one()), - gd_y_lsb: Value::known(pallas::Base::zero()), - pkd_x: Value::known(-pallas::Base::one()), - pkd_y_lsb: Value::known(pallas::Base::one()), + circuits.push(MyCircuit { + g_d: Value::known(affine_point_from_coordinates( + -pallas::Base::one(), + pallas::Base::zero(), + )), + pk_d: Value::known(affine_point_from_coordinates( + -pallas::Base::one(), + pallas::Base::one(), + )), rho: Value::known(pallas::Base::from_u128((1 << 127) - 1)), psi: Value::known(pallas::Base::from_u128((1 << 127) - 1)), - }, + asset: Value::known(asset), + }); // `rho` = 2^127, `psi` = 2^127 - MyCircuit { - gd_x: Value::known(-pallas::Base::one()), - gd_y_lsb: Value::known(pallas::Base::zero()), - pkd_x: Value::known(-pallas::Base::one()), - pkd_y_lsb: Value::known(pallas::Base::zero()), + circuits.push(MyCircuit { + g_d: Value::known(affine_point_from_coordinates( + -pallas::Base::one(), + pallas::Base::zero(), + )), + pk_d: Value::known(affine_point_from_coordinates( + -pallas::Base::one(), + pallas::Base::zero(), + )), rho: Value::known(pallas::Base::from_u128(1 << 127)), psi: Value::known(pallas::Base::from_u128(1 << 127)), - }, + asset: Value::known(asset), + }); // `rho` = 2^254 - 1, `psi` = 2^254 - 1 - MyCircuit { - gd_x: Value::known(-pallas::Base::one()), - gd_y_lsb: Value::known(pallas::Base::one()), - pkd_x: Value::known(-pallas::Base::one()), - pkd_y_lsb: Value::known(pallas::Base::one()), + circuits.push(MyCircuit { + g_d: Value::known(affine_point_from_coordinates( + -pallas::Base::one(), + pallas::Base::one(), + )), + pk_d: Value::known(affine_point_from_coordinates( + -pallas::Base::one(), + pallas::Base::one(), + )), rho: Value::known(two_pow_254 - pallas::Base::one()), psi: Value::known(two_pow_254 - pallas::Base::one()), - }, + asset: Value::known(asset), + }); // `rho` = 2^254, `psi` = 2^254 - MyCircuit { - gd_x: Value::known(-pallas::Base::one()), - gd_y_lsb: Value::known(pallas::Base::one()), - pkd_x: Value::known(-pallas::Base::one()), - pkd_y_lsb: Value::known(pallas::Base::zero()), + circuits.push(MyCircuit { + g_d: Value::known(affine_point_from_coordinates( + -pallas::Base::one(), + pallas::Base::one(), + )), + pk_d: Value::known(affine_point_from_coordinates( + -pallas::Base::one(), + pallas::Base::zero(), + )), rho: Value::known(two_pow_254), psi: Value::known(two_pow_254), - }, - ]; + asset: Value::known(asset), + }); + // Random values + circuits.push(MyCircuit { + g_d: Value::known(pallas::Point::random(rng).to_affine()), + pk_d: Value::known(pallas::Point::random(rng).to_affine()), + rho: Value::known(pallas::Base::random(&mut rng)), + psi: Value::known(pallas::Base::random(&mut rng)), + asset: Value::known(asset), + }); + } for circuit in circuits.iter() { let prover = MockProver::::run(11, circuit, vec![]).unwrap(); diff --git a/src/circuit/value_commit_orchard.rs b/src/circuit/value_commit_orchard.rs index 078e9378f..4e4dfa36d 100644 --- a/src/circuit/value_commit_orchard.rs +++ b/src/circuit/value_commit_orchard.rs @@ -95,7 +95,6 @@ mod tests { circuit::gadget::{assign_free_advice, value_commit_orchard}, circuit::K, constants::{OrchardCommitDomains, OrchardFixedBases, OrchardHashDomains}, - keys::{IssuanceAuthorizingKey, IssuanceValidatingKey, SpendingKey}, note::AssetBase, value::{NoteValue, ValueCommitTrapdoor, ValueCommitment}, }; @@ -299,13 +298,7 @@ mod tests { let mut circuits = vec![]; let mut instances = vec![]; let native_asset = AssetBase::native(); - let random_asset = { - let sk = SpendingKey::random(&mut rng); - let isk = IssuanceAuthorizingKey::from(&sk); - let ik = IssuanceValidatingKey::from(&isk); - let asset_descr = "zsa_asset"; - AssetBase::derive(&ik, asset_descr) - }; + let random_asset = AssetBase::random(&mut rng); for split_flag in [false, true] { for asset in [native_asset, random_asset] { let v_old = NoteValue::from_raw(rng.next_u64()); diff --git a/src/circuit_description b/src/circuit_description index 212da733f..247c89889 100644 --- a/src/circuit_description +++ b/src/circuit_description @@ -2,46 +2,30 @@ PinnedVerificationKey { base_modulus: "0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000001", scalar_modulus: "0x40000000000000000000000000000000224698fc094cf91b992d30ed00000001", domain: PinnedEvaluationDomain { - k: 11, - extended_k: 14, - omega: 0x181b50ad5f32119e31cbd395426d600b7a9b88bcaaa1c24eef28545aada17813, + k: 12, + extended_k: 15, + omega: 0x028961bbd9c63b7bd7c75f72e02a9727d14d99e7985184470d34cd1b8ef03001, }, cs: PinnedConstraintSystem { num_fixed_columns: 30, num_advice_columns: 10, num_instance_columns: 1, - num_selectors: 56, + num_selectors: 59, gates: [ Product( Product( Product( Product( - Product( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - Negated( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - ), + Fixed { + query_index: 18, + column_index: 18, + rotation: Rotation( + 0, ), - ), + }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -56,7 +40,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -71,7 +55,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -112,32 +96,16 @@ PinnedVerificationKey { Product( Product( Product( - Product( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - Negated( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - ), + Fixed { + query_index: 18, + column_index: 18, + rotation: Rotation( + 0, ), - ), + }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -152,7 +120,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -167,7 +135,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -239,32 +207,16 @@ PinnedVerificationKey { Product( Product( Product( - Product( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - Negated( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - ), + Fixed { + query_index: 18, + column_index: 18, + rotation: Rotation( + 0, ), - ), + }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -279,7 +231,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -294,7 +246,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -339,32 +291,16 @@ PinnedVerificationKey { Product( Product( Product( - Product( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - Negated( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - ), + Fixed { + query_index: 18, + column_index: 18, + rotation: Rotation( + 0, ), - ), + }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -379,7 +315,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -394,7 +330,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -435,32 +371,16 @@ PinnedVerificationKey { Product( Product( Product( - Product( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - Negated( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - ), + Fixed { + query_index: 18, + column_index: 18, + rotation: Rotation( + 0, ), - ), + }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -475,7 +395,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -490,7 +410,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -531,32 +451,16 @@ PinnedVerificationKey { Product( Product( Product( - Product( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - Negated( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - ), + Fixed { + query_index: 18, + column_index: 18, + rotation: Rotation( + 0, ), - ), + }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -571,7 +475,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -586,7 +490,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -638,32 +542,16 @@ PinnedVerificationKey { Product( Product( Product( - Product( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - ), + Fixed { + query_index: 18, + column_index: 18, + rotation: Rotation( + 0, ), - ), + }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -678,7 +566,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -693,7 +581,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -706,31 +594,27 @@ PinnedVerificationKey { ), ), ), - Sum( + Product( + Advice { + query_index: 11, + column_index: 1, + rotation: Rotation( + 1, + ), + }, Sum( - Advice { - query_index: 7, - column_index: 7, - rotation: Rotation( - 0, - ), - }, - Advice { - query_index: 8, - column_index: 8, - rotation: Rotation( - 0, - ), - }, - ), - Negated( - Advice { - query_index: 6, - column_index: 6, - rotation: Rotation( - 0, - ), - }, + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Advice { + query_index: 11, + column_index: 1, + rotation: Rotation( + 1, + ), + }, + ), ), ), ), @@ -738,29 +622,13 @@ PinnedVerificationKey { Product( Product( Product( - Product( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - ), + Fixed { + query_index: 18, + column_index: 18, + rotation: Rotation( + 0, ), - ), + }, Sum( Constant( 0x0000000000000000000000000000000000000000000000000000000000000002, @@ -778,7 +646,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -793,7 +661,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -806,34 +674,27 @@ PinnedVerificationKey { ), ), ), - Sum( - Product( - Scaled( - Advice { - query_index: 12, - column_index: 9, - rotation: Rotation( - -1, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000400, + Product( + Advice { + query_index: 11, + column_index: 1, + rotation: Rotation( + 1, ), + }, + Sum( Advice { - query_index: 11, - column_index: 9, + query_index: 12, + column_index: 2, rotation: Rotation( 1, ), }, - ), - Negated( - Advice { - query_index: 9, - column_index: 9, - rotation: Rotation( - 0, + Negated( + Constant( + 0x2f70597a8e3d0f42f7a86a704f9bb232fe04a37f2b5a7c8c2aa7bd6e3af94367, ), - }, + ), ), ), ), @@ -841,48 +702,16 @@ PinnedVerificationKey { Product( Product( Product( - Product( - Product( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - Negated( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - ), + Fixed { + query_index: 18, + column_index: 18, + rotation: Rotation( + 0, ), - ), + }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -897,7 +726,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -910,53 +739,79 @@ PinnedVerificationKey { ), ), ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + Negated( + Fixed { + query_index: 18, + column_index: 18, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Product( Advice { - query_index: 0, - column_index: 0, + query_index: 11, + column_index: 1, rotation: Rotation( - 0, + 1, ), }, - ), - Sum( Sum( + Advice { + query_index: 13, + column_index: 3, + rotation: Rotation( + 1, + ), + }, + Negated( + Constant( + 0x2d0e5169311919af1e917f63136d6c421d9ea766a7ffe3dba413c47eaf5af28e, + ), + ), + ), + ), + ), + Product( + Product( + Product( Product( - Advice { - query_index: 1, - column_index: 1, + Fixed { + query_index: 18, + column_index: 18, rotation: Rotation( 0, ), }, - Advice { - query_index: 1, - column_index: 1, - rotation: Rotation( - 0, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, ), - }, - ), - Negated( - Product( - Product( - Advice { - query_index: 0, - column_index: 0, - rotation: Rotation( - 0, - ), - }, - Advice { - query_index: 0, - column_index: 0, + Negated( + Fixed { + query_index: 18, + column_index: 18, rotation: Rotation( 0, ), }, ), - Advice { - query_index: 0, - column_index: 0, + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000003, + ), + Negated( + Fixed { + query_index: 18, + column_index: 18, rotation: Rotation( 0, ), @@ -964,145 +819,98 @@ PinnedVerificationKey { ), ), ), - Negated( + Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + Negated( + Fixed { + query_index: 18, + column_index: 18, + rotation: Rotation( + 0, + ), + }, ), ), ), - ), - Product( Product( Product( - Product( + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Advice { + query_index: 11, + column_index: 1, + rotation: Rotation( + 1, + ), + }, + ), + ), + Sum( Product( - Product( - Fixed { - query_index: 18, - column_index: 18, + Sum( + Advice { + query_index: 12, + column_index: 2, rotation: Rotation( - 0, + 1, ), }, - Sum( + Negated( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, + 0x2f70597a8e3d0f42f7a86a704f9bb232fe04a37f2b5a7c8c2aa7bd6e3af94367, ), ), ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - Negated( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, + Advice { + query_index: 14, + column_index: 4, + rotation: Rotation( + 1, ), - ), + }, ), - Sum( + Negated( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, - ), - Negated( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, + 0x0000000000000000000000000000000000000000000000000000000000000001, ), ), ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, - ), - Negated( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - ), - ), ), - Advice { - query_index: 1, - column_index: 1, - rotation: Rotation( - 0, - ), - }, - ), - Sum( Sum( Product( - Advice { - query_index: 1, - column_index: 1, - rotation: Rotation( - 0, + Sum( + Advice { + query_index: 13, + column_index: 3, + rotation: Rotation( + 1, + ), + }, + Negated( + Constant( + 0x2d0e5169311919af1e917f63136d6c421d9ea766a7ffe3dba413c47eaf5af28e, + ), ), - }, + ), Advice { - query_index: 1, - column_index: 1, + query_index: 15, + column_index: 5, rotation: Rotation( - 0, + 1, ), }, ), Negated( - Product( - Product( - Advice { - query_index: 0, - column_index: 0, - rotation: Rotation( - 0, - ), - }, - Advice { - query_index: 0, - column_index: 0, - rotation: Rotation( - 0, - ), - }, - ), - Advice { - query_index: 0, - column_index: 0, - rotation: Rotation( - 0, - ), - }, + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, ), ), ), - Negated( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, - ), - ), ), ), Product( @@ -1110,20 +918,20 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 19, - column_index: 19, + query_index: 18, + column_index: 18, rotation: Rotation( 0, ), }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000001, ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 18, + column_index: 18, rotation: Rotation( 0, ), @@ -1137,8 +945,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 18, + column_index: 18, rotation: Rotation( 0, ), @@ -1152,8 +960,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 18, + column_index: 18, rotation: Rotation( 0, ), @@ -1163,54 +971,29 @@ PinnedVerificationKey { ), Sum( Sum( - Product( - Advice { - query_index: 1, - column_index: 1, - rotation: Rotation( - 0, - ), - }, - Advice { - query_index: 1, - column_index: 1, - rotation: Rotation( - 0, - ), - }, - ), - Negated( - Product( - Product( - Advice { - query_index: 0, - column_index: 0, - rotation: Rotation( - 0, - ), - }, - Advice { - query_index: 0, - column_index: 0, - rotation: Rotation( - 0, - ), - }, - ), - Advice { - query_index: 0, - column_index: 0, - rotation: Rotation( - 0, - ), - }, + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, ), - ), + }, + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, + ), + }, ), Negated( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, - ), + Advice { + query_index: 6, + column_index: 6, + rotation: Rotation( + 0, + ), + }, ), ), ), @@ -1219,8 +1002,8 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 19, - column_index: 19, + query_index: 18, + column_index: 18, rotation: Rotation( 0, ), @@ -1231,8 +1014,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 18, + column_index: 18, rotation: Rotation( 0, ), @@ -1242,12 +1025,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 18, + column_index: 18, rotation: Rotation( 0, ), @@ -1261,8 +1044,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 18, + column_index: 18, rotation: Rotation( 0, ), @@ -1272,44 +1055,70 @@ PinnedVerificationKey { ), Sum( Product( - Product( - Sum( - Sum( - Advice { - query_index: 13, - column_index: 2, - rotation: Rotation( - 1, - ), - }, - Advice { - query_index: 2, - column_index: 2, - rotation: Rotation( - 0, - ), - }, + Scaled( + Advice { + query_index: 17, + column_index: 9, + rotation: Rotation( + -1, ), - Advice { - query_index: 0, - column_index: 0, + }, + 0x0000000000000000000000000000000000000000000000000000000000000400, + ), + Advice { + query_index: 16, + column_index: 9, + rotation: Rotation( + 1, + ), + }, + ), + Negated( + Advice { + query_index: 9, + column_index: 9, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Product( + Product( + Product( + Product( + Product( + Fixed { + query_index: 18, + column_index: 18, rotation: Rotation( 0, ), }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 18, + column_index: 18, + rotation: Rotation( + 0, + ), + }, + ), + ), ), Sum( - Advice { - query_index: 0, - column_index: 0, - rotation: Rotation( - 0, - ), - }, + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), Negated( - Advice { - query_index: 2, - column_index: 2, + Fixed { + query_index: 18, + column_index: 18, rotation: Rotation( 0, ), @@ -1318,17 +1127,67 @@ PinnedVerificationKey { ), ), Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000003, + ), + Negated( + Fixed { + query_index: 18, + column_index: 18, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Advice { + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, + ), + }, + ), + Sum( + Sum( + Product( Advice { - query_index: 0, - column_index: 0, + query_index: 1, + column_index: 1, rotation: Rotation( 0, ), }, - Negated( + Advice { + query_index: 1, + column_index: 1, + rotation: Rotation( + 0, + ), + }, + ), + Negated( + Product( + Product( + Advice { + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, + ), + }, + Advice { + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, + ), + }, + ), Advice { - query_index: 2, - column_index: 2, + query_index: 0, + column_index: 0, rotation: Rotation( 0, ), @@ -1337,45 +1196,128 @@ PinnedVerificationKey { ), ), Negated( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000005, + ), + ), + ), + ), + Product( + Product( + Product( Product( - Sum( - Advice { - query_index: 1, - column_index: 1, + Product( + Fixed { + query_index: 18, + column_index: 18, rotation: Rotation( 0, ), }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 18, + column_index: 18, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), Negated( - Advice { - query_index: 3, - column_index: 3, + Fixed { + query_index: 18, + column_index: 18, rotation: Rotation( 0, ), }, ), ), - Sum( - Advice { - query_index: 1, - column_index: 1, + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000003, + ), + Negated( + Fixed { + query_index: 18, + column_index: 18, rotation: Rotation( 0, ), }, - Negated( + ), + ), + ), + Advice { + query_index: 1, + column_index: 1, + rotation: Rotation( + 0, + ), + }, + ), + Sum( + Sum( + Product( + Advice { + query_index: 1, + column_index: 1, + rotation: Rotation( + 0, + ), + }, + Advice { + query_index: 1, + column_index: 1, + rotation: Rotation( + 0, + ), + }, + ), + Negated( + Product( + Product( Advice { - query_index: 3, - column_index: 3, + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, + ), + }, + Advice { + query_index: 0, + column_index: 0, rotation: Rotation( 0, ), }, ), + Advice { + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, + ), + }, ), ), ), + Negated( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000005, + ), + ), ), ), Product( @@ -1391,7 +1333,7 @@ PinnedVerificationKey { }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -1435,82 +1377,56 @@ PinnedVerificationKey { ), ), Sum( - Product( - Sum( - Advice { - query_index: 14, - column_index: 3, - rotation: Rotation( - 1, - ), - }, + Sum( + Product( Advice { - query_index: 3, - column_index: 3, + query_index: 1, + column_index: 1, rotation: Rotation( 0, ), }, - ), - Sum( Advice { - query_index: 0, - column_index: 0, + query_index: 1, + column_index: 1, rotation: Rotation( 0, ), }, - Negated( - Advice { - query_index: 2, - column_index: 2, - rotation: Rotation( - 0, - ), - }, - ), ), - ), - Negated( - Product( - Sum( - Advice { - query_index: 1, - column_index: 1, - rotation: Rotation( - 0, - ), - }, - Negated( + Negated( + Product( + Product( Advice { - query_index: 3, - column_index: 3, + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, + ), + }, + Advice { + query_index: 0, + column_index: 0, rotation: Rotation( 0, ), }, ), - ), - Sum( Advice { - query_index: 2, - column_index: 2, + query_index: 0, + column_index: 0, rotation: Rotation( 0, ), }, - Negated( - Advice { - query_index: 13, - column_index: 2, - rotation: Rotation( - 1, - ), - }, - ), ), ), ), + Negated( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000005, + ), + ), ), ), Product( @@ -1541,7 +1457,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -1569,16 +1485,54 @@ PinnedVerificationKey { ), ), ), - Product( - Sum( - Advice { - query_index: 2, - column_index: 2, - rotation: Rotation( - 0, + Sum( + Product( + Product( + Sum( + Sum( + Advice { + query_index: 12, + column_index: 2, + rotation: Rotation( + 1, + ), + }, + Advice { + query_index: 2, + column_index: 2, + rotation: Rotation( + 0, + ), + }, + ), + Advice { + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, + ), + }, ), - }, - Negated( + Sum( + Advice { + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, + ), + }, + Negated( + Advice { + query_index: 2, + column_index: 2, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( Advice { query_index: 0, column_index: 0, @@ -1586,49 +1540,49 @@ PinnedVerificationKey { 0, ), }, + Negated( + Advice { + query_index: 2, + column_index: 2, + rotation: Rotation( + 0, + ), + }, + ), ), ), - Sum( + Negated( Product( Sum( Advice { - query_index: 2, - column_index: 2, + query_index: 1, + column_index: 1, rotation: Rotation( 0, ), }, Negated( Advice { - query_index: 0, - column_index: 0, + query_index: 3, + column_index: 3, rotation: Rotation( 0, ), }, ), ), - Advice { - query_index: 4, - column_index: 4, - rotation: Rotation( - 0, - ), - }, - ), - Negated( Sum( Advice { - query_index: 3, - column_index: 3, + query_index: 1, + column_index: 1, rotation: Rotation( 0, ), }, Negated( Advice { - query_index: 1, - column_index: 1, + query_index: 3, + column_index: 3, rotation: Rotation( 0, ), @@ -1667,7 +1621,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -1695,34 +1649,36 @@ PinnedVerificationKey { ), ), ), - Product( - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + Sum( + Product( + Sum( + Advice { + query_index: 13, + column_index: 3, + rotation: Rotation( + 1, + ), + }, + Advice { + query_index: 3, + column_index: 3, + rotation: Rotation( + 0, + ), + }, ), - Negated( - Product( - Sum( - Advice { - query_index: 2, - column_index: 2, - rotation: Rotation( - 0, - ), - }, - Negated( - Advice { - query_index: 0, - column_index: 0, - rotation: Rotation( - 0, - ), - }, - ), + Sum( + Advice { + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, ), + }, + Negated( Advice { - query_index: 5, - column_index: 5, + query_index: 2, + column_index: 2, rotation: Rotation( 0, ), @@ -1730,12 +1686,9 @@ PinnedVerificationKey { ), ), ), - Sum( + Negated( Product( - Product( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), + Sum( Advice { query_index: 1, column_index: 1, @@ -1743,33 +1696,30 @@ PinnedVerificationKey { 0, ), }, - ), - Advice { - query_index: 4, - column_index: 4, - rotation: Rotation( - 0, - ), - }, - ), - Negated( - Product( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, - ), - Product( + Negated( Advice { - query_index: 0, - column_index: 0, + query_index: 3, + column_index: 3, rotation: Rotation( 0, ), }, + ), + ), + Sum( + Advice { + query_index: 2, + column_index: 2, + rotation: Rotation( + 0, + ), + }, + Negated( Advice { - query_index: 0, - column_index: 0, + query_index: 12, + column_index: 2, rotation: Rotation( - 0, + 1, ), }, ), @@ -1835,61 +1785,34 @@ PinnedVerificationKey { ), ), Product( - Product( - Product( - Advice { - query_index: 0, - column_index: 0, - rotation: Rotation( - 0, - ), - }, - Advice { - query_index: 2, - column_index: 2, - rotation: Rotation( - 0, - ), - }, - ), - Sum( + Sum( + Advice { + query_index: 2, + column_index: 2, + rotation: Rotation( + 0, + ), + }, + Negated( Advice { - query_index: 2, - column_index: 2, + query_index: 0, + column_index: 0, rotation: Rotation( 0, ), }, - Negated( + ), + ), + Sum( + Product( + Sum( Advice { - query_index: 0, - column_index: 0, + query_index: 2, + column_index: 2, rotation: Rotation( 0, ), }, - ), - ), - ), - Sum( - Sum( - Sum( - Product( - Advice { - query_index: 4, - column_index: 4, - rotation: Rotation( - 0, - ), - }, - Advice { - query_index: 4, - column_index: 4, - rotation: Rotation( - 0, - ), - }, - ), Negated( Advice { query_index: 0, @@ -1900,24 +1823,33 @@ PinnedVerificationKey { }, ), ), - Negated( + Advice { + query_index: 4, + column_index: 4, + rotation: Rotation( + 0, + ), + }, + ), + Negated( + Sum( Advice { - query_index: 2, - column_index: 2, + query_index: 3, + column_index: 3, rotation: Rotation( 0, ), }, - ), - ), - Negated( - Advice { - query_index: 13, - column_index: 2, - rotation: Rotation( - 1, + Negated( + Advice { + query_index: 1, + column_index: 1, + rotation: Rotation( + 0, + ), + }, ), - }, + ), ), ), ), @@ -1979,72 +1911,46 @@ PinnedVerificationKey { ), ), Product( - Product( - Product( - Advice { - query_index: 0, - column_index: 0, - rotation: Rotation( - 0, - ), - }, - Advice { - query_index: 2, - column_index: 2, - rotation: Rotation( - 0, - ), - }, - ), - Sum( - Advice { - query_index: 2, - column_index: 2, - rotation: Rotation( - 0, - ), - }, - Negated( - Advice { - query_index: 0, - column_index: 0, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), Sum( - Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( Product( - Advice { - query_index: 4, - column_index: 4, - rotation: Rotation( - 0, - ), - }, Sum( Advice { - query_index: 0, - column_index: 0, + query_index: 2, + column_index: 2, rotation: Rotation( 0, ), }, Negated( Advice { - query_index: 13, - column_index: 2, + query_index: 0, + column_index: 0, rotation: Rotation( - 1, + 0, ), }, ), ), + Advice { + query_index: 5, + column_index: 5, + rotation: Rotation( + 0, + ), + }, ), - Negated( + ), + ), + Sum( + Product( + Product( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), Advice { query_index: 1, column_index: 1, @@ -2053,16 +1959,37 @@ PinnedVerificationKey { ), }, ), - ), - Negated( Advice { - query_index: 14, - column_index: 3, + query_index: 4, + column_index: 4, rotation: Rotation( - 1, + 0, ), }, ), + Negated( + Product( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000003, + ), + Product( + Advice { + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, + ), + }, + Advice { + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), ), ), ), @@ -2142,19 +2069,21 @@ PinnedVerificationKey { ), Sum( Advice { - query_index: 3, - column_index: 3, - rotation: Rotation( - 0, - ), - }, - Advice { - query_index: 1, - column_index: 1, + query_index: 2, + column_index: 2, rotation: Rotation( 0, ), }, + Negated( + Advice { + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, + ), + }, + ), ), ), Sum( @@ -2198,7 +2127,7 @@ PinnedVerificationKey { ), Negated( Advice { - query_index: 13, + query_index: 12, column_index: 2, rotation: Rotation( 1, @@ -2284,19 +2213,21 @@ PinnedVerificationKey { ), Sum( Advice { - query_index: 3, - column_index: 3, - rotation: Rotation( - 0, - ), - }, - Advice { - query_index: 1, - column_index: 1, + query_index: 2, + column_index: 2, rotation: Rotation( 0, ), }, + Negated( + Advice { + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, + ), + }, + ), ), ), Sum( @@ -2319,7 +2250,7 @@ PinnedVerificationKey { }, Negated( Advice { - query_index: 13, + query_index: 12, column_index: 2, rotation: Rotation( 1, @@ -2340,7 +2271,7 @@ PinnedVerificationKey { ), Negated( Advice { - query_index: 14, + query_index: 13, column_index: 3, rotation: Rotation( 1, @@ -2407,22 +2338,125 @@ PinnedVerificationKey { ), ), Product( - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + Product( + Product( + Advice { + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, + ), + }, + Advice { + query_index: 2, + column_index: 2, + rotation: Rotation( + 0, + ), + }, ), - Negated( - Product( + Sum( + Advice { + query_index: 3, + column_index: 3, + rotation: Rotation( + 0, + ), + }, + Advice { + query_index: 1, + column_index: 1, + rotation: Rotation( + 0, + ), + }, + ), + ), + Sum( + Sum( + Sum( + Product( + Advice { + query_index: 4, + column_index: 4, + rotation: Rotation( + 0, + ), + }, + Advice { + query_index: 4, + column_index: 4, + rotation: Rotation( + 0, + ), + }, + ), + Negated( + Advice { + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, + ), + }, + ), + ), + Negated( Advice { - query_index: 0, - column_index: 0, + query_index: 2, + column_index: 2, rotation: Rotation( 0, ), }, - Advice { - query_index: 6, - column_index: 6, + ), + ), + Negated( + Advice { + query_index: 12, + column_index: 2, + rotation: Rotation( + 1, + ), + }, + ), + ), + ), + ), + Product( + Product( + Product( + Product( + Fixed { + query_index: 19, + column_index: 19, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 19, + column_index: 19, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 19, + column_index: 19, rotation: Rotation( 0, ), @@ -2431,14 +2465,30 @@ PinnedVerificationKey { ), ), Sum( - Advice { - query_index: 13, - column_index: 2, - rotation: Rotation( - 1, - ), - }, + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), Negated( + Fixed { + query_index: 19, + column_index: 19, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Product( + Product( + Product( + Advice { + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, + ), + }, Advice { query_index: 2, column_index: 2, @@ -2447,6 +2497,71 @@ PinnedVerificationKey { ), }, ), + Sum( + Advice { + query_index: 3, + column_index: 3, + rotation: Rotation( + 0, + ), + }, + Advice { + query_index: 1, + column_index: 1, + rotation: Rotation( + 0, + ), + }, + ), + ), + Sum( + Sum( + Product( + Advice { + query_index: 4, + column_index: 4, + rotation: Rotation( + 0, + ), + }, + Sum( + Advice { + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, + ), + }, + Negated( + Advice { + query_index: 12, + column_index: 2, + rotation: Rotation( + 1, + ), + }, + ), + ), + ), + Negated( + Advice { + query_index: 1, + column_index: 1, + rotation: Rotation( + 0, + ), + }, + ), + ), + Negated( + Advice { + query_index: 13, + column_index: 3, + rotation: Rotation( + 1, + ), + }, + ), ), ), ), @@ -2532,16 +2647,16 @@ PinnedVerificationKey { ), Sum( Advice { - query_index: 14, - column_index: 3, + query_index: 12, + column_index: 2, rotation: Rotation( 1, ), }, Negated( Advice { - query_index: 3, - column_index: 3, + query_index: 2, + column_index: 2, rotation: Rotation( 0, ), @@ -2614,15 +2729,15 @@ PinnedVerificationKey { Negated( Product( Advice { - query_index: 2, - column_index: 2, + query_index: 0, + column_index: 0, rotation: Rotation( 0, ), }, Advice { - query_index: 7, - column_index: 7, + query_index: 6, + column_index: 6, rotation: Rotation( 0, ), @@ -2633,15 +2748,15 @@ PinnedVerificationKey { Sum( Advice { query_index: 13, - column_index: 2, + column_index: 3, rotation: Rotation( 1, ), }, Negated( Advice { - query_index: 0, - column_index: 0, + query_index: 3, + column_index: 3, rotation: Rotation( 0, ), @@ -2732,16 +2847,16 @@ PinnedVerificationKey { ), Sum( Advice { - query_index: 14, - column_index: 3, + query_index: 12, + column_index: 2, rotation: Rotation( 1, ), }, Negated( Advice { - query_index: 1, - column_index: 1, + query_index: 0, + column_index: 0, rotation: Rotation( 0, ), @@ -2808,17 +2923,117 @@ PinnedVerificationKey { ), Product( Sum( - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Product( + Advice { + query_index: 2, + column_index: 2, + rotation: Rotation( + 0, + ), + }, + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, ), - Negated( - Product( - Sum( - Advice { - query_index: 2, - column_index: 2, - rotation: Rotation( + ), + ), + Sum( + Advice { + query_index: 13, + column_index: 3, + rotation: Rotation( + 1, + ), + }, + Negated( + Advice { + query_index: 1, + column_index: 1, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + ), + Product( + Product( + Product( + Product( + Fixed { + query_index: 19, + column_index: 19, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 19, + column_index: 19, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 19, + column_index: 19, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + Negated( + Fixed { + query_index: 19, + column_index: 19, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Product( + Sum( + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Product( + Sum( + Advice { + query_index: 2, + column_index: 2, + rotation: Rotation( 0, ), }, @@ -2871,7 +3086,7 @@ PinnedVerificationKey { ), ), Advice { - query_index: 13, + query_index: 12, column_index: 2, rotation: Rotation( 1, @@ -3000,7 +3215,7 @@ PinnedVerificationKey { ), ), Advice { - query_index: 14, + query_index: 13, column_index: 3, rotation: Rotation( 1, @@ -3012,37 +3227,21 @@ PinnedVerificationKey { Product( Product( Product( - Product( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Fixed { - query_index: 18, - column_index: 18, - rotation: Rotation( - 0, - ), - }, - ), + Fixed { + query_index: 19, + column_index: 19, + rotation: Rotation( + 0, ), - ), + }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000001, ), Negated( Fixed { - query_index: 18, - column_index: 18, + query_index: 19, + column_index: 19, rotation: Rotation( 0, ), @@ -3052,12 +3251,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { - query_index: 18, - column_index: 18, + query_index: 19, + column_index: 19, rotation: Rotation( 0, ), @@ -3067,12 +3266,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 18, - column_index: 18, + query_index: 19, + column_index: 19, rotation: Rotation( 0, ), @@ -3093,14 +3292,14 @@ PinnedVerificationKey { Product( Sum( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, ), }, Advice { - query_index: 16, + query_index: 15, column_index: 5, rotation: Rotation( 1, @@ -3109,7 +3308,7 @@ PinnedVerificationKey { ), Sum( Advice { - query_index: 14, + query_index: 13, column_index: 3, rotation: Rotation( 1, @@ -3120,14 +3319,14 @@ PinnedVerificationKey { Sum( Product( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, ), }, Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -3136,7 +3335,7 @@ PinnedVerificationKey { ), Negated( Advice { - query_index: 14, + query_index: 13, column_index: 3, rotation: Rotation( 1, @@ -3166,21 +3365,53 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 19, - column_index: 19, - rotation: Rotation( - 0, + Product( + Product( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), + ), ), - }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000003, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -3190,12 +3421,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -3205,12 +3436,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -3241,51 +3472,83 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 19, - column_index: 19, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( + Product( + Product( Fixed { - query_index: 19, - column_index: 19, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - Negated( - Fixed { - query_index: 19, - column_index: 19, - rotation: Rotation( - 0, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000003, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000005, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, ), ), ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -3303,7 +3566,7 @@ PinnedVerificationKey { }, Negated( Advice { - query_index: 17, + query_index: 11, column_index: 1, rotation: Rotation( 1, @@ -3316,21 +3579,53 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 19, - column_index: 19, - rotation: Rotation( - 0, + Product( + Product( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), + ), ), - }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000003, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -3340,12 +3635,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -3355,12 +3650,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -3380,7 +3675,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 12, + query_index: 17, column_index: 9, rotation: Rotation( -1, @@ -3406,7 +3701,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 12, + query_index: 17, column_index: 9, rotation: Rotation( -1, @@ -3424,21 +3719,53 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 19, - column_index: 19, - rotation: Rotation( - 0, + Product( + Product( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), + ), ), - }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000003, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -3448,12 +3775,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -3463,12 +3790,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -3592,7 +3919,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 12, + query_index: 17, column_index: 9, rotation: Rotation( -1, @@ -3624,21 +3951,53 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 19, - column_index: 19, - rotation: Rotation( - 0, + Product( + Product( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), + ), ), - }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000003, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -3648,12 +4007,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -3663,12 +4022,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -3697,7 +4056,7 @@ PinnedVerificationKey { ), Negated( Advice { - query_index: 14, + query_index: 13, column_index: 3, rotation: Rotation( 1, @@ -3761,36 +4120,68 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 19, - column_index: 19, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( + Product( + Product( Fixed { - query_index: 19, - column_index: 19, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), }, - ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000003, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), ), ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -3800,12 +4191,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 19, - column_index: 19, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -3833,7 +4224,7 @@ PinnedVerificationKey { }, Negated( Advice { - query_index: 14, + query_index: 13, column_index: 3, rotation: Rotation( 1, @@ -3920,14 +4311,14 @@ PinnedVerificationKey { Product( Sum( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, ), }, Advice { - query_index: 16, + query_index: 15, column_index: 5, rotation: Rotation( 1, @@ -3936,7 +4327,7 @@ PinnedVerificationKey { ), Sum( Advice { - query_index: 14, + query_index: 13, column_index: 3, rotation: Rotation( 1, @@ -3947,14 +4338,14 @@ PinnedVerificationKey { Sum( Product( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, ), }, Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -3963,7 +4354,7 @@ PinnedVerificationKey { ), Negated( Advice { - query_index: 14, + query_index: 13, column_index: 3, rotation: Rotation( 1, @@ -3994,16 +4385,32 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 20, - column_index: 20, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -4018,7 +4425,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -4033,7 +4440,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -4048,7 +4455,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { @@ -4073,7 +4480,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 12, + query_index: 17, column_index: 9, rotation: Rotation( -1, @@ -4099,7 +4506,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 12, + query_index: 17, column_index: 9, rotation: Rotation( -1, @@ -4118,16 +4525,32 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 20, - column_index: 20, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -4142,7 +4565,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -4157,7 +4580,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -4172,7 +4595,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { @@ -4301,7 +4724,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 12, + query_index: 17, column_index: 9, rotation: Rotation( -1, @@ -4334,16 +4757,32 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 20, - column_index: 20, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -4358,7 +4797,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -4373,7 +4812,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -4388,7 +4827,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { @@ -4422,7 +4861,7 @@ PinnedVerificationKey { ), Negated( Advice { - query_index: 14, + query_index: 13, column_index: 3, rotation: Rotation( 1, @@ -4487,16 +4926,32 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 20, - column_index: 20, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -4511,7 +4966,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -4526,7 +4981,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -4541,7 +4996,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { @@ -4574,7 +5029,7 @@ PinnedVerificationKey { }, Negated( Advice { - query_index: 14, + query_index: 13, column_index: 3, rotation: Rotation( 1, @@ -4658,7 +5113,7 @@ PinnedVerificationKey { ), Negated( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -4672,16 +5127,32 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 20, - column_index: 20, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -4696,7 +5167,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -4711,7 +5182,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -4726,7 +5197,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { @@ -4759,7 +5230,7 @@ PinnedVerificationKey { ), }, Advice { - query_index: 13, + query_index: 12, column_index: 2, rotation: Rotation( 1, @@ -4994,7 +5465,7 @@ PinnedVerificationKey { }, Negated( Advice { - query_index: 17, + query_index: 11, column_index: 1, rotation: Rotation( 1, @@ -5682,7 +6153,7 @@ PinnedVerificationKey { ), }, Advice { - query_index: 13, + query_index: 12, column_index: 2, rotation: Rotation( 1, @@ -5749,16 +6220,32 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 20, - column_index: 20, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -5773,7 +6260,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -5788,7 +6275,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -5803,7 +6290,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { @@ -5873,16 +6360,32 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 20, - column_index: 20, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -5897,7 +6400,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -5912,7 +6415,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -5927,7 +6430,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { @@ -6089,16 +6592,32 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 20, - column_index: 20, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -6113,7 +6632,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -6128,7 +6647,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -6143,7 +6662,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { @@ -6242,16 +6761,32 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 20, - column_index: 20, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -6266,7 +6801,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -6281,7 +6816,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -6296,7 +6831,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { @@ -6427,16 +6962,32 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 20, - column_index: 20, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -6451,7 +7002,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -6466,7 +7017,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -6481,7 +7032,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { @@ -6497,7 +7048,7 @@ PinnedVerificationKey { Product( Sum( Advice { - query_index: 11, + query_index: 16, column_index: 9, rotation: Rotation( 1, @@ -6509,7 +7060,7 @@ PinnedVerificationKey { 0x0000000000000000000000000000000000000000000000000000000000000002, ), Advice { - query_index: 12, + query_index: 17, column_index: 9, rotation: Rotation( -1, @@ -6525,7 +7076,7 @@ PinnedVerificationKey { Negated( Sum( Advice { - query_index: 11, + query_index: 16, column_index: 9, rotation: Rotation( 1, @@ -6537,7 +7088,7 @@ PinnedVerificationKey { 0x0000000000000000000000000000000000000000000000000000000000000002, ), Advice { - query_index: 12, + query_index: 17, column_index: 9, rotation: Rotation( -1, @@ -6555,16 +7106,32 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 20, - column_index: 20, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -6579,7 +7146,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -6594,7 +7161,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -6609,7 +7176,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { @@ -6626,7 +7193,7 @@ PinnedVerificationKey { Product( Sum( Advice { - query_index: 11, + query_index: 16, column_index: 9, rotation: Rotation( 1, @@ -6638,7 +7205,7 @@ PinnedVerificationKey { 0x0000000000000000000000000000000000000000000000000000000000000002, ), Advice { - query_index: 12, + query_index: 17, column_index: 9, rotation: Rotation( -1, @@ -6674,7 +7241,7 @@ PinnedVerificationKey { Negated( Sum( Advice { - query_index: 11, + query_index: 16, column_index: 9, rotation: Rotation( 1, @@ -6686,7 +7253,7 @@ PinnedVerificationKey { 0x0000000000000000000000000000000000000000000000000000000000000002, ), Advice { - query_index: 12, + query_index: 17, column_index: 9, rotation: Rotation( -1, @@ -6722,8 +7289,8 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -6734,8 +7301,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -6745,12 +7312,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -6760,12 +7327,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -6775,12 +7342,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -6832,8 +7399,8 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -6844,8 +7411,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -6855,12 +7422,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -6870,12 +7437,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -6885,12 +7452,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -6930,8 +7497,8 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -6942,8 +7509,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -6953,12 +7520,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -6968,12 +7535,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -6983,12 +7550,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -7026,8 +7593,8 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -7038,8 +7605,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -7049,12 +7616,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -7064,12 +7631,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -7079,12 +7646,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -7115,8 +7682,8 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -7127,8 +7694,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -7138,12 +7705,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -7153,12 +7720,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -7168,12 +7735,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 20, - column_index: 20, + query_index: 21, + column_index: 21, rotation: Rotation( 0, ), @@ -7235,21 +7802,37 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 21, - column_index: 21, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { - query_index: 21, - column_index: 21, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -7263,8 +7846,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 21, - column_index: 21, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -7278,8 +7861,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 21, - column_index: 21, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -7293,8 +7876,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 21, - column_index: 21, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -7305,7 +7888,7 @@ PinnedVerificationKey { Product( Sum( Advice { - query_index: 11, + query_index: 16, column_index: 9, rotation: Rotation( 1, @@ -7331,7 +7914,7 @@ PinnedVerificationKey { Negated( Sum( Advice { - query_index: 11, + query_index: 16, column_index: 9, rotation: Rotation( 1, @@ -7359,21 +7942,37 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 21, - column_index: 21, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { - query_index: 21, - column_index: 21, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -7387,8 +7986,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 21, - column_index: 21, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -7402,8 +8001,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 21, - column_index: 21, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -7417,8 +8016,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 21, - column_index: 21, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -7430,7 +8029,7 @@ PinnedVerificationKey { Product( Sum( Advice { - query_index: 11, + query_index: 16, column_index: 9, rotation: Rotation( 1, @@ -7465,7 +8064,7 @@ PinnedVerificationKey { Negated( Sum( Advice { - query_index: 11, + query_index: 16, column_index: 9, rotation: Rotation( 1, @@ -7512,21 +8111,37 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 21, - column_index: 21, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 20, + column_index: 20, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { - query_index: 21, - column_index: 21, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -7540,8 +8155,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 21, - column_index: 21, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -7555,8 +8170,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 21, - column_index: 21, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -7570,8 +8185,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 21, - column_index: 21, + query_index: 20, + column_index: 20, rotation: Rotation( 0, ), @@ -7583,7 +8198,7 @@ PinnedVerificationKey { Product( Sum( Advice { - query_index: 11, + query_index: 16, column_index: 9, rotation: Rotation( 1, @@ -7618,7 +8233,7 @@ PinnedVerificationKey { Negated( Sum( Advice { - query_index: 11, + query_index: 16, column_index: 9, rotation: Rotation( 1, @@ -7648,7 +8263,7 @@ PinnedVerificationKey { ), }, Advice { - query_index: 17, + query_index: 11, column_index: 1, rotation: Rotation( 1, @@ -7684,7 +8299,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -7710,7 +8325,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -7739,7 +8354,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -7768,7 +8383,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -7797,7 +8412,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -7826,7 +8441,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -7855,7 +8470,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -7884,7 +8499,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -7947,7 +8562,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -7984,7 +8599,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8006,7 +8621,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8044,7 +8659,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8066,7 +8681,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8088,7 +8703,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8127,7 +8742,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8149,7 +8764,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8171,7 +8786,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8193,7 +8808,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8233,7 +8848,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8255,7 +8870,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8277,7 +8892,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8299,7 +8914,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8321,7 +8936,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8362,7 +8977,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8384,7 +8999,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8406,7 +9021,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8428,7 +9043,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8450,7 +9065,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8472,7 +9087,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8514,7 +9129,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8536,7 +9151,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8558,7 +9173,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8580,7 +9195,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8602,7 +9217,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8624,7 +9239,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -8646,7 +9261,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -13272,14 +13887,14 @@ PinnedVerificationKey { Product( Sum( Advice { - query_index: 14, + query_index: 13, column_index: 3, rotation: Rotation( 1, ), }, Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -13299,14 +13914,14 @@ PinnedVerificationKey { Sum( Product( Advice { - query_index: 14, + query_index: 13, column_index: 3, rotation: Rotation( 1, ), }, Advice { - query_index: 14, + query_index: 13, column_index: 3, rotation: Rotation( 1, @@ -13325,7 +13940,7 @@ PinnedVerificationKey { ), Negated( Advice { - query_index: 17, + query_index: 11, column_index: 1, rotation: Rotation( 1, @@ -13366,7 +13981,7 @@ PinnedVerificationKey { 0x0000000000000000000000000000000000000000000000000000000000000002, ), Advice { - query_index: 14, + query_index: 13, column_index: 3, rotation: Rotation( 1, @@ -13755,7 +14370,7 @@ PinnedVerificationKey { ), Negated( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, @@ -13842,7 +14457,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 17, + query_index: 11, column_index: 1, rotation: Rotation( 1, @@ -13854,7 +14469,7 @@ PinnedVerificationKey { ), Scaled( Advice { - query_index: 13, + query_index: 12, column_index: 2, rotation: Rotation( 1, @@ -13936,7 +14551,7 @@ PinnedVerificationKey { Sum( Sum( Advice { - query_index: 14, + query_index: 13, column_index: 3, rotation: Rotation( 1, @@ -14022,7 +14637,7 @@ PinnedVerificationKey { ), Sum( Advice { - query_index: 17, + query_index: 11, column_index: 1, rotation: Rotation( 1, @@ -14031,7 +14646,7 @@ PinnedVerificationKey { Negated( Sum( Advice { - query_index: 13, + query_index: 12, column_index: 2, rotation: Rotation( 1, @@ -14039,7 +14654,7 @@ PinnedVerificationKey { }, Scaled( Advice { - query_index: 14, + query_index: 13, column_index: 3, rotation: Rotation( 1, @@ -14250,7 +14865,7 @@ PinnedVerificationKey { Sum( Sum( Advice { - query_index: 16, + query_index: 15, column_index: 5, rotation: Rotation( 1, @@ -14336,7 +14951,7 @@ PinnedVerificationKey { }, Negated( Advice { - query_index: 16, + query_index: 15, column_index: 5, rotation: Rotation( 1, @@ -14448,113 +15063,1235 @@ PinnedVerificationKey { ), ), ), - ), - Product( - Sum( - Advice { - query_index: 19, - column_index: 8, - rotation: Rotation( - 1, - ), - }, - Advice { - query_index: 11, - column_index: 9, - rotation: Rotation( - 1, - ), - }, + ), + Product( + Sum( + Advice { + query_index: 19, + column_index: 8, + rotation: Rotation( + 1, + ), + }, + Advice { + query_index: 16, + column_index: 9, + rotation: Rotation( + 1, + ), + }, + ), + Sum( + Advice { + query_index: 15, + column_index: 5, + rotation: Rotation( + 1, + ), + }, + Negated( + Sum( + Sum( + Product( + Advice { + query_index: 19, + column_index: 8, + rotation: Rotation( + 1, + ), + }, + Advice { + query_index: 19, + column_index: 8, + rotation: Rotation( + 1, + ), + }, + ), + Negated( + Advice { + query_index: 15, + column_index: 5, + rotation: Rotation( + 1, + ), + }, + ), + ), + Negated( + Advice { + query_index: 22, + column_index: 6, + rotation: Rotation( + 1, + ), + }, + ), + ), + ), + ), + ), + ), + ), + Product( + Scaled( + Product( + Fixed { + query_index: 13, + column_index: 13, + rotation: Rotation( + 0, + ), + }, + Sum( + Fixed { + query_index: 13, + column_index: 13, + rotation: Rotation( + 0, + ), + }, + Negated( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + ), + ), + ), + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Advice { + query_index: 19, + column_index: 8, + rotation: Rotation( + 1, + ), + }, + ), + ), + ), + ), + ), + Product( + Product( + Product( + Product( + Product( + Product( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000003, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000005, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000006, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, + Negated( + Sum( + Product( + Advice { + query_index: 9, + column_index: 9, + rotation: Rotation( + 0, + ), + }, + Advice { + query_index: 6, + column_index: 6, + rotation: Rotation( + 0, + ), + }, + ), + Product( + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Advice { + query_index: 9, + column_index: 9, + rotation: Rotation( + 0, + ), + }, + ), + ), + Advice { + query_index: 5, + column_index: 5, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + ), + ), + Product( + Product( + Product( + Product( + Product( + Product( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000003, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000005, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000006, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, + ), + }, + Negated( + Sum( + Product( + Advice { + query_index: 9, + column_index: 9, + rotation: Rotation( + 0, + ), + }, + Advice { + query_index: 5, + column_index: 5, + rotation: Rotation( + 0, + ), + }, + ), + Product( + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Advice { + query_index: 9, + column_index: 9, + rotation: Rotation( + 0, + ), + }, + ), + ), + Advice { + query_index: 6, + column_index: 6, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + ), + ), + Product( + Product( + Product( + Product( + Product( + Product( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000003, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000005, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000006, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Product( + Advice { + query_index: 9, + column_index: 9, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Advice { + query_index: 9, + column_index: 9, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + ), + Product( + Product( + Product( + Product( + Product( + Product( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000005, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000006, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Sum( + Advice { + query_index: 5, + column_index: 5, + rotation: Rotation( + 0, + ), + }, + Negated( + Scaled( + Advice { + query_index: 15, + column_index: 5, + rotation: Rotation( + 1, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000400, + ), + ), + ), + Negated( + Advice { + query_index: 16, + column_index: 9, + rotation: Rotation( + 1, + ), + }, + ), + ), + ), + Product( + Product( + Product( + Product( + Product( + Product( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000005, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000006, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Sum( + Advice { + query_index: 15, + column_index: 5, + rotation: Rotation( + 1, + ), + }, + Scaled( + Sum( + Sum( + Advice { + query_index: 6, + column_index: 6, + rotation: Rotation( + 0, + ), + }, + Negated( + Scaled( + Advice { + query_index: 22, + column_index: 6, + rotation: Rotation( + 1, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000400, + ), + ), + ), + Scaled( + Advice { + query_index: 18, + column_index: 7, + rotation: Rotation( + 1, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000400, + ), + ), + 0x0001000000000000000000000000000000000000000000000000000000000000, + ), + ), + Negated( + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Product( + Product( + Product( + Product( + Product( + Product( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000005, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000006, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Sum( + Advice { + query_index: 19, + column_index: 8, + rotation: Rotation( + 1, + ), + }, + Scaled( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000020, + ), + ), + Negated( + Advice { + query_index: 9, + column_index: 9, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Product( + Product( + Product( + Product( + Product( + Product( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000005, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000006, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Advice { + query_index: 22, + column_index: 6, + rotation: Rotation( + 1, + ), + }, + Negated( + Sum( + Advice { + query_index: 18, + column_index: 7, + rotation: Rotation( + 1, + ), + }, + Scaled( + Advice { + query_index: 19, + column_index: 8, + rotation: Rotation( + 1, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000020, + ), + ), + ), + ), + ), + Product( + Product( + Product( + Product( + Product( + Product( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000003, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000005, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000006, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Product( + Advice { + query_index: 4, + column_index: 4, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Advice { + query_index: 4, + column_index: 4, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + ), + Product( + Product( + Product( + Product( + Product( + Product( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, ), - Sum( - Advice { - query_index: 16, - column_index: 5, + Negated( + Fixed { + query_index: 25, + column_index: 25, rotation: Rotation( - 1, + 0, ), }, - Negated( - Sum( - Sum( - Product( - Advice { - query_index: 19, - column_index: 8, - rotation: Rotation( - 1, - ), - }, - Advice { - query_index: 19, - column_index: 8, - rotation: Rotation( - 1, - ), - }, - ), - Negated( - Advice { - query_index: 16, - column_index: 5, - rotation: Rotation( - 1, - ), - }, - ), - ), - Negated( - Advice { - query_index: 22, - column_index: 6, - rotation: Rotation( - 1, - ), - }, - ), - ), - ), ), ), ), - ), - Product( - Scaled( - Product( + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( Fixed { - query_index: 13, - column_index: 13, + query_index: 25, + column_index: 25, rotation: Rotation( 0, ), }, - Sum( - Fixed { - query_index: 13, - column_index: 13, - rotation: Rotation( - 0, - ), - }, - Negated( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - ), - ), ), - 0x0000000000000000000000000000000000000000000000000000000000000002, ), - Advice { - query_index: 19, - column_index: 8, + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000003, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000005, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, rotation: Rotation( - 1, + 0, ), }, ), ), ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000006, + ), + Negated( + Fixed { + query_index: 25, + column_index: 25, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Product( + Advice { + query_index: 14, + column_index: 4, + rotation: Rotation( + 1, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Advice { + query_index: 14, + column_index: 4, + rotation: Rotation( + 1, + ), + }, + ), + ), ), ), Product( @@ -14587,7 +16324,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -14602,7 +16339,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -14647,45 +16384,34 @@ PinnedVerificationKey { ), Sum( Advice { - query_index: 7, - column_index: 7, + query_index: 2, + column_index: 2, rotation: Rotation( 0, ), }, Negated( Sum( - Product( - Advice { - query_index: 9, - column_index: 9, - rotation: Rotation( - 0, - ), - }, + Sum( Advice { - query_index: 6, - column_index: 6, + query_index: 3, + column_index: 3, rotation: Rotation( 0, ), }, - ), - Product( - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Advice { - query_index: 9, - column_index: 9, - rotation: Rotation( - 0, - ), - }, - ), + Scaled( + Advice { + query_index: 4, + column_index: 4, + rotation: Rotation( + 0, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000010, ), + ), + Scaled( Advice { query_index: 5, column_index: 5, @@ -14693,6 +16419,7 @@ PinnedVerificationKey { 0, ), }, + 0x0000000000000000000000000000000000000000000000000000000000000020, ), ), ), @@ -14728,7 +16455,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -14743,7 +16470,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -14788,52 +16515,30 @@ PinnedVerificationKey { ), Sum( Advice { - query_index: 8, - column_index: 8, + query_index: 12, + column_index: 2, rotation: Rotation( - 0, - ), - }, - Negated( - Sum( - Product( - Advice { - query_index: 9, - column_index: 9, - rotation: Rotation( - 0, - ), - }, - Advice { - query_index: 5, - column_index: 5, - rotation: Rotation( - 0, - ), - }, - ), - Product( - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Advice { - query_index: 9, - column_index: 9, - rotation: Rotation( - 0, - ), - }, - ), + 1, + ), + }, + Negated( + Sum( + Advice { + query_index: 13, + column_index: 3, + rotation: Rotation( + 1, ), + }, + Scaled( Advice { - query_index: 6, - column_index: 6, + query_index: 14, + column_index: 4, rotation: Rotation( - 0, + 1, ), }, + 0x0000000000000000000000000000000000000000000000000000000000000200, ), ), ), @@ -14869,7 +16574,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -14884,7 +16589,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -14927,28 +16632,47 @@ PinnedVerificationKey { ), ), ), - Product( - Advice { - query_index: 9, - column_index: 9, - rotation: Rotation( - 0, - ), - }, + Sum( Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + Sum( + Advice { + query_index: 1, + column_index: 1, + rotation: Rotation( + 0, + ), + }, + Scaled( + Advice { + query_index: 3, + column_index: 3, + rotation: Rotation( + 0, + ), + }, + 0x0400000000000000000000000000000000000000000000000000000000000000, + ), ), - Negated( + Scaled( Advice { - query_index: 9, - column_index: 9, + query_index: 4, + column_index: 4, rotation: Rotation( 0, ), }, + 0x4000000000000000000000000000000000000000000000000000000000000000, ), ), + Negated( + Advice { + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, + ), + }, + ), ), ), Product( @@ -14996,7 +16720,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -15041,30 +16765,52 @@ PinnedVerificationKey { ), Sum( Sum( - Advice { - query_index: 5, - column_index: 5, - rotation: Rotation( - 0, + Sum( + Sum( + Advice { + query_index: 5, + column_index: 5, + rotation: Rotation( + 0, + ), + }, + Scaled( + Advice { + query_index: 11, + column_index: 1, + rotation: Rotation( + 1, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000020, + ), ), - }, - Negated( Scaled( Advice { - query_index: 16, - column_index: 5, + query_index: 13, + column_index: 3, rotation: Rotation( 1, ), }, - 0x0000000000000000000000000000000000000000000000000000000000000400, + 0x0020000000000000000000000000000000000000000000000000000000000000, ), ), + Scaled( + Advice { + query_index: 14, + column_index: 4, + rotation: Rotation( + 1, + ), + }, + 0x4000000000000000000000000000000000000000000000000000000000000000, + ), ), Negated( Advice { - query_index: 11, - column_index: 9, + query_index: 10, + column_index: 0, rotation: Rotation( 1, ), @@ -15117,7 +16863,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -15160,61 +16906,21 @@ PinnedVerificationKey { ), ), ), - Sum( - Sum( - Advice { - query_index: 16, - column_index: 5, - rotation: Rotation( - 1, - ), - }, - Scaled( - Sum( - Sum( - Advice { - query_index: 6, - column_index: 6, - rotation: Rotation( - 0, - ), - }, - Negated( - Scaled( - Advice { - query_index: 22, - column_index: 6, - rotation: Rotation( - 1, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000400, - ), - ), - ), - Scaled( - Advice { - query_index: 18, - column_index: 7, - rotation: Rotation( - 1, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000400, - ), - ), - 0x0001000000000000000000000000000000000000000000000000000000000000, + Product( + Advice { + query_index: 4, + column_index: 4, + rotation: Rotation( + 0, ), - ), - Negated( - Advice { - query_index: 8, - column_index: 8, - rotation: Rotation( - 0, - ), - }, - ), + }, + Advice { + query_index: 3, + column_index: 3, + rotation: Rotation( + 0, + ), + }, ), ), Product( @@ -15262,7 +16968,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -15305,35 +17011,21 @@ PinnedVerificationKey { ), ), ), - Sum( - Sum( - Advice { - query_index: 19, - column_index: 8, - rotation: Rotation( - 1, - ), - }, - Scaled( - Advice { - query_index: 7, - column_index: 7, - rotation: Rotation( - 0, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000020, + Product( + Advice { + query_index: 4, + column_index: 4, + rotation: Rotation( + 0, ), - ), - Negated( - Advice { - query_index: 9, - column_index: 9, - rotation: Rotation( - 0, - ), - }, - ), + }, + Advice { + query_index: 6, + column_index: 6, + rotation: Rotation( + 0, + ), + }, ), ), Product( @@ -15381,7 +17073,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -15425,33 +17117,33 @@ PinnedVerificationKey { ), ), Sum( - Advice { - query_index: 22, - column_index: 6, - rotation: Rotation( - 1, - ), - }, - Negated( + Sum( Sum( Advice { - query_index: 18, - column_index: 7, + query_index: 1, + column_index: 1, rotation: Rotation( - 1, + 0, ), }, - Scaled( - Advice { - query_index: 19, - column_index: 8, - rotation: Rotation( - 1, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000020, + Constant( + 0x0000000000000000000000000000000400000000000000000000000000000000, ), ), + Negated( + Constant( + 0x00000000000000000000000000000000224698fc094cf91b992d30ed00000001, + ), + ), + ), + Negated( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, ), ), ), @@ -15551,20 +17243,13 @@ PinnedVerificationKey { 0, ), }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Advice { - query_index: 4, - column_index: 4, - rotation: Rotation( - 0, - ), - }, + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, ), - ), + }, ), ), Product( @@ -15657,26 +17342,19 @@ PinnedVerificationKey { ), Product( Advice { - query_index: 15, + query_index: 14, column_index: 4, rotation: Rotation( 1, ), }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Advice { - query_index: 15, - column_index: 4, - rotation: Rotation( - 1, - ), - }, + Advice { + query_index: 13, + column_index: 3, + rotation: Rotation( + 1, ), - ), + }, ), ), Product( @@ -15767,47 +17445,21 @@ PinnedVerificationKey { ), ), ), - Sum( + Product( Advice { - query_index: 2, - column_index: 2, + query_index: 14, + column_index: 4, rotation: Rotation( - 0, + 1, ), }, - Negated( - Sum( - Sum( - Advice { - query_index: 3, - column_index: 3, - rotation: Rotation( - 0, - ), - }, - Scaled( - Advice { - query_index: 4, - column_index: 4, - rotation: Rotation( - 0, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000010, - ), - ), - Scaled( - Advice { - query_index: 5, - column_index: 5, - rotation: Rotation( - 0, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000020, - ), + Advice { + query_index: 22, + column_index: 6, + rotation: Rotation( + 1, ), - ), + }, ), ), Product( @@ -15899,34 +17551,46 @@ PinnedVerificationKey { ), ), Sum( - Advice { - query_index: 13, - column_index: 2, - rotation: Rotation( - 1, - ), - }, - Negated( + Sum( Sum( - Advice { - query_index: 14, - column_index: 3, - rotation: Rotation( - 1, - ), - }, - Scaled( + Sum( Advice { - query_index: 15, - column_index: 4, + query_index: 5, + column_index: 5, rotation: Rotation( - 1, + 0, ), }, - 0x0000000000000000000000000000000000000000000000000000000000000200, + Scaled( + Advice { + query_index: 11, + column_index: 1, + rotation: Rotation( + 1, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000020, + ), + ), + Constant( + 0x0000000000000000000000000000100000000000000000000000000000000000, + ), + ), + Negated( + Constant( + 0x00000000000000000000000000000000224698fc094cf91b992d30ed00000001, ), ), ), + Negated( + Advice { + query_index: 18, + column_index: 7, + rotation: Rotation( + 1, + ), + }, + ), ), ), Product( @@ -16017,47 +17681,21 @@ PinnedVerificationKey { ), ), ), - Sum( - Sum( - Sum( - Advice { - query_index: 1, - column_index: 1, - rotation: Rotation( - 0, - ), - }, - Scaled( - Advice { - query_index: 3, - column_index: 3, - rotation: Rotation( - 0, - ), - }, - 0x0400000000000000000000000000000000000000000000000000000000000000, - ), + Product( + Advice { + query_index: 14, + column_index: 4, + rotation: Rotation( + 1, ), - Scaled( - Advice { - query_index: 4, - column_index: 4, - rotation: Rotation( - 0, - ), - }, - 0x4000000000000000000000000000000000000000000000000000000000000000, + }, + Advice { + query_index: 19, + column_index: 8, + rotation: Rotation( + 1, ), - ), - Negated( - Advice { - query_index: 0, - column_index: 0, - rotation: Rotation( - 0, - ), - }, - ), + }, ), ), Product( @@ -16120,7 +17758,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -16148,59 +17786,28 @@ PinnedVerificationKey { ), ), ), - Sum( + Product( + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, + ), + }, Sum( - Sum( - Sum( - Advice { - query_index: 5, - column_index: 5, - rotation: Rotation( - 0, - ), - }, - Scaled( - Advice { - query_index: 17, - column_index: 1, - rotation: Rotation( - 1, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000020, - ), - ), - Scaled( - Advice { - query_index: 14, - column_index: 3, - rotation: Rotation( - 1, - ), - }, - 0x0020000000000000000000000000000000000000000000000000000000000000, - ), + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, ), - Scaled( + Negated( Advice { - query_index: 15, - column_index: 4, + query_index: 8, + column_index: 8, rotation: Rotation( - 1, + 0, ), }, - 0x4000000000000000000000000000000000000000000000000000000000000000, ), ), - Negated( - Advice { - query_index: 10, - column_index: 0, - rotation: Rotation( - 1, - ), - }, - ), ), ), Product( @@ -16263,7 +17870,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -16293,19 +17900,26 @@ PinnedVerificationKey { ), Product( Advice { - query_index: 4, - column_index: 4, + query_index: 18, + column_index: 7, rotation: Rotation( - 0, + 1, ), }, - Advice { - query_index: 3, - column_index: 3, - rotation: Rotation( - 0, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, ), - }, + Negated( + Advice { + query_index: 18, + column_index: 7, + rotation: Rotation( + 1, + ), + }, + ), + ), ), ), Product( @@ -16368,7 +17982,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -16396,14 +18010,7 @@ PinnedVerificationKey { ), ), ), - Product( - Advice { - query_index: 4, - column_index: 4, - rotation: Rotation( - 0, - ), - }, + Sum( Advice { query_index: 6, column_index: 6, @@ -16411,6 +18018,51 @@ PinnedVerificationKey { 0, ), }, + Negated( + Sum( + Sum( + Sum( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, + Scaled( + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000010, + ), + ), + Scaled( + Advice { + query_index: 18, + column_index: 7, + rotation: Rotation( + 1, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000020, + ), + ), + Scaled( + Advice { + query_index: 19, + column_index: 8, + rotation: Rotation( + 1, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000040, + ), + ), + ), ), ), Product( @@ -16473,7 +18125,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -16488,7 +18140,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -16501,35 +18153,28 @@ PinnedVerificationKey { ), ), ), - Sum( + Product( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, Sum( - Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( Advice { - query_index: 1, - column_index: 1, + query_index: 7, + column_index: 7, rotation: Rotation( 0, ), }, - Constant( - 0x0000000000000000000000000000000400000000000000000000000000000000, - ), - ), - Negated( - Constant( - 0x00000000000000000000000000000000224698fc094cf91b992d30ed00000001, - ), ), ), - Negated( - Advice { - query_index: 7, - column_index: 7, - rotation: Rotation( - 0, - ), - }, - ), ), ), Product( @@ -16592,7 +18237,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -16607,7 +18252,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -16621,13 +18266,6 @@ PinnedVerificationKey { ), ), Product( - Advice { - query_index: 4, - column_index: 4, - rotation: Rotation( - 0, - ), - }, Advice { query_index: 8, column_index: 8, @@ -16635,6 +18273,20 @@ PinnedVerificationKey { 0, ), }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, + ), + }, + ), + ), ), ), Product( @@ -16697,7 +18349,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -16712,7 +18364,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -16725,21 +18377,59 @@ PinnedVerificationKey { ), ), ), - Product( + Sum( Advice { - query_index: 15, - column_index: 4, + query_index: 6, + column_index: 6, rotation: Rotation( - 1, + 0, ), }, - Advice { - query_index: 14, - column_index: 3, - rotation: Rotation( - 1, + Negated( + Sum( + Sum( + Sum( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, + Scaled( + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + ), + Scaled( + Advice { + query_index: 18, + column_index: 7, + rotation: Rotation( + 1, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + ), + Scaled( + Advice { + query_index: 19, + column_index: 8, + rotation: Rotation( + 1, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000400, + ), ), - }, + ), ), ), Product( @@ -16749,8 +18439,8 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -16761,8 +18451,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -16772,12 +18462,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -16787,12 +18477,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -16806,8 +18496,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -16821,8 +18511,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -16830,21 +18520,35 @@ PinnedVerificationKey { ), ), ), - Product( - Advice { - query_index: 15, - column_index: 4, - rotation: Rotation( - 1, - ), - }, + Sum( Advice { - query_index: 22, + query_index: 6, column_index: 6, rotation: Rotation( - 1, + 0, ), }, + Negated( + Sum( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, + Scaled( + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000040, + ), + ), + ), ), ), Product( @@ -16854,8 +18558,8 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -16866,8 +18570,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -16881,8 +18585,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -16892,12 +18596,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -16911,8 +18615,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -16926,8 +18630,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -16935,47 +18639,28 @@ PinnedVerificationKey { ), ), ), - Sum( + Product( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, Sum( - Sum( - Sum( - Advice { - query_index: 5, - column_index: 5, - rotation: Rotation( - 0, - ), - }, - Scaled( - Advice { - query_index: 17, - column_index: 1, - rotation: Rotation( - 1, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000020, - ), - ), - Constant( - 0x0000000000000000000000000000100000000000000000000000000000000000, - ), + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, ), Negated( - Constant( - 0x00000000000000000000000000000000224698fc094cf91b992d30ed00000001, - ), + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, ), ), - Negated( - Advice { - query_index: 18, - column_index: 7, - rotation: Rotation( - 1, - ), - }, - ), ), ), Product( @@ -16985,8 +18670,8 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -16997,8 +18682,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17012,8 +18697,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17023,12 +18708,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17042,8 +18727,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17057,8 +18742,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17066,21 +18751,47 @@ PinnedVerificationKey { ), ), ), - Product( + Sum( Advice { - query_index: 15, - column_index: 4, + query_index: 6, + column_index: 6, rotation: Rotation( - 1, + 0, ), }, - Advice { - query_index: 19, - column_index: 8, - rotation: Rotation( - 1, + Negated( + Sum( + Sum( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, + Scaled( + Advice { + query_index: 22, + column_index: 6, + rotation: Rotation( + 1, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + ), + Scaled( + Advice { + query_index: 18, + column_index: 7, + rotation: Rotation( + 1, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000400, + ), ), - }, + ), ), ), Product( @@ -17090,8 +18801,8 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17102,8 +18813,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17117,8 +18828,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17132,8 +18843,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17143,12 +18854,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17162,8 +18873,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17202,8 +18913,8 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17214,8 +18925,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17229,8 +18940,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17244,8 +18955,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17255,12 +18966,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17274,8 +18985,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17283,26 +18994,33 @@ PinnedVerificationKey { ), ), ), - Product( + Sum( Advice { - query_index: 18, - column_index: 7, + query_index: 6, + column_index: 6, rotation: Rotation( - 1, + 0, ), }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( + Negated( + Sum( Advice { - query_index: 18, + query_index: 7, column_index: 7, rotation: Rotation( - 1, + 0, ), }, + Scaled( + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000020, + ), ), ), ), @@ -17314,8 +19032,8 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17326,8 +19044,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17341,8 +19059,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17356,8 +19074,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17367,12 +19085,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17386,8 +19104,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17397,40 +19115,28 @@ PinnedVerificationKey { ), Sum( Advice { - query_index: 6, + query_index: 22, column_index: 6, rotation: Rotation( - 0, + 1, ), }, Negated( Sum( Sum( - Sum( - Advice { - query_index: 7, - column_index: 7, - rotation: Rotation( - 0, - ), - }, - Scaled( - Advice { - query_index: 8, - column_index: 8, - rotation: Rotation( - 0, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000010, + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, ), - ), + }, Scaled( Advice { - query_index: 18, - column_index: 7, + query_index: 8, + column_index: 8, rotation: Rotation( - 1, + 0, ), }, 0x0000000000000000000000000000000000000000000000000000000000000020, @@ -17438,8 +19144,8 @@ PinnedVerificationKey { ), Scaled( Advice { - query_index: 19, - column_index: 8, + query_index: 18, + column_index: 7, rotation: Rotation( 1, ), @@ -17457,8 +19163,8 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17469,8 +19175,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17484,8 +19190,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17499,8 +19205,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17514,8 +19220,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17525,12 +19231,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17569,8 +19275,8 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17581,8 +19287,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17596,8 +19302,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17611,8 +19317,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17626,8 +19332,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17637,12 +19343,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17681,8 +19387,8 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17693,8 +19399,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17708,8 +19414,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17723,8 +19429,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17738,8 +19444,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17749,12 +19455,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 25, - column_index: 25, + query_index: 26, + column_index: 26, rotation: Rotation( 0, ), @@ -17772,46 +19478,22 @@ PinnedVerificationKey { }, Negated( Sum( - Sum( - Sum( - Advice { - query_index: 7, - column_index: 7, - rotation: Rotation( - 0, - ), - }, - Scaled( - Advice { - query_index: 8, - column_index: 8, - rotation: Rotation( - 0, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - ), - Scaled( - Advice { - query_index: 18, - column_index: 7, - rotation: Rotation( - 1, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000004, + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, ), - ), + }, Scaled( Advice { - query_index: 19, + query_index: 8, column_index: 8, rotation: Rotation( - 1, + 0, ), }, - 0x0000000000000000000000000000000000000000000000000000000000000400, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), ), ), @@ -17847,7 +19529,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -17862,7 +19544,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -17877,7 +19559,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -17892,7 +19574,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -17906,33 +19588,45 @@ PinnedVerificationKey { ), ), Sum( - Advice { - query_index: 6, - column_index: 6, - rotation: Rotation( - 0, - ), - }, - Negated( + Sum( Sum( Advice { - query_index: 7, - column_index: 7, + query_index: 8, + column_index: 8, rotation: Rotation( 0, ), }, Scaled( Advice { - query_index: 8, - column_index: 8, + query_index: 7, + column_index: 7, rotation: Rotation( 0, ), }, - 0x0000000000000000000000000000000000000000000000000000000000000040, + 0x0400000000000000000000000000000000000000000000000000000000000000, ), ), + Scaled( + Advice { + query_index: 18, + column_index: 7, + rotation: Rotation( + 1, + ), + }, + 0x4000000000000000000000000000000000000000000000000000000000000000, + ), + ), + Negated( + Advice { + query_index: 6, + column_index: 6, + rotation: Rotation( + 0, + ), + }, ), ), ), @@ -17981,7 +19675,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -17996,7 +19690,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -18011,7 +19705,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -18024,28 +19718,35 @@ PinnedVerificationKey { ), ), ), - Product( - Advice { - query_index: 7, - column_index: 7, - rotation: Rotation( - 0, - ), - }, + Sum( Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( + Sum( Advice { - query_index: 7, - column_index: 7, + query_index: 8, + column_index: 8, rotation: Rotation( 0, ), }, + Constant( + 0x0000000000000000000000000000000400000000000000000000000000000000, + ), + ), + Negated( + Constant( + 0x00000000000000000000000000000000224698fc094cf91b992d30ed00000001, + ), ), ), + Negated( + Advice { + query_index: 19, + column_index: 8, + rotation: Rotation( + 1, + ), + }, + ), ), ), Product( @@ -18093,7 +19794,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -18108,7 +19809,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -18123,7 +19824,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -18136,47 +19837,21 @@ PinnedVerificationKey { ), ), ), - Sum( + Product( Advice { - query_index: 6, - column_index: 6, + query_index: 18, + column_index: 7, rotation: Rotation( - 0, + 1, ), }, - Negated( - Sum( - Sum( - Advice { - query_index: 7, - column_index: 7, - rotation: Rotation( - 0, - ), - }, - Scaled( - Advice { - query_index: 22, - column_index: 6, - rotation: Rotation( - 1, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - ), - Scaled( - Advice { - query_index: 18, - column_index: 7, - rotation: Rotation( - 1, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000400, - ), + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, ), - ), + }, ), ), Product( @@ -18239,7 +19914,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -18254,7 +19929,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -18269,26 +19944,19 @@ PinnedVerificationKey { ), Product( Advice { - query_index: 8, - column_index: 8, + query_index: 18, + column_index: 7, rotation: Rotation( - 0, + 1, ), }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Advice { - query_index: 8, - column_index: 8, - rotation: Rotation( - 0, - ), - }, + Advice { + query_index: 9, + column_index: 9, + rotation: Rotation( + 0, ), - ), + }, ), ), Product( @@ -18351,7 +20019,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -18366,7 +20034,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -18379,35 +20047,21 @@ PinnedVerificationKey { ), ), ), - Sum( + Product( Advice { - query_index: 6, - column_index: 6, + query_index: 18, + column_index: 7, rotation: Rotation( - 0, + 1, ), }, - Negated( - Sum( - Advice { - query_index: 7, - column_index: 7, - rotation: Rotation( - 0, - ), - }, - Scaled( - Advice { - query_index: 8, - column_index: 8, - rotation: Rotation( - 0, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000020, - ), + Advice { + query_index: 16, + column_index: 9, + rotation: Rotation( + 1, ), - ), + }, ), ), Product( @@ -18416,21 +20070,37 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 26, - column_index: 26, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 27, + column_index: 27, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 27, + column_index: 27, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18440,12 +20110,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18455,12 +20125,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18470,12 +20140,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18485,12 +20155,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000007, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18502,21 +20172,21 @@ PinnedVerificationKey { Sum( Sum( Advice { - query_index: 8, - column_index: 8, + query_index: 7, + column_index: 7, rotation: Rotation( 0, ), }, Scaled( Advice { - query_index: 7, - column_index: 7, + query_index: 8, + column_index: 8, rotation: Rotation( 0, ), }, - 0x0400000000000000000000000000000000000000000000000000000000000000, + 0x0000000000000000000000000000000000000000000000000000000000000010, ), ), Scaled( @@ -18547,21 +20217,37 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 26, - column_index: 26, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 27, + column_index: 27, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 27, + column_index: 27, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18571,12 +20257,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18586,12 +20272,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18601,12 +20287,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18616,12 +20302,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000007, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18632,15 +20318,27 @@ PinnedVerificationKey { Sum( Sum( Sum( - Advice { - query_index: 8, - column_index: 8, - rotation: Rotation( - 0, + Sum( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, + Scaled( + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000010, ), - }, + ), Constant( - 0x0000000000000000000000000000000400000000000000000000000000000000, + 0x0000000000000000000000000000100000000000000000000000000000000000, ), ), Negated( @@ -18666,21 +20364,37 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 26, - column_index: 26, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 27, + column_index: 27, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 27, + column_index: 27, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18690,12 +20404,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18705,12 +20419,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18720,12 +20434,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18735,12 +20449,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000007, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18757,8 +20471,8 @@ PinnedVerificationKey { ), }, Advice { - query_index: 7, - column_index: 7, + query_index: 9, + column_index: 9, rotation: Rotation( 0, ), @@ -18771,21 +20485,37 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 26, - column_index: 26, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 27, + column_index: 27, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 27, + column_index: 27, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18795,12 +20525,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18810,12 +20540,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18825,12 +20555,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18840,12 +20570,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000007, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18862,10 +20592,10 @@ PinnedVerificationKey { ), }, Advice { - query_index: 9, + query_index: 16, column_index: 9, rotation: Rotation( - 0, + 1, ), }, ), @@ -18876,21 +20606,37 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 26, - column_index: 26, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 27, + column_index: 27, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 27, + column_index: 27, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18900,12 +20646,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18915,12 +20661,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18930,12 +20676,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18945,12 +20691,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000007, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -18958,21 +20704,47 @@ PinnedVerificationKey { ), ), ), - Product( - Advice { - query_index: 18, - column_index: 7, - rotation: Rotation( - 1, + Sum( + Sum( + Sum( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, + Scaled( + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000100, + ), ), - }, - Advice { - query_index: 11, - column_index: 9, - rotation: Rotation( - 1, + Scaled( + Advice { + query_index: 9, + column_index: 9, + rotation: Rotation( + 0, + ), + }, + 0x0000000000000000000000000000000000000000000000000400000000000000, ), - }, + ), + Negated( + Advice { + query_index: 6, + column_index: 6, + rotation: Rotation( + 0, + ), + }, + ), ), ), Product( @@ -18981,21 +20753,37 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 26, - column_index: 26, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 27, + column_index: 27, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 27, + column_index: 27, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -19005,12 +20793,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -19020,12 +20808,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -19035,12 +20823,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -19050,12 +20838,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000007, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -19112,21 +20900,37 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 26, - column_index: 26, - rotation: Rotation( - 0, + Product( + Fixed { + query_index: 27, + column_index: 27, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 27, + column_index: 27, + rotation: Rotation( + 0, + ), + }, + ), ), - }, + ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -19136,12 +20940,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -19151,12 +20955,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -19166,12 +20970,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -19181,12 +20985,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000007, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -19243,126 +21047,37 @@ PinnedVerificationKey { Product( Product( Product( - Fixed { - query_index: 26, - column_index: 26, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Fixed { - query_index: 26, - column_index: 26, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - Negated( + Product( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, - ), - Negated( - Fixed { - query_index: 26, - column_index: 26, - rotation: Rotation( - 0, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 27, + column_index: 27, + rotation: Rotation( + 0, + ), + }, + ), ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, - ), - Negated( - Fixed { - query_index: 26, - column_index: 26, - rotation: Rotation( - 0, ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, - ), - Negated( - Fixed { - query_index: 26, - column_index: 26, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Product( - Advice { - query_index: 18, - column_index: 7, - rotation: Rotation( - 1, - ), - }, - Advice { - query_index: 9, - column_index: 9, - rotation: Rotation( - 0, - ), - }, - ), - ), - Product( - Product( - Product( - Product( - Product( - Product( - Fixed { - query_index: 26, - column_index: 26, - rotation: Rotation( - 0, - ), - }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -19372,12 +21087,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( - Fixed { - query_index: 26, - column_index: 26, + Fixed { + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -19387,12 +21102,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -19402,12 +21117,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -19417,12 +21132,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000007, ), Negated( Fixed { - query_index: 26, - column_index: 26, + query_index: 27, + column_index: 27, rotation: Rotation( 0, ), @@ -19439,10 +21154,10 @@ PinnedVerificationKey { ), }, Advice { - query_index: 11, + query_index: 9, column_index: 9, rotation: Rotation( - 1, + 0, ), }, ), @@ -19463,7 +21178,7 @@ PinnedVerificationKey { }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000001, ), Negated( Fixed { @@ -19478,7 +21193,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -19551,47 +21266,21 @@ PinnedVerificationKey { ), ), ), - Sum( - Sum( - Sum( - Advice { - query_index: 7, - column_index: 7, - rotation: Rotation( - 0, - ), - }, - Scaled( - Advice { - query_index: 8, - column_index: 8, - rotation: Rotation( - 0, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000100, - ), + Product( + Advice { + query_index: 18, + column_index: 7, + rotation: Rotation( + 1, ), - Scaled( - Advice { - query_index: 9, - column_index: 9, - rotation: Rotation( - 0, - ), - }, - 0x0000000000000000000000000000000000000000000000000400000000000000, + }, + Advice { + query_index: 16, + column_index: 9, + rotation: Rotation( + 1, ), - ), - Negated( - Advice { - query_index: 6, - column_index: 6, - rotation: Rotation( - 0, - ), - }, - ), + }, ), ), Product( @@ -19625,7 +21314,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -19640,7 +21329,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -19701,22 +21390,34 @@ PinnedVerificationKey { Sum( Sum( Sum( - Advice { - query_index: 7, - column_index: 7, - rotation: Rotation( - 0, + Sum( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, + Scaled( + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000200, ), - }, + ), Scaled( Advice { - query_index: 8, - column_index: 8, + query_index: 22, + column_index: 6, rotation: Rotation( - 0, + 1, ), }, - 0x0000000000000000000000000000000000000000000000000000000000000010, + 0x0200000000000000000000000000000000000000000000000000000000000000, ), ), Scaled( @@ -19772,7 +21473,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -19787,7 +21488,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -19864,11 +21565,11 @@ PinnedVerificationKey { 0, ), }, - 0x0000000000000000000000000000000000000000000000000000000000000010, + 0x0000000000000000000000000000000000000000000000000000000000000200, ), ), Constant( - 0x0000000000000000000000000000100000000000000000000000000000000000, + 0x0000000000000000000000000000000400000000000000000000000000000000, ), ), Negated( @@ -19919,7 +21620,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -19934,7 +21635,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -20001,10 +21702,10 @@ PinnedVerificationKey { ), }, Advice { - query_index: 9, - column_index: 9, + query_index: 22, + column_index: 6, rotation: Rotation( - 0, + 1, ), }, ), @@ -20040,7 +21741,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -20055,7 +21756,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -20122,10 +21823,10 @@ PinnedVerificationKey { ), }, Advice { - query_index: 11, + query_index: 9, column_index: 9, rotation: Rotation( - 1, + 0, ), }, ), @@ -20176,7 +21877,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -20234,59 +21935,21 @@ PinnedVerificationKey { ), ), ), - Sum( - Sum( - Sum( - Sum( - Advice { - query_index: 7, - column_index: 7, - rotation: Rotation( - 0, - ), - }, - Scaled( - Advice { - query_index: 8, - column_index: 8, - rotation: Rotation( - 0, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000200, - ), - ), - Scaled( - Advice { - query_index: 22, - column_index: 6, - rotation: Rotation( - 1, - ), - }, - 0x0200000000000000000000000000000000000000000000000000000000000000, - ), + Product( + Advice { + query_index: 18, + column_index: 7, + rotation: Rotation( + 1, ), - Scaled( - Advice { - query_index: 18, - column_index: 7, - rotation: Rotation( - 1, - ), - }, - 0x4000000000000000000000000000000000000000000000000000000000000000, + }, + Advice { + query_index: 16, + column_index: 9, + rotation: Rotation( + 1, ), - ), - Negated( - Advice { - query_index: 6, - column_index: 6, - rotation: Rotation( - 0, - ), - }, - ), + }, ), ), Product( @@ -20335,7 +21998,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -20350,7 +22013,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -20393,47 +22056,28 @@ PinnedVerificationKey { ), ), ), - Sum( + Product( + Advice { + query_index: 9, + column_index: 9, + rotation: Rotation( + 0, + ), + }, Sum( - Sum( - Sum( - Advice { - query_index: 7, - column_index: 7, - rotation: Rotation( - 0, - ), - }, - Scaled( - Advice { - query_index: 8, - column_index: 8, - rotation: Rotation( - 0, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000200, - ), - ), - Constant( - 0x0000000000000000000000000000000400000000000000000000000000000000, - ), + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, ), Negated( - Constant( - 0x00000000000000000000000000000000224698fc094cf91b992d30ed00000001, - ), + Advice { + query_index: 9, + column_index: 9, + rotation: Rotation( + 0, + ), + }, ), ), - Negated( - Advice { - query_index: 19, - column_index: 8, - rotation: Rotation( - 1, - ), - }, - ), ), ), Product( @@ -20482,7 +22126,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -20497,7 +22141,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -20540,21 +22184,47 @@ PinnedVerificationKey { ), ), ), - Product( + Sum( Advice { - query_index: 18, - column_index: 7, + query_index: 15, + column_index: 5, rotation: Rotation( 1, ), }, - Advice { - query_index: 22, - column_index: 6, - rotation: Rotation( - 1, + Negated( + Sum( + Sum( + Advice { + query_index: 6, + column_index: 6, + rotation: Rotation( + 0, + ), + }, + Scaled( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + ), + Scaled( + Advice { + query_index: 22, + column_index: 6, + rotation: Rotation( + 1, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000400, + ), ), - }, + ), ), ), Product( @@ -20603,7 +22273,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -20618,7 +22288,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -20661,21 +22331,47 @@ PinnedVerificationKey { ), ), ), - Product( - Advice { - query_index: 18, - column_index: 7, - rotation: Rotation( - 1, - ), - }, + Sum( Advice { - query_index: 9, - column_index: 9, + query_index: 5, + column_index: 5, rotation: Rotation( 0, ), }, + Negated( + Sum( + Sum( + Advice { + query_index: 15, + column_index: 5, + rotation: Rotation( + 1, + ), + }, + Scaled( + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, + ), + }, + 0x0400000000000000000000000000000000000000000000000000000000000000, + ), + ), + Scaled( + Advice { + query_index: 9, + column_index: 9, + rotation: Rotation( + 0, + ), + }, + 0x4000000000000000000000000000000000000000000000000000000000000000, + ), + ), + ), ), ), Product( @@ -20724,7 +22420,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -20739,7 +22435,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -20782,21 +22478,35 @@ PinnedVerificationKey { ), ), ), - Product( - Advice { - query_index: 18, - column_index: 7, - rotation: Rotation( - 1, + Sum( + Sum( + Sum( + Advice { + query_index: 15, + column_index: 5, + rotation: Rotation( + 1, + ), + }, + Constant( + 0x0000000000000000000000000000000400000000000000000000000000000000, + ), ), - }, - Advice { - query_index: 11, - column_index: 9, - rotation: Rotation( - 1, + Negated( + Constant( + 0x00000000000000000000000000000000224698fc094cf91b992d30ed00000001, + ), ), - }, + ), + Negated( + Advice { + query_index: 19, + column_index: 8, + rotation: Rotation( + 1, + ), + }, + ), ), ), Product( @@ -20860,7 +22570,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -20911,20 +22621,13 @@ PinnedVerificationKey { 0, ), }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Advice { - query_index: 9, - column_index: 9, - rotation: Rotation( - 0, - ), - }, + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, ), - ), + }, ), ), Product( @@ -20988,7 +22691,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -21031,47 +22734,21 @@ PinnedVerificationKey { ), ), ), - Sum( + Product( Advice { - query_index: 16, - column_index: 5, + query_index: 9, + column_index: 9, rotation: Rotation( - 1, + 0, ), }, - Negated( - Sum( - Sum( - Advice { - query_index: 6, - column_index: 6, - rotation: Rotation( - 0, - ), - }, - Scaled( - Advice { - query_index: 7, - column_index: 7, - rotation: Rotation( - 0, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - ), - Scaled( - Advice { - query_index: 22, - column_index: 6, - rotation: Rotation( - 1, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000400, - ), + Advice { + query_index: 18, + column_index: 7, + rotation: Rotation( + 1, ), - ), + }, ), ), Product( @@ -21135,7 +22812,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -21172,54 +22849,28 @@ PinnedVerificationKey { query_index: 27, column_index: 27, rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Advice { - query_index: 5, - column_index: 5, - rotation: Rotation( - 0, - ), - }, - Negated( - Sum( - Sum( - Advice { - query_index: 16, - column_index: 5, - rotation: Rotation( - 1, - ), - }, - Scaled( - Advice { - query_index: 8, - column_index: 8, - rotation: Rotation( - 0, - ), - }, - 0x0400000000000000000000000000000000000000000000000000000000000000, + 0, ), - ), - Scaled( - Advice { - query_index: 9, - column_index: 9, - rotation: Rotation( - 0, - ), - }, - 0x4000000000000000000000000000000000000000000000000000000000000000, - ), + }, ), ), ), + Product( + Advice { + query_index: 9, + column_index: 9, + rotation: Rotation( + 0, + ), + }, + Advice { + query_index: 16, + column_index: 9, + rotation: Rotation( + 1, + ), + }, + ), ), Product( Product( @@ -21282,7 +22933,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -21297,7 +22948,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -21325,34 +22976,27 @@ PinnedVerificationKey { ), ), ), - Sum( + Product( + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, + ), + }, Sum( - Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( Advice { - query_index: 16, - column_index: 5, + query_index: 8, + column_index: 8, rotation: Rotation( - 1, + 0, ), }, - Constant( - 0x0000000000000000000000000000000400000000000000000000000000000000, - ), ), - Negated( - Constant( - 0x00000000000000000000000000000000224698fc094cf91b992d30ed00000001, - ), - ), - ), - Negated( - Advice { - query_index: 19, - column_index: 8, - rotation: Rotation( - 1, - ), - }, ), ), ), @@ -21417,7 +23061,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -21432,7 +23076,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -21462,19 +23106,26 @@ PinnedVerificationKey { ), Product( Advice { - query_index: 9, - column_index: 9, + query_index: 18, + column_index: 7, rotation: Rotation( - 0, + 1, ), }, - Advice { - query_index: 8, - column_index: 8, - rotation: Rotation( - 0, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, ), - }, + Negated( + Advice { + query_index: 18, + column_index: 7, + rotation: Rotation( + 1, + ), + }, + ), + ), ), ), Product( @@ -21538,7 +23189,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -21553,7 +23204,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -21581,21 +23232,59 @@ PinnedVerificationKey { ), ), ), - Product( + Sum( Advice { - query_index: 9, - column_index: 9, + query_index: 6, + column_index: 6, rotation: Rotation( 0, ), }, - Advice { - query_index: 18, - column_index: 7, - rotation: Rotation( - 1, + Negated( + Sum( + Sum( + Sum( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, + Scaled( + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000010, + ), + ), + Scaled( + Advice { + query_index: 18, + column_index: 7, + rotation: Rotation( + 1, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000020, + ), + ), + Scaled( + Advice { + query_index: 19, + column_index: 8, + rotation: Rotation( + 1, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000040, + ), ), - }, + ), ), ), Product( @@ -21659,7 +23348,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -21674,7 +23363,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -21689,7 +23378,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000007, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { @@ -21704,19 +23393,26 @@ PinnedVerificationKey { ), Product( Advice { - query_index: 9, - column_index: 9, + query_index: 7, + column_index: 7, rotation: Rotation( 0, ), }, - Advice { - query_index: 11, - column_index: 9, - rotation: Rotation( - 1, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, ), - }, + Negated( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, + ), + ), ), ), Product( @@ -21795,7 +23491,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -21810,7 +23506,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000007, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { @@ -21923,56 +23619,87 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { query_index: 27, column_index: 27, rotation: Rotation( - 0, + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000006, + ), + Negated( + Fixed { + query_index: 27, + column_index: 27, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Advice { + query_index: 6, + column_index: 6, + rotation: Rotation( + 0, + ), + }, + Negated( + Sum( + Sum( + Sum( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, + Scaled( + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + ), + Scaled( + Advice { + query_index: 18, + column_index: 7, + rotation: Rotation( + 1, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + ), + Scaled( + Advice { + query_index: 19, + column_index: 8, + rotation: Rotation( + 1, ), }, + 0x0000000000000000000000000000000000000000000000000000000000000400, ), ), ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000007, - ), - Negated( - Fixed { - query_index: 27, - column_index: 27, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Product( - Advice { - query_index: 18, - column_index: 7, - rotation: Rotation( - 1, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Advice { - query_index: 18, - column_index: 7, - rotation: Rotation( - 1, - ), - }, - ), - ), ), ), Product( @@ -21983,20 +23710,20 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22006,12 +23733,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22021,12 +23748,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22036,12 +23763,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22055,8 +23782,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22070,8 +23797,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22089,43 +23816,19 @@ PinnedVerificationKey { }, Negated( Sum( - Sum( - Sum( - Advice { - query_index: 7, - column_index: 7, - rotation: Rotation( - 0, - ), - }, - Scaled( - Advice { - query_index: 8, - column_index: 8, - rotation: Rotation( - 0, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000010, - ), - ), - Scaled( - Advice { - query_index: 18, - column_index: 7, - rotation: Rotation( - 1, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000020, + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, ), - ), + }, Scaled( Advice { - query_index: 19, + query_index: 8, column_index: 8, rotation: Rotation( - 1, + 0, ), }, 0x0000000000000000000000000000000000000000000000000000000000000040, @@ -22142,8 +23845,8 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22154,8 +23857,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22165,12 +23868,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22180,12 +23883,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22195,12 +23898,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22210,12 +23913,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22229,8 +23932,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22270,8 +23973,8 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22282,8 +23985,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22293,12 +23996,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22308,12 +24011,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22323,12 +24026,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22338,12 +24041,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22357,8 +24060,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22366,26 +24069,45 @@ PinnedVerificationKey { ), ), ), - Product( + Sum( Advice { - query_index: 8, - column_index: 8, + query_index: 6, + column_index: 6, rotation: Rotation( 0, ), }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Advice { - query_index: 8, - column_index: 8, - rotation: Rotation( - 0, + Negated( + Sum( + Sum( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, + Scaled( + Advice { + query_index: 22, + column_index: 6, + rotation: Rotation( + 1, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), - }, + ), + Scaled( + Advice { + query_index: 18, + column_index: 7, + rotation: Rotation( + 1, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000400, + ), ), ), ), @@ -22398,8 +24120,8 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22410,8 +24132,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22425,8 +24147,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22436,12 +24158,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22451,12 +24173,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22466,12 +24188,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22485,8 +24207,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22494,57 +24216,26 @@ PinnedVerificationKey { ), ), ), - Sum( + Product( Advice { - query_index: 6, - column_index: 6, + query_index: 8, + column_index: 8, rotation: Rotation( 0, ), }, - Negated( - Sum( - Sum( - Sum( - Advice { - query_index: 7, - column_index: 7, - rotation: Rotation( - 0, - ), - }, - Scaled( - Advice { - query_index: 8, - column_index: 8, - rotation: Rotation( - 0, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - ), - Scaled( - Advice { - query_index: 18, - column_index: 7, - rotation: Rotation( - 1, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000004, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, ), - ), - Scaled( - Advice { - query_index: 19, - column_index: 8, - rotation: Rotation( - 1, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000400, - ), + }, ), ), ), @@ -22557,8 +24248,8 @@ PinnedVerificationKey { Product( Product( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22569,8 +24260,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22584,8 +24275,8 @@ PinnedVerificationKey { ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22595,12 +24286,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22610,12 +24301,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22625,12 +24316,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22640,12 +24331,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000007, ), Negated( Fixed { - query_index: 27, - column_index: 27, + query_index: 28, + column_index: 28, rotation: Rotation( 0, ), @@ -22678,7 +24369,7 @@ PinnedVerificationKey { 0, ), }, - 0x0000000000000000000000000000000000000000000000000000000000000040, + 0x0000000000000000000000000000000000000000000000000000000000000020, ), ), ), @@ -22700,7 +24391,7 @@ PinnedVerificationKey { }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000001, ), Negated( Fixed { @@ -22715,7 +24406,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -22788,26 +24479,45 @@ PinnedVerificationKey { ), ), ), - Product( + Sum( Advice { - query_index: 7, - column_index: 7, + query_index: 22, + column_index: 6, rotation: Rotation( - 0, + 1, ), }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Advice { - query_index: 7, - column_index: 7, - rotation: Rotation( - 0, + Negated( + Sum( + Sum( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, + ), + }, + Scaled( + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000020, ), - }, + ), + Scaled( + Advice { + query_index: 18, + column_index: 7, + rotation: Rotation( + 1, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000040, + ), ), ), ), @@ -22828,7 +24538,7 @@ PinnedVerificationKey { }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, + 0x0000000000000000000000000000000000000000000000000000000000000001, ), Negated( Fixed { @@ -22843,7 +24553,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -22858,7 +24568,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -22916,45 +24626,26 @@ PinnedVerificationKey { ), ), ), - Sum( + Product( Advice { - query_index: 6, - column_index: 6, + query_index: 7, + column_index: 7, rotation: Rotation( 0, ), }, - Negated( - Sum( - Sum( - Advice { - query_index: 7, - column_index: 7, - rotation: Rotation( - 0, - ), - }, - Scaled( - Advice { - query_index: 22, - column_index: 6, - rotation: Rotation( - 1, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000002, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, ), - ), - Scaled( - Advice { - query_index: 18, - column_index: 7, - rotation: Rotation( - 1, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000400, - ), + }, ), ), ), @@ -22990,7 +24681,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -23005,7 +24696,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -23118,7 +24809,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { @@ -23133,7 +24824,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -23216,7 +24907,7 @@ PinnedVerificationKey { 0, ), }, - 0x0000000000000000000000000000000000000000000000000000000000000020, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), ), ), @@ -23268,7 +24959,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -23283,7 +24974,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -23415,7 +25106,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -23430,7 +25121,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -23550,7 +25241,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -23565,7 +25256,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -23671,7 +25362,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -23686,7 +25377,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -23792,7 +25483,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { @@ -23807,7 +25498,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -23859,7 +25550,7 @@ PinnedVerificationKey { ), }, Advice { - query_index: 11, + query_index: 16, column_index: 9, rotation: Rotation( 1, @@ -23928,7 +25619,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -23943,7 +25634,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -24075,7 +25766,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -24090,7 +25781,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -24222,7 +25913,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -24237,7 +25928,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -24343,7 +26034,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { @@ -24358,7 +26049,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -24395,7 +26086,7 @@ PinnedVerificationKey { ), }, Advice { - query_index: 11, + query_index: 16, column_index: 9, rotation: Rotation( 1, @@ -24479,7 +26170,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000005, ), Negated( Fixed { @@ -24494,7 +26185,7 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000007, + 0x0000000000000000000000000000000000000000000000000000000000000006, ), Negated( Fixed { @@ -24554,69 +26245,21 @@ PinnedVerificationKey { Product( Product( Product( - Product( - Product( - Product( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, ), - ), + }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -24626,12 +26269,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -24641,12 +26284,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000007, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -24701,69 +26344,21 @@ PinnedVerificationKey { Product( Product( Product( - Product( - Product( - Product( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, ), - ), + }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -24773,12 +26368,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -24788,12 +26383,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000007, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -24803,114 +26398,66 @@ PinnedVerificationKey { ), Sum( Sum( - Sum( - Sum( - Advice { - query_index: 7, - column_index: 7, - rotation: Rotation( - 0, - ), - }, - Scaled( - Advice { - query_index: 8, - column_index: 8, - rotation: Rotation( - 0, - ), - }, - 0x0000000000000000000000000000000000000000000000000000000000000010, - ), - ), - Constant( - 0x0000000000000000000000000000100000000000000000000000000000000000, - ), - ), - Negated( - Constant( - 0x00000000000000000000000000000000224698fc094cf91b992d30ed00000001, - ), - ), - ), - Negated( - Advice { - query_index: 19, - column_index: 8, - rotation: Rotation( - 1, - ), - }, - ), - ), - ), - Product( - Product( - Product( - Product( - Product( - Product( - Product( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, + Sum( + Sum( + Advice { + query_index: 7, + column_index: 7, + rotation: Rotation( + 0, ), + }, + Scaled( + Advice { + query_index: 8, + column_index: 8, + rotation: Rotation( + 0, + ), + }, + 0x0000000000000000000000000000000000000000000000000000000000000010, ), ), + Constant( + 0x0000000000000000000000000000100000000000000000000000000000000000, + ), + ), + Negated( + Constant( + 0x00000000000000000000000000000000224698fc094cf91b992d30ed00000001, + ), + ), + ), + Negated( + Advice { + query_index: 19, + column_index: 8, + rotation: Rotation( + 1, + ), + }, + ), + ), + ), + Product( + Product( + Product( + Product( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -24920,12 +26467,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -24935,12 +26482,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000007, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -24969,69 +26516,21 @@ PinnedVerificationKey { Product( Product( Product( - Product( - Product( - Product( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, ), - ), + }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -25041,12 +26540,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -25056,12 +26555,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000007, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -25078,7 +26577,7 @@ PinnedVerificationKey { ), }, Advice { - query_index: 11, + query_index: 16, column_index: 9, rotation: Rotation( 1, @@ -25090,69 +26589,21 @@ PinnedVerificationKey { Product( Product( Product( - Product( - Product( - Product( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, ), - ), + }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000001, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -25162,12 +26613,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -25177,12 +26628,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -25249,69 +26700,21 @@ PinnedVerificationKey { Product( Product( Product( - Product( - Product( - Product( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, ), - ), + }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000001, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -25321,12 +26724,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -25336,12 +26739,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -25396,69 +26799,21 @@ PinnedVerificationKey { Product( Product( Product( - Product( - Product( - Product( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, ), - ), + }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000001, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -25468,12 +26823,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -25483,12 +26838,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -25517,69 +26872,21 @@ PinnedVerificationKey { Product( Product( Product( - Product( - Product( - Product( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, ), - ), + }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000001, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -25589,12 +26896,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000003, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -25604,12 +26911,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -25638,69 +26945,94 @@ PinnedVerificationKey { Product( Product( Product( - Product( - Product( - Product( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000001, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, - ), - ), - ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000002, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, ), - ), + }, ), - Sum( - Constant( - 0x0000000000000000000000000000000000000000000000000000000000000003, - ), - Negated( - Fixed { - query_index: 28, - column_index: 28, - rotation: Rotation( - 0, - ), - }, + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000003, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Product( + Advice { + query_index: 18, + column_index: 7, + rotation: Rotation( + 1, + ), + }, + Advice { + query_index: 16, + column_index: 9, + rotation: Rotation( + 1, + ), + }, + ), + ), + Product( + Product( + Product( + Product( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, ), - ), + }, Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000004, + 0x0000000000000000000000000000000000000000000000000000000000000001, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -25710,12 +27042,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000005, + 0x0000000000000000000000000000000000000000000000000000000000000002, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -25725,12 +27057,12 @@ PinnedVerificationKey { ), Sum( Constant( - 0x0000000000000000000000000000000000000000000000000000000000000006, + 0x0000000000000000000000000000000000000000000000000000000000000004, ), Negated( Fixed { - query_index: 28, - column_index: 28, + query_index: 29, + column_index: 29, rotation: Rotation( 0, ), @@ -25738,31 +27070,6 @@ PinnedVerificationKey { ), ), ), - Product( - Advice { - query_index: 18, - column_index: 7, - rotation: Rotation( - 1, - ), - }, - Advice { - query_index: 11, - column_index: 9, - rotation: Rotation( - 1, - ), - }, - ), - ), - Product( - Fixed { - query_index: 29, - column_index: 29, - rotation: Rotation( - 0, - ), - }, Product( Advice { query_index: 9, @@ -25788,16 +27095,64 @@ PinnedVerificationKey { ), ), Product( - Fixed { - query_index: 29, - column_index: 29, - rotation: Rotation( - 0, + Product( + Product( + Product( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), ), - }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), Sum( Advice { - query_index: 16, + query_index: 15, column_index: 5, rotation: Rotation( 1, @@ -25839,13 +27194,61 @@ PinnedVerificationKey { ), ), Product( - Fixed { - query_index: 29, - column_index: 29, - rotation: Rotation( - 0, + Product( + Product( + Product( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), ), - }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), Sum( Advice { query_index: 5, @@ -25858,7 +27261,7 @@ PinnedVerificationKey { Sum( Sum( Advice { - query_index: 16, + query_index: 15, column_index: 5, rotation: Rotation( 1, @@ -25890,18 +27293,66 @@ PinnedVerificationKey { ), ), Product( - Fixed { - query_index: 29, - column_index: 29, - rotation: Rotation( - 0, + Product( + Product( + Product( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), ), - }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), Sum( Sum( Sum( Advice { - query_index: 16, + query_index: 15, column_index: 5, rotation: Rotation( 1, @@ -25912,30 +27363,78 @@ PinnedVerificationKey { ), ), Negated( - Constant( - 0x00000000000000000000000000000000224698fc094cf91b992d30ed00000001, - ), + Constant( + 0x00000000000000000000000000000000224698fc094cf91b992d30ed00000001, + ), + ), + ), + Negated( + Advice { + query_index: 19, + column_index: 8, + rotation: Rotation( + 1, + ), + }, + ), + ), + ), + Product( + Product( + Product( + Product( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, ), ), - Negated( - Advice { - query_index: 19, - column_index: 8, - rotation: Rotation( - 1, - ), - }, - ), ), - ), - Product( - Fixed { - query_index: 29, - column_index: 29, - rotation: Rotation( - 0, - ), - }, Product( Advice { query_index: 9, @@ -25954,13 +27453,61 @@ PinnedVerificationKey { ), ), Product( - Fixed { - query_index: 29, - column_index: 29, - rotation: Rotation( - 0, + Product( + Product( + Product( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), ), - }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), Product( Advice { query_index: 9, @@ -25979,13 +27526,61 @@ PinnedVerificationKey { ), ), Product( - Fixed { - query_index: 29, - column_index: 29, - rotation: Rotation( - 0, + Product( + Product( + Product( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), ), - }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000004, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), Product( Advice { query_index: 9, @@ -25995,7 +27590,7 @@ PinnedVerificationKey { ), }, Advice { - query_index: 11, + query_index: 16, column_index: 9, rotation: Rotation( 1, @@ -26003,6 +27598,115 @@ PinnedVerificationKey { }, ), ), + Product( + Product( + Product( + Product( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000002, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000003, + ), + Negated( + Fixed { + query_index: 29, + column_index: 29, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), + Sum( + Sum( + Product( + Sum( + Constant( + 0x0000000000000000000000000000000000000000000000000000000000000001, + ), + Negated( + Advice { + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, + ), + }, + ), + ), + Advice { + query_index: 1, + column_index: 1, + rotation: Rotation( + 0, + ), + }, + ), + Product( + Advice { + query_index: 0, + column_index: 0, + rotation: Rotation( + 0, + ), + }, + Advice { + query_index: 2, + column_index: 2, + rotation: Rotation( + 0, + ), + }, + ), + ), + Negated( + Advice { + query_index: 3, + column_index: 3, + rotation: Rotation( + 0, + ), + }, + ), + ), + ), ], advice_queries: [ ( @@ -26106,7 +27810,7 @@ PinnedVerificationKey { ), ( Column { - index: 9, + index: 1, column_type: Advice, }, Rotation( @@ -26115,16 +27819,16 @@ PinnedVerificationKey { ), ( Column { - index: 9, + index: 2, column_type: Advice, }, Rotation( - -1, + 1, ), ), ( Column { - index: 2, + index: 3, column_type: Advice, }, Rotation( @@ -26133,7 +27837,7 @@ PinnedVerificationKey { ), ( Column { - index: 3, + index: 4, column_type: Advice, }, Rotation( @@ -26142,7 +27846,7 @@ PinnedVerificationKey { ), ( Column { - index: 4, + index: 5, column_type: Advice, }, Rotation( @@ -26151,7 +27855,7 @@ PinnedVerificationKey { ), ( Column { - index: 5, + index: 9, column_type: Advice, }, Rotation( @@ -26160,11 +27864,11 @@ PinnedVerificationKey { ), ( Column { - index: 1, + index: 9, column_type: Advice, }, Rotation( - 1, + -1, ), ), ( @@ -26609,7 +28313,7 @@ PinnedVerificationKey { Negated( Scaled( Advice { - query_index: 11, + query_index: 16, column_index: 9, rotation: Rotation( 1, @@ -26712,7 +28416,7 @@ PinnedVerificationKey { ), ), Advice { - query_index: 13, + query_index: 12, column_index: 2, rotation: Rotation( 1, @@ -27180,51 +28884,51 @@ PinnedVerificationKey { minimum_degree: None, }, fixed_commitments: [ - (0x05f5862cad2888855bc3c1843a9eff57b11b592d9eb0e13354256661387f5231, 0x32236b14df85bf5f532a930232cb23a5c56ef7d67aaeed8bcb8fc10ea132cbd6), - (0x3e727e8554679f98120355d39d958dbd8755d5a7f8b42ea87f258064c4b3eb57, 0x0c0d5c23f3ee62ac1b2d986dd3033bbcab260d590e1393de3a14a4b31ae091bb), - (0x3748680dd6a91c5dec668b30fb6bf9a450aeb884b81cbc344914f265760e7131, 0x18530eaa5c58b61bd3fc38220ea484c0922524a815a8f752be955c229f9c4164), - (0x212ebe88f06142f838a0c5c4496fa768ae3ca10f1ce9022c562b26bfbdc498c3, 0x2b6528f6317e63892bed284c67f112218631e191be7d5fdc5cdf7b9e92c72e05), - (0x034445b7457e04150c75a6c82e6f83ce2e1adf0e54aae2cfef0531b24dde111f, 0x30a7f9ce9bd574162a4729f71d8c7f0c61a4b7de6aa0181eefad3693aeb09c10), - (0x2a119980555858bc332f02295311e188f6125be71b5e591fff068a5024571aee, 0x23803ce939432804d484b29078c9c161015408e5e383a8cfc8c13a30502c9400), - (0x085620965e456f2f2b98a365768c7be2e43577bd0ef92a50cc278d521e983e9f, 0x3f1f003651d27a02d609eb61fbba5e74bb61c63b5afcce2c683948c5caa22791), - (0x3dc695372b0d52f554c7ab1cee168937f45f3abdd2e8fdf65f3b523ec85a499a, 0x33ef73e550024b2285b082816eb8818e80255973d9560fd437387cdb870190f1), - (0x1028b99218dd2642e60b90b28ae9cecd4be814de17a429314530f9a8695ce1c8, 0x2592dc76f783462d5b3bed02626ef2514deb59b7a6a8438ff64fdf6aafa00d4f), - (0x10fea717c33f17c73458742a1431679d61a436da080918e030b1760627a9538b, 0x0faf9983733b318f75d91c0c1131cfe7c67ef5474657d36c5ecd566b9629b6cf), - (0x3c242ccdb145d93f2cf312fbaab513b66b4cacd30de01fe193984aec912dd1a0, 0x1fa195c07847db8e31bdf7993ea787c9656a9d86babdeeddb76817d3c546348c), - (0x3229e787cb7ce31299dedd67d2631c480399a333098f84e7577132aac163ec8d, 0x3822eb1cc8eb19179373ea6b66b25b26ac8c915f0c9382800dd45a5a408fd1fc), - (0x10f84d5a9fad7c64be8a3529d1dd98c0961df4bb677b6a60714ddb053792998e, 0x0f032b93492b60aed3339d5646e15d2a9a46557cb01621b8d3d1392207ed0021), - (0x1d5193db32232d750432a8ec23f74307ad8194a0a4ad273c9b761b4e0f365d0b, 0x0b73549978b1c24dcbb39570d9fab795337f6030f2fffb9452b5edba0dcd2906), - (0x12967b9d3412c47744d16acede02d8214db2def9bfa643cc3da724f3f4edecaf, 0x3744e1519dcf0ae6bdc813ef1a123fd7978c073232164050a9a24fcd57d9a0a2), - (0x02602bfa02be45cec73e24099a3ff88e66386fc8a55f60af328afe5a68007233, 0x3db6b250fdd9abcc16f17275cc83ac66c9a2d91954dce867f23497a3ad85a85e), - (0x274c6a300449842b07918941f243beac24a66bd9870bf0b1c59b0b6056200a73, 0x1a19946639473486c5aebb6f2c7f0ed9bfa6a072a37857b9cbd801174b6a152a), - (0x2280ada329e3a43f320cdd86e0cfbea20620a02c772fccb8f34091832b9c4e1c, 0x0f47924c100e3c314835e8e1112a21a9aa54122548b5a2fbf1ddca681f64d148), - (0x2cde628fe6b43f6d0a2406f020530790a1c03642bec15a27e4883830f1906f75, 0x269f42895d8fb9cdc21fe307bf0cf994bc8d4f57f5c9757d7e7f491f67218f41), - (0x385b8c0d2d99558538cb3a9f9032a5aa40e73909f80c72d4b56dabbd35da1edf, 0x3926c421e68c459e921bc92c452b6d471810358c9c9941d0e15255f07e81f52a), - (0x365be6624d5ddbced07b7759377bd70f42ef5c0727849dcf4295e2be882a1229, 0x2379fbecf58b756b83626b73e0a4fe3043b6f6f7d3cca1c35ae298993be00b55), - (0x3992f02cfe9f649c235efb0b12057bf4a6a23de1e9186ecd4755cde6af9f18a1, 0x3defc298ff6d6e34e250f303089cc3ff36f9960f3c37dbff959ec4d722c21354), - (0x0b89c282c8f2d54e66c7a11e6b4338a2f06a7c9430f7d3376328f12fa001cac5, 0x098b5c8ee6548183ccb4e60cdfee10b509db34ed136daf3530a426e8f200e89d), - (0x2f7f85b86b6adcf714d0df7878f4604d33fd319f39bd00fd5c34378247a155b5, 0x3a2f025447b83b65d148e99c93fe8bb991a81ef6d2f827f010680467361c47fc), - (0x1c2d777a98c9dbcf31b45d5a7584b154daed974f3263b6a93831d53bf593e6c2, 0x234766a4b905ed9627f6a200a7b0b50315203613a5b211494a94cf21fb4c386b), - (0x2ebbe4228a40b24bc3f05a07484c2d470ca997d5fd030a26c3c475fd24c5f71b, 0x00f27b013a7a80f1221a9fcf44332b3842ac2af0af4a7108e966f765d8ccebab), - (0x1484b5ee3bd870af246676953341b0825bac76cbe5a753c014bbd04c499c3946, 0x09860840096085811328952d906cdf7bdb748db7e08157d96b3252f909cbc6a9), - (0x13c4224160178c41c828d952f78a8a0d58321a7894cee8f2884c5d1d9e3246ac, 0x3699ad2eb29f2cd4825c0e7cbde86eb19889a00f4afd8cbe40d2eed7c7efd565), - (0x3e6b0d18402a8533aa2c9a681ef0c9c3636154feb1a95b6a50c522833f6e2cb1, 0x20336e540af50c99ef3208ff5dc2f4f0deb2c8beb8f1b3da046eebb05e39deee), - (0x16e89e0cf09f1d68ce3f16728839b4973604d9cad2a6ae3114ce75ce5cb7edeb, 0x1db108cbdb6e1af19ca087d3649ac673d59ced15e6780957d26a83aa8865f116), + (0x3a83a8e762ebade712aa5cf3c41c730a79369475085bf1155579f7f7682408e2, 0x25b00d3ee1da9a6bbd36b35ba461da45abd931c767b863ec4a604f8ce094e4eb), + (0x1caeb4d7ebb44a717f83ee5afd35446a5e2124f6a4075342ba4eff589523fb57, 0x3a8c431a13632a5b5f035eb4b804d37f2591e84d05d765ba3f70a3d61b907ebb), + (0x107d95a6361fc98df9042f32451faa4fd48c1381653be7847d97cf997a55a4ad, 0x31ebf6a2e352108bb180c3278e72d88bb5bab723d3b38aa47c144fc37fb8a962), + (0x090c0e45d81111bd494b9ce7c16fb0e0bbc953911c1701e42a5de5f36389afbc, 0x23ab5bd08aed9eee6c7e78f15652ef51633694b92b1632f9e51ccd31b286066b), + (0x10b2c2af49d17b962211ad5bbb682532940839026d0d242b254b907a50d136ba, 0x1a59a77fd094078d6075a3bdb691bb0b8808a97d2e06092cb6afa767fcdf4cbb), + (0x2b98cb6188d5afb90a5bc94d9f6c23086164284107dfb04a4504b61833a5f9dc, 0x205725733d9c55704a574a244fd4c0038e001261c9f978a2ddbe2ffd33bc026c), + (0x31711515cf172b14651f22ff63fa42011b6de4daa3b71e28a0ce57ae65be3e18, 0x1da5bab80180265242efdfe09c64caf1e987a16384d9eb3bf80343cdd0154dd4), + (0x33548b13c1aeadbbebeced0618b28498d0f95cc26a0413dc6c6b12d305bc9de7, 0x04769755bd24a459f3b86018e78e1f4d14796ba33aa7a08684529e47860f215c), + (0x03e2f4d89dd13482c272721bcffc31fad53b5deb7f402cc2522d2c10cda6bbbd, 0x3b5af207073d98eb42123895069f5a1b726a476ad1ec2945ea63395c284447ec), + (0x3518a704cfc4622b72b4ff3cbc7382fe91fcd77d861e4ef7f2a9830150066746, 0x12639d3e4aa8d1d82cd591fa2e58b1679b677e5e99711a733746dcd47b36a987), + (0x035cc4fa63ce607b7dfdfc08beb5380e3f837090ec4b812b1772ad03ca97156c, 0x14e9d0f3ffedac7d9857fc47f68ccb943f602577a0037e0e3c972b9996f96d71), + (0x00f8d7b4c395ef38584c0182319952b12a25f9d51b75293d4c62f7a5f4405a72, 0x37fa03464d244314d298ecfe5ab9fd9d99d63f38e6c6d54b97efa04b3acc6fb4), + (0x3c0f3f0d7b2306490dac7d578d4846c63adcc76988ce322d8691c3b8b5b0f623, 0x12d81ca672a1c18f6e0d9b7eb8fbabdbe450fae6667cf349c1a0e63ca9a0824e), + (0x27d13b33003ffddcd36efb731fe94db93d181bd994e0c057e945402bc8501789, 0x0e1dde94ea3b35e0d0a66350163ba2ff9dd5070500912b7d076747816965ffd2), + (0x3049e9c8a3e6c7fe628660121f04915e03546b7a2dcb8a3e59fa99546e4f7f86, 0x2dcebc740917584f788b776f4cf1e3cd96b4a29e9df7224fd8e5f428d4112546), + (0x245ebb4ccefa7c4e2d5a9d7b1746b8277abc25f74cd11b2dbb752d49612f248e, 0x145f605111205a7c3e4620ac035b3cccb6375f8d3c3469b7900e427607c401c9), + (0x1751912a19fa0009ece61b686342d6b4385415e942159e8db3f174ad24d612b9, 0x0f31114ef566211d46914d0bc2d1a27a0e34eeda04dab53a0af7a37024f057a1), + (0x091c6c4854fa5d9ed8a966f2a1c4946b41f6872de6c19fa8b521a0a8eb2bd899, 0x29100b4e15344d750fae4a81c82faca1e8e0573336b1f54b394946e95e7baad0), + (0x210297af23386f0691220f2a0e3504336a815cdba5167277a13f0a7b992b8e43, 0x2a184bc5b1981e303cbc0a18f4a01b4dc49695b9a319bd7e713d55e46d1235ae), + (0x05cd80ee69394fb4efe616ef91593c3b8e6e142f2269524f01476ab78a67c9f6, 0x23a7840c00619fe55078a6bffb8a061913f929a7669861ebe99859a48136f12d), + (0x34c8b83a2cc924f1b0237978c8f911e6a54375c509ba46456a011fbb74c8698c, 0x260cc681c222535c0030f702172ee8855b681c16d706b1b9a786165e06705de6), + (0x3dcb136a22551e524212c0325331a9dae5ad6ff356175e6b82a54039475be1ef, 0x3bbbd0d20ea0ebb0f36d740910947d1934bcb93ba16325ea42f124ec0cde7a81), + (0x3bb657ca32617e6242b6c6a0b166a1db205024d0441d091b8d45fb478cd4782c, 0x3189ce1b97103345fc0eafd287eed80ab186151171f22af2c9befc71a0957529), + (0x25578b0a6d546cf38dc84329fad41e59690a2bd94a0db5fddb42e0db8c267827, 0x03448e4552625dda62a96318bcafcc305deafd6a028f8379d8c8d9ffa0f86e64), + (0x30d1828d7463255ad75b39ee4c718de05a762c45c5d717d059496fe05d1575b4, 0x0a8eb70a9b252ee9ee57b29e4dab191cbb29665821830b2ab60fdd5d3414de45), + (0x2b18121165b0ebf2ab46c207d973f44f135c24efecc1cc48d47d38769969aa2e, 0x1a829739cf7eb6422f581f64632c65073aa49819e62e80489b6aae61e6edd6a0), + (0x23ae57d2095a4324262aa76f345fe7bc21d8ad7b3203a8167bf8315e64a11d25, 0x1a871041d826e0e3bd7520e03dca1f56211065b049b2bebc59d8e01b4addb1d3), + (0x029871a070ccef21bb6d1d5d7e51597b0dd8f38208f1b304bd372b48aaea0a3f, 0x3205e4b0ab706647e6f45cf2b2091afd69636a8f61426504983bf44d47d676ec), + (0x0bd7a66e0b566e724536f77fe659014db82286485859c1ae9d95f42cb898f763, 0x358962c131dc5dd41db0fe6a8fe5315b75dd9204682d1de05470184c8a331a8a), + (0x336245b9b67f39852776a1f6ba5072ad3776f38d9b0659568d3afb2e6d3750d3, 0x1ae68f5f91a6d28b62a9fb9240ee53f86e0ac434286429024c253bf85325033e), ], permutation: VerifyingKey { commitments: [ - (0x12dbf09e55d044102f1ae361e8d266b69e1718e1d624b96e77b3cfa1feceb732, 0x31caaac60ce9718af01c87d262fec2c754c77550d8bb35e63f8b07fa9c89fc66), - (0x22da488fb2f178bb8139f14a2aec59c91799533c774af776e94c104f7687c421, 0x2af740c09b699a113bfc6e74b029298d54af6bfb0b92da9c1b0bded28625f450), - (0x2b48b45f4a5a2b4d3605d823a561d7cf0e0ba56c0cbc5d40b58b1b8ea7e36ae5, 0x1035a22259f1b163d3aeb91785cbda566f1501d75011335fa62a0f904c1cb318), - (0x16940bc043dab8afc2a1459edac40382bd790dee8c14db086c4619dc53ebb2e9, 0x1ad505a146f27451d13f90c75b8651eb10a3f67cc6609ea75ca71eee7c1c157d), - (0x3a3ed02c9cbf7b5d099b4c7e3f12f46f3fd898e07f8e7a4f707b1df7f5de3ac3, 0x1d90e34b6d292a48989e3fd47d0eee2ecdffe086ce57e43e1c98dd63ced3fcda), - (0x1f622082868867262854bb7e8cf99d8414bbb244abffde123330b8aed84bd92d, 0x244be4573a4986eaff1e2a6beaa0aecdcdb361540f0b8cf4db289242c6eaefc2), - (0x2d8cbc3dc5fada2ddb980b66a31f57cb02af14982712cb1a12c0d11945811a0e, 0x330cc47c866342bdcd769f9c4ac214a022894aaa4f706182ac5b9e7abac7b2ee), - (0x0367c84844db2532b1fe3833504c46fb366ed8a6b91053a64bb820b5407ba0f1, 0x17fab750fb792623f23d091a07bbc30ce0a669d7270ea36ca38b934bb3caa135), - (0x088b09cd2e59ab2d95dd62077692f366604d9dbda58f7915e5b7c4874cb7ac17, 0x3ce41c4b67191c663c5c5e2413b5359bf55f2d59b65f91b086a2aadfaf4816a2), - (0x230701deaa69a778874d4fa8682366c61954107150807386f5d335157eb93395, 0x000d66512afd16ccc26d6d086a116dfd6f246ec5e4817a71832244218ac6fd9b), - (0x3b7b47bca87fc15cd5565b546ce7624078f7cbf71d4ef78360740cecc16a6415, 0x20ab204faaa0df261b922ee76d97057b4bfa1fb7f2e50015b2aae29d4dbb820c), - (0x07ff65506877a9a21905ddfa323607a02794f495d6448484fda71859af8d51db, 0x0fb1605d3e8d4a77121e70e1339b819825cf04c10edf28b4bf5238a836608c74), + (0x1dcbd758066eec5488296ece96ea7fd0eb814479bf5cf04418c109e0c6e3b65f, 0x16f9507e843611c3891c03a5acbb47cb2d8c591575911c12815cb1e031cab8af), + (0x2388cbed968c22e32b6bd4a1b2395ec1d940135e0136e1df5600f2d759748a64, 0x251608eff7019c64b80df6b45d2a561208e59247da23c0c41f29268ebebcc989), + (0x25d09b3bd46f027633197dae5164cb90c8cf4358598bcd747791b9d95370b1e3, 0x0e94d8861f8b7a6c4f7edf780b131fe2b89757c46cf0b2da24a3592c8824c692), + (0x019398cb329abefa110b3c4d12af9685272f7a611599f5e9c54cd644f0882a51, 0x2a5d9081f77f6e389a355fcc45425a3d4d6de28cb34b26bf54ba66fbd34b8f86), + (0x04596f22bde8d6e02fa2426ea314dd115fd757bc58a60e7349669dd090e5d756, 0x09ead6fcd376d620681f3b14c89337d25ec795cde09fab7da0376bf07bbd402b), + (0x0f7bd41cab58414151f520efc629836da3052d911e95ec09301e25a36e10e9fb, 0x008998b3c16c01c66bd471eca4c16d87adfa0856886b11bff2d04e281e45f234), + (0x122e03591cfc43c812fbfcd45a3062d845b6beecd5e9591fc78cd07734fd5eab, 0x3bb6a66ca91558265efcd59482b2f016ccd34e6b916410e5a198e142ff9257c1), + (0x1656a1c579376b8b92f00c907dc544843231a13b0e0b58be652c9ef44e0d8957, 0x0608dca2d8f9ad5ce0d7b0545a3d148371e4e3993249db87ae4e8a95034e330a), + (0x1d8dd2ef5d363793653c385ef62f382f48d21234caf6dce0806f9295d0f63f47, 0x3aa78867d1d8cc02a50e0ed804a07b0572ae191f0b1c495072fd11f6d2aea2ef), + (0x2cb9fe3cfca45f22aab479b9c54d7731bd165a236bc2d0bfea9af9bdaf8969eb, 0x2acc3469ecb12ba57992881873adeda3f8380262977b53175a99f4009d082405), + (0x1f56f0d66eb5c9f86a680efda44e992322f4934c10b83895ffe60aca9305c5f3, 0x20cb980461e94d5e6a5b5beaf4361b77680f5cdd4f3c4398473aeaca212ada1f), + (0x3f821ad8e7fe3fb349c6e9b316bba2505648a219f337f9e5f1265572b606fb4f, 0x3f4472a3137db52586f3adad1584ee57dc0946595c62f6a39420183814cb3a42), (0x21d210b41675a1eae44cbd0f3fd27d69e30716c71873f6089cee61acacd403ab, 0x2275e97c7e84f68bfaa528a9d8be4e059f7abefd80d03fbfca774e8414a9b7c1), (0x0f9e7de28e0f650d99d99d95c0fcd39c9dac9db5aa1973319f66922d6eb9f7d5, 0x1ba644ecc18ad711ddd33af7f695f6834e9f35c93d47a6a5273dabbe800fc7e6), (0x0aab3ab73afac76277cd94a891de15e42ceb09f3a9865dab5c814bebfbb4453f, 0x27119fec3736d99abeeef1ad7b857db7e754e0c158780ed3dd0cdd4dc2453e10), diff --git a/src/circuit_proof_test_case.bin b/src/circuit_proof_test_case.bin index 027e09fba..a6199f114 100644 Binary files a/src/circuit_proof_test_case.bin and b/src/circuit_proof_test_case.bin differ diff --git a/src/constants/sinsemilla.rs b/src/constants/sinsemilla.rs index f6c6ffba6..1e43306f4 100644 --- a/src/constants/sinsemilla.rs +++ b/src/constants/sinsemilla.rs @@ -37,6 +37,18 @@ pub const Q_NOTE_COMMITMENT_M_GENERATOR: ([u8; 32], [u8; 32]) = ( ], ); +/// Generator used in SinsemillaHashToPoint for ZSA note commitment +pub const Q_NOTE_ZSA_COMMITMENT_M_GENERATOR: ([u8; 32], [u8; 32]) = ( + [ + 207, 235, 191, 45, 66, 225, 8, 126, 199, 188, 39, 26, 115, 106, 18, 2, 191, 173, 75, 9, 65, + 225, 175, 193, 224, 202, 228, 177, 3, 75, 228, 1, + ], + [ + 220, 251, 80, 86, 182, 182, 99, 67, 254, 97, 241, 22, 79, 111, 161, 176, 79, 97, 208, 98, + 116, 57, 110, 196, 25, 73, 239, 31, 196, 97, 19, 30, + ], +); + /// Generator used in SinsemillaHashToPoint for IVK commitment pub const Q_COMMIT_IVK_M_GENERATOR: ([u8; 32], [u8; 32]) = ( [ @@ -78,6 +90,7 @@ pub(crate) fn i2lebsp_k(int: usize) -> [bool; K] { #[derive(Clone, Debug, Eq, PartialEq)] pub enum OrchardHashDomains { NoteCommit, + NoteZsaCommit, CommitIvk, MerkleCrh, } @@ -96,6 +109,11 @@ impl HashDomains for OrchardHashDomains { pallas::Base::from_repr(Q_NOTE_COMMITMENT_M_GENERATOR.1).unwrap(), ) .unwrap(), + OrchardHashDomains::NoteZsaCommit => pallas::Affine::from_xy( + pallas::Base::from_repr(Q_NOTE_ZSA_COMMITMENT_M_GENERATOR.0).unwrap(), + pallas::Base::from_repr(Q_NOTE_ZSA_COMMITMENT_M_GENERATOR.1).unwrap(), + ) + .unwrap(), OrchardHashDomains::MerkleCrh => pallas::Affine::from_xy( pallas::Base::from_repr(Q_MERKLE_CRH.0).unwrap(), pallas::Base::from_repr(Q_MERKLE_CRH.1).unwrap(), @@ -108,6 +126,7 @@ impl HashDomains for OrchardHashDomains { #[derive(Clone, Debug, Eq, PartialEq)] pub enum OrchardCommitDomains { NoteCommit, + NoteZsaCommit, CommitIvk, } @@ -115,6 +134,8 @@ impl CommitDomains for Or fn r(&self) -> OrchardFixedBasesFull { match self { Self::NoteCommit => OrchardFixedBasesFull::NoteCommitR, + // For ZSA note commitment, we use the same `R` than for ZEC note commitment. + Self::NoteZsaCommit => OrchardFixedBasesFull::NoteCommitR, Self::CommitIvk => OrchardFixedBasesFull::CommitIvkR, } } @@ -122,6 +143,7 @@ impl CommitDomains for Or fn hash_domain(&self) -> OrchardHashDomains { match self { Self::NoteCommit => OrchardHashDomains::NoteCommit, + Self::NoteZsaCommit => OrchardHashDomains::NoteZsaCommit, Self::CommitIvk => OrchardHashDomains::CommitIvk, } } @@ -131,7 +153,10 @@ impl CommitDomains for Or mod tests { use super::*; use crate::constants::{ - fixed_bases::{COMMIT_IVK_PERSONALIZATION, NOTE_COMMITMENT_PERSONALIZATION}, + fixed_bases::{ + COMMIT_IVK_PERSONALIZATION, NOTE_COMMITMENT_PERSONALIZATION, + NOTE_ZSA_COMMITMENT_PERSONALIZATION, + }, sinsemilla::MERKLE_CRH_PERSONALIZATION, }; use group::{ff::PrimeField, Curve}; @@ -192,6 +217,22 @@ mod tests { ); } + #[test] + fn q_note_zsa_commitment_m() { + let domain = CommitDomain::new(NOTE_ZSA_COMMITMENT_PERSONALIZATION); + let point = domain.Q(); + let coords = point.to_affine().coordinates().unwrap(); + + assert_eq!( + *coords.x(), + pallas::Base::from_repr(Q_NOTE_ZSA_COMMITMENT_M_GENERATOR.0).unwrap() + ); + assert_eq!( + *coords.y(), + pallas::Base::from_repr(Q_NOTE_ZSA_COMMITMENT_M_GENERATOR.1).unwrap() + ); + } + #[test] fn q_commit_ivk_m() { let domain = CommitDomain::new(COMMIT_IVK_PERSONALIZATION); diff --git a/src/note/asset_base.rs b/src/note/asset_base.rs index 1079e4a6c..63da3a5f8 100644 --- a/src/note/asset_base.rs +++ b/src/note/asset_base.rs @@ -2,6 +2,7 @@ use blake2b_simd::{Hash as Blake2bHash, Params}; use group::GroupEncoding; use halo2_proofs::arithmetic::CurveExt; use pasta_curves::pallas; +use rand::RngCore; use std::hash::{Hash, Hasher}; use subtle::{Choice, ConstantTimeEq, CtOption}; @@ -9,7 +10,7 @@ use subtle::{Choice, ConstantTimeEq, CtOption}; use crate::constants::fixed_bases::{ NATIVE_ASSET_BASE_V_BYTES, VALUE_COMMITMENT_PERSONALIZATION, ZSA_ASSET_BASE_PERSONALIZATION, }; -use crate::keys::IssuanceValidatingKey; +use crate::keys::{IssuanceAuthorizingKey, IssuanceValidatingKey, SpendingKey}; /// Note type identifier. #[derive(Clone, Copy, Debug, Eq)] @@ -86,6 +87,17 @@ impl AssetBase { pub fn is_native(&self) -> Choice { self.0.ct_eq(&Self::native().0) } + + /// Generates a ZSA random asset. + /// + /// This is only used in tests. + pub(crate) fn random(rng: &mut impl RngCore) -> Self { + let sk = SpendingKey::random(rng); + let isk = IssuanceAuthorizingKey::from(&sk); + let ik = IssuanceValidatingKey::from(&isk); + let asset_descr = "zsa_asset"; + AssetBase::derive(&ik, asset_descr) + } } impl Hash for AssetBase { diff --git a/src/note/commitment.rs b/src/note/commitment.rs index 18024afe8..995b13693 100644 --- a/src/note/commitment.rs +++ b/src/note/commitment.rs @@ -17,7 +17,7 @@ use crate::{ }; #[derive(Clone, Debug)] -pub(crate) struct NoteCommitTrapdoor(pub(super) pallas::Scalar); +pub(crate) struct NoteCommitTrapdoor(pub(crate) pallas::Scalar); impl NoteCommitTrapdoor { pub(crate) fn inner(&self) -> pallas::Scalar { @@ -41,7 +41,7 @@ impl NoteCommitment { /// Defined in [Zcash Protocol Spec § 5.4.8.4: Sinsemilla commitments][concretesinsemillacommit]. /// /// [concretesinsemillacommit]: https://zips.z.cash/protocol/nu5.pdf#concretesinsemillacommit - pub(super) fn derive( + pub(crate) fn derive( g_d: [u8; 32], pk_d: [u8; 32], v: NoteValue, diff --git a/tests/zsa.rs b/tests/zsa.rs index ec53b93eb..ca8c1b874 100644 --- a/tests/zsa.rs +++ b/tests/zsa.rs @@ -259,7 +259,7 @@ fn build_and_verify_bundle( }; // Verify the shielded bundle, currently without the proof. - verify_bundle(&shielded_bundle, &keys.vk, false); + verify_bundle(&shielded_bundle, &keys.vk, true); assert_eq!(shielded_bundle.actions().len(), expected_num_actions); Ok(()) }