Use an existing fixed column for Action circuit global constants

This commit is contained in:
Jack Grigg 2021-07-21 17:20:39 +01:00
parent 9d6ae478b3
commit 43d187283e
1 changed files with 5 additions and 7 deletions

View File

@ -5,7 +5,7 @@ use std::mem;
use group::{Curve, GroupEncoding};
use halo2::{
circuit::{floor_planner, Layouter},
plonk::{self, Advice, Column, Expression, Fixed, Instance as InstanceColumn, Selector},
plonk::{self, Advice, Column, Expression, Instance as InstanceColumn, Selector},
poly::Rotation,
transcript::{Blake2bRead, Blake2bWrite},
};
@ -84,7 +84,6 @@ const ENABLE_OUTPUT: usize = 8;
#[derive(Clone, Debug)]
pub struct Config {
primary: Column<InstanceColumn>,
constants: Column<Fixed>,
q_orchard: Selector,
advices: [Column<Advice>; 10],
ecc_config: EccConfig,
@ -195,10 +194,6 @@ impl plonk::Circuit<pallas::Base> for Circuit {
let primary = meta.instance_column();
meta.enable_equality(primary.into());
// Shared fixed column used to load constants
let constants = meta.fixed_column();
meta.enable_constant(constants);
// Permutation over all advice columns.
for advice in advices.iter() {
meta.enable_equality((*advice).into());
@ -222,6 +217,10 @@ impl plonk::Circuit<pallas::Base> for Circuit {
let rc_a = lagrange_coeffs[2..5].try_into().unwrap();
let rc_b = lagrange_coeffs[5..8].try_into().unwrap();
// Also use the first Lagrange coefficient column for loading global constants.
// It's free real estate :)
meta.enable_constant(lagrange_coeffs[0]);
// We have a lot of free space in the right-most advice columns; use one of them
// for all of our range checks.
let range_check = LookupRangeCheckConfig::configure(meta, advices[9], table_idx);
@ -294,7 +293,6 @@ impl plonk::Circuit<pallas::Base> for Circuit {
Config {
primary,
constants,
q_orchard,
advices,
ecc_config,