mirror of https://github.com/zcash/halo2.git
Update to assign_table API.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
parent
a273307661
commit
145da9c510
|
@ -195,8 +195,12 @@ impl plonk::Circuit<pallas::Base> for Circuit {
|
|||
});
|
||||
|
||||
// Fixed columns for the Sinsemilla generator lookup table
|
||||
let table_idx = meta.fixed_column();
|
||||
let lookup = (table_idx, meta.fixed_column(), meta.fixed_column());
|
||||
let table_idx = meta.lookup_table_column();
|
||||
let lookup = (
|
||||
table_idx,
|
||||
meta.lookup_table_column(),
|
||||
meta.lookup_table_column(),
|
||||
);
|
||||
|
||||
// Instance column used for public inputs
|
||||
let primary = meta.instance_column();
|
||||
|
|
|
@ -433,7 +433,7 @@ mod tests {
|
|||
meta.advice_column(),
|
||||
meta.advice_column(),
|
||||
];
|
||||
let lookup_table = meta.fixed_column();
|
||||
let lookup_table = meta.lookup_table_column();
|
||||
let lagrange_coeffs = [
|
||||
meta.fixed_column(),
|
||||
meta.fixed_column(),
|
||||
|
|
|
@ -402,7 +402,7 @@ pub mod tests {
|
|||
meta.advice_column(),
|
||||
meta.advice_column(),
|
||||
];
|
||||
let lookup_table = meta.fixed_column();
|
||||
let lookup_table = meta.lookup_table_column();
|
||||
let lagrange_coeffs = [
|
||||
meta.fixed_column(),
|
||||
meta.fixed_column(),
|
||||
|
|
|
@ -460,7 +460,7 @@ mod tests {
|
|||
let constants = meta.fixed_column();
|
||||
meta.enable_constant(constants);
|
||||
|
||||
let table_idx = meta.fixed_column();
|
||||
let table_idx = meta.lookup_table_column();
|
||||
let lagrange_coeffs = [
|
||||
meta.fixed_column(),
|
||||
meta.fixed_column(),
|
||||
|
@ -473,7 +473,11 @@ mod tests {
|
|||
];
|
||||
|
||||
// Fixed columns for the Sinsemilla generator lookup table
|
||||
let lookup = (table_idx, meta.fixed_column(), meta.fixed_column());
|
||||
let lookup = (
|
||||
table_idx,
|
||||
meta.lookup_table_column(),
|
||||
meta.lookup_table_column(),
|
||||
);
|
||||
|
||||
let range_check = LookupRangeCheckConfig::configure(meta, advices[9], table_idx);
|
||||
|
||||
|
|
|
@ -16,7 +16,10 @@ use crate::{
|
|||
use halo2::{
|
||||
arithmetic::{CurveAffine, FieldExt},
|
||||
circuit::{Chip, Layouter},
|
||||
plonk::{Advice, Column, ConstraintSystem, Error, Expression, Fixed, Selector, VirtualCells},
|
||||
plonk::{
|
||||
Advice, Column, ConstraintSystem, Error, Expression, Fixed, Selector, TableColumn,
|
||||
VirtualCells,
|
||||
},
|
||||
poly::Rotation,
|
||||
};
|
||||
use pasta_curves::pallas;
|
||||
|
@ -114,7 +117,7 @@ impl SinsemillaChip {
|
|||
advices: [Column<Advice>; 5],
|
||||
witness_pieces: Column<Advice>,
|
||||
fixed_y_q: Column<Fixed>,
|
||||
lookup: (Column<Fixed>, Column<Fixed>, Column<Fixed>),
|
||||
lookup: (TableColumn, TableColumn, TableColumn),
|
||||
range_check: LookupRangeCheckConfig<pallas::Base, { sinsemilla::K }>,
|
||||
) -> <Self as Chip<pallas::Base>>::Config {
|
||||
// Enable equality on all advice columns
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use crate::primitives::sinsemilla::{self, sinsemilla_s_generators, S_PERSONALIZATION};
|
||||
use halo2::{
|
||||
circuit::Layouter,
|
||||
plonk::{Column, ConstraintSystem, Error, Expression, Fixed},
|
||||
plonk::{ConstraintSystem, Error, Expression, TableColumn},
|
||||
poly::Rotation,
|
||||
};
|
||||
|
||||
|
@ -15,9 +15,9 @@ use group::Curve;
|
|||
/// Table containing independent generators S[0..2^k]
|
||||
#[derive(Eq, PartialEq, Copy, Clone, Debug)]
|
||||
pub struct GeneratorTableConfig {
|
||||
pub table_idx: Column<Fixed>,
|
||||
pub table_x: Column<Fixed>,
|
||||
pub table_y: Column<Fixed>,
|
||||
pub table_idx: TableColumn,
|
||||
pub table_x: TableColumn,
|
||||
pub table_y: TableColumn,
|
||||
}
|
||||
|
||||
impl GeneratorTableConfig {
|
||||
|
@ -84,15 +84,15 @@ impl GeneratorTableConfig {
|
|||
}
|
||||
|
||||
pub fn load(&self, layouter: &mut impl Layouter<pallas::Base>) -> Result<(), Error> {
|
||||
layouter.assign_region(
|
||||
layouter.assign_table(
|
||||
|| "generator_table",
|
||||
|mut gate| {
|
||||
|mut table| {
|
||||
// We generate the row values lazily (we only need them during keygen).
|
||||
let mut rows = sinsemilla_s_generators();
|
||||
|
||||
for index in 0..(1 << sinsemilla::K) {
|
||||
let mut row = None;
|
||||
gate.assign_fixed(
|
||||
table.assign_cell(
|
||||
|| "table_idx",
|
||||
self.table_idx,
|
||||
index,
|
||||
|
@ -101,13 +101,13 @@ impl GeneratorTableConfig {
|
|||
Ok(pallas::Base::from_u64(index as u64))
|
||||
},
|
||||
)?;
|
||||
gate.assign_fixed(
|
||||
table.assign_cell(
|
||||
|| "table_x",
|
||||
self.table_x,
|
||||
index,
|
||||
|| row.map(|(x, _)| x).ok_or(Error::SynthesisError),
|
||||
)?;
|
||||
gate.assign_fixed(
|
||||
table.assign_cell(
|
||||
|| "table_y",
|
||||
self.table_y,
|
||||
index,
|
||||
|
|
|
@ -698,8 +698,12 @@ mod tests {
|
|||
meta.enable_equality((*advice).into());
|
||||
}
|
||||
|
||||
let table_idx = meta.fixed_column();
|
||||
let lookup = (table_idx, meta.fixed_column(), meta.fixed_column());
|
||||
let table_idx = meta.lookup_table_column();
|
||||
let lookup = (
|
||||
table_idx,
|
||||
meta.lookup_table_column(),
|
||||
meta.lookup_table_column(),
|
||||
);
|
||||
let lagrange_coeffs = [
|
||||
meta.fixed_column(),
|
||||
meta.fixed_column(),
|
||||
|
|
|
@ -198,9 +198,9 @@ pub mod tests {
|
|||
|
||||
// Fixed columns for the Sinsemilla generator lookup table
|
||||
let lookup = (
|
||||
meta.fixed_column(),
|
||||
meta.fixed_column(),
|
||||
meta.fixed_column(),
|
||||
meta.lookup_table_column(),
|
||||
meta.lookup_table_column(),
|
||||
meta.lookup_table_column(),
|
||||
);
|
||||
|
||||
let range_check = LookupRangeCheckConfig::configure(meta, advices[9], lookup.0);
|
||||
|
|
|
@ -1532,8 +1532,12 @@ mod tests {
|
|||
meta.enable_equality((*advice).into());
|
||||
}
|
||||
|
||||
let table_idx = meta.fixed_column();
|
||||
let lookup = (table_idx, meta.fixed_column(), meta.fixed_column());
|
||||
let table_idx = meta.lookup_table_column();
|
||||
let lookup = (
|
||||
table_idx,
|
||||
meta.lookup_table_column(),
|
||||
meta.lookup_table_column(),
|
||||
);
|
||||
let lagrange_coeffs = [
|
||||
meta.fixed_column(),
|
||||
meta.fixed_column(),
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
use crate::spec::lebs2ip;
|
||||
use halo2::{
|
||||
circuit::{Layouter, Region},
|
||||
plonk::{Advice, Column, ConstraintSystem, Error, Fixed, Selector},
|
||||
plonk::{Advice, Column, ConstraintSystem, Error, Selector, TableColumn},
|
||||
poly::Rotation,
|
||||
};
|
||||
use std::{convert::TryInto, marker::PhantomData};
|
||||
|
@ -29,7 +29,7 @@ pub struct LookupRangeCheckConfig<F: FieldExt + PrimeFieldBits, const K: usize>
|
|||
pub q_running: Selector,
|
||||
pub q_bitshift: Selector,
|
||||
pub running_sum: Column<Advice>,
|
||||
table_idx: Column<Fixed>,
|
||||
table_idx: TableColumn,
|
||||
_marker: PhantomData<F>,
|
||||
}
|
||||
|
||||
|
@ -48,7 +48,7 @@ impl<F: FieldExt + PrimeFieldBits, const K: usize> LookupRangeCheckConfig<F, K>
|
|||
pub fn configure(
|
||||
meta: &mut ConstraintSystem<F>,
|
||||
running_sum: Column<Advice>,
|
||||
table_idx: Column<Fixed>,
|
||||
table_idx: TableColumn,
|
||||
) -> Self {
|
||||
meta.enable_equality(running_sum.into());
|
||||
|
||||
|
@ -119,12 +119,12 @@ impl<F: FieldExt + PrimeFieldBits, const K: usize> LookupRangeCheckConfig<F, K>
|
|||
// for now, since the Sinsemilla chip provides a pre-loaded table in the
|
||||
// Orchard context.
|
||||
pub fn load(&self, layouter: &mut impl Layouter<F>) -> Result<(), Error> {
|
||||
layouter.assign_region(
|
||||
layouter.assign_table(
|
||||
|| "table_idx",
|
||||
|mut gate| {
|
||||
|mut table| {
|
||||
// We generate the row values lazily (we only need them during keygen).
|
||||
for index in 0..(1 << K) {
|
||||
gate.assign_fixed(
|
||||
table.assign_cell(
|
||||
|| "table_idx",
|
||||
self.table_idx,
|
||||
index,
|
||||
|
@ -402,7 +402,7 @@ mod tests {
|
|||
|
||||
fn configure(meta: &mut ConstraintSystem<F>) -> Self::Config {
|
||||
let running_sum = meta.advice_column();
|
||||
let table_idx = meta.fixed_column();
|
||||
let table_idx = meta.lookup_table_column();
|
||||
let constants = meta.fixed_column();
|
||||
meta.enable_constant(constants);
|
||||
|
||||
|
@ -507,7 +507,7 @@ mod tests {
|
|||
|
||||
fn configure(meta: &mut ConstraintSystem<F>) -> Self::Config {
|
||||
let running_sum = meta.advice_column();
|
||||
let table_idx = meta.fixed_column();
|
||||
let table_idx = meta.lookup_table_column();
|
||||
let constants = meta.fixed_column();
|
||||
meta.enable_constant(constants);
|
||||
|
||||
|
|
Loading…
Reference in New Issue