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 group::{Curve, GroupEncoding};
use halo2::{ use halo2::{
circuit::{floor_planner, Layouter}, 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, poly::Rotation,
transcript::{Blake2bRead, Blake2bWrite}, transcript::{Blake2bRead, Blake2bWrite},
}; };
@ -84,7 +84,6 @@ const ENABLE_OUTPUT: usize = 8;
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
pub struct Config { pub struct Config {
primary: Column<InstanceColumn>, primary: Column<InstanceColumn>,
constants: Column<Fixed>,
q_orchard: Selector, q_orchard: Selector,
advices: [Column<Advice>; 10], advices: [Column<Advice>; 10],
ecc_config: EccConfig, ecc_config: EccConfig,
@ -195,10 +194,6 @@ impl plonk::Circuit<pallas::Base> for Circuit {
let primary = meta.instance_column(); let primary = meta.instance_column();
meta.enable_equality(primary.into()); 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. // Permutation over all advice columns.
for advice in advices.iter() { for advice in advices.iter() {
meta.enable_equality((*advice).into()); 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_a = lagrange_coeffs[2..5].try_into().unwrap();
let rc_b = lagrange_coeffs[5..8].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 // We have a lot of free space in the right-most advice columns; use one of them
// for all of our range checks. // for all of our range checks.
let range_check = LookupRangeCheckConfig::configure(meta, advices[9], table_idx); let range_check = LookupRangeCheckConfig::configure(meta, advices[9], table_idx);
@ -294,7 +293,6 @@ impl plonk::Circuit<pallas::Base> for Circuit {
Config { Config {
primary, primary,
constants,
q_orchard, q_orchard,
advices, advices,
ecc_config, ecc_config,