mirror of https://github.com/zcash/halo2.git
Use an existing fixed column for Action circuit global constants
This commit is contained in:
parent
9d6ae478b3
commit
43d187283e
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue