mirror of
https://github.com/icemelon/halo2-examples.git
synced 2026-01-08 21:48:01 -05:00
update the column naming
This commit is contained in:
@@ -3,7 +3,9 @@ use halo2_proofs::{arithmetic::FieldExt, circuit::*, plonk::*, poly::Rotation};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
struct FibonacciConfig {
|
||||
pub advice: [Column<Advice>; 3],
|
||||
pub col_a: Column<Advice>,
|
||||
pub col_b: Column<Advice>,
|
||||
pub col_c: Column<Advice>,
|
||||
pub selector: Selector,
|
||||
pub instance: Column<Instance>,
|
||||
}
|
||||
@@ -47,7 +49,9 @@ impl<F: FieldExt> FibonacciChip<F> {
|
||||
});
|
||||
|
||||
FibonacciConfig {
|
||||
advice: [col_a, col_b, col_c],
|
||||
col_a,
|
||||
col_b,
|
||||
col_c,
|
||||
selector,
|
||||
instance,
|
||||
}
|
||||
@@ -67,19 +71,19 @@ impl<F: FieldExt> FibonacciChip<F> {
|
||||
|| "f(0)",
|
||||
self.config.instance,
|
||||
0,
|
||||
self.config.advice[0],
|
||||
self.config.col_a,
|
||||
0)?;
|
||||
|
||||
let b_cell = region.assign_advice_from_instance(
|
||||
|| "f(1)",
|
||||
self.config.instance,
|
||||
1,
|
||||
self.config.advice[1],
|
||||
self.config.col_b,
|
||||
0)?;
|
||||
|
||||
let c_cell = region.assign_advice(
|
||||
|| "add",
|
||||
self.config.advice[2],
|
||||
|| "a + b",
|
||||
self.config.col_c,
|
||||
0,
|
||||
|| a_cell.value().copied() + b_cell.value(),
|
||||
)?;
|
||||
@@ -104,19 +108,19 @@ impl<F: FieldExt> FibonacciChip<F> {
|
||||
prev_b.copy_advice(
|
||||
|| "a",
|
||||
&mut region,
|
||||
self.config.advice[0],
|
||||
self.config.col_a,
|
||||
0,
|
||||
)?;
|
||||
prev_c.copy_advice(
|
||||
|| "b",
|
||||
&mut region,
|
||||
self.config.advice[1],
|
||||
self.config.col_b,
|
||||
0,
|
||||
)?;
|
||||
|
||||
let c_cell = region.assign_advice(
|
||||
|| "c",
|
||||
self.config.advice[2],
|
||||
self.config.col_c,
|
||||
0,
|
||||
|| prev_b.value().copied() + prev_c.value(),
|
||||
)?;
|
||||
|
||||
@@ -113,43 +113,44 @@ impl<F: FieldExt> FibonacciChip<F> {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
struct MyCircuit<F>(PhantomData<F>);
|
||||
|
||||
impl<F: FieldExt> Circuit<F> for MyCircuit<F> {
|
||||
type Config = FibonacciConfig;
|
||||
type FloorPlanner = SimpleFloorPlanner;
|
||||
|
||||
fn without_witnesses(&self) -> Self {
|
||||
Self::default()
|
||||
}
|
||||
|
||||
fn configure(meta: &mut ConstraintSystem<F>) -> Self::Config {
|
||||
let advice = meta.advice_column();
|
||||
let instance = meta.instance_column();
|
||||
FibonacciChip::configure(meta, advice, instance)
|
||||
}
|
||||
|
||||
fn synthesize(
|
||||
&self,
|
||||
config: Self::Config,
|
||||
mut layouter: impl Layouter<F>,
|
||||
) -> Result<(), Error> {
|
||||
let chip = FibonacciChip::construct(config);
|
||||
|
||||
let out_cell = chip.assign(layouter.namespace(|| "entire table"), 10)?;
|
||||
|
||||
chip.expose_public(layouter.namespace(|| "out"), out_cell, 2)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use super::MyCircuit;
|
||||
use std::marker::PhantomData;
|
||||
use halo2_proofs::{dev::MockProver, pasta::Fp};
|
||||
|
||||
#[derive(Default)]
|
||||
struct MyCircuit<F>(PhantomData<F>);
|
||||
|
||||
impl<F: FieldExt> Circuit<F> for MyCircuit<F> {
|
||||
type Config = FibonacciConfig;
|
||||
type FloorPlanner = SimpleFloorPlanner;
|
||||
|
||||
fn without_witnesses(&self) -> Self {
|
||||
Self::default()
|
||||
}
|
||||
|
||||
fn configure(meta: &mut ConstraintSystem<F>) -> Self::Config {
|
||||
let advice = meta.advice_column();
|
||||
let instance = meta.instance_column();
|
||||
FibonacciChip::configure(meta, advice, instance)
|
||||
}
|
||||
|
||||
fn synthesize(
|
||||
&self,
|
||||
config: Self::Config,
|
||||
mut layouter: impl Layouter<F>,
|
||||
) -> Result<(), Error> {
|
||||
let chip = FibonacciChip::construct(config);
|
||||
|
||||
let out_cell = chip.assign(layouter.namespace(|| "entire table"), 10)?;
|
||||
|
||||
chip.expose_public(layouter.namespace(|| "out"), out_cell, 2)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fibonacci_example2() {
|
||||
let k = 4;
|
||||
|
||||
Reference in New Issue
Block a user