Move SHA-256 gadget and chip into examples

This commit is contained in:
Jack Grigg 2021-02-25 19:50:50 +00:00
parent c64346467b
commit e41fd7ca12
21 changed files with 26 additions and 37 deletions

View File

@ -38,10 +38,6 @@ harness = false
name = "plonk" name = "plonk"
harness = false harness = false
[[bench]]
name = "sha256"
harness = false
[dependencies] [dependencies]
backtrace = { version = "0.3", optional = true } backtrace = { version = "0.3", optional = true }
subtle = "2.3" subtle = "2.3"

View File

@ -1,12 +1,7 @@
#[macro_use]
extern crate criterion;
extern crate halo2;
use halo2::{ use halo2::{
arithmetic::FieldExt, arithmetic::FieldExt,
circuit::Chip, circuit::Chip,
circuit::{layouter, Layouter}, circuit::{layouter, Layouter},
gadget::sha256::{BlockWord, Sha256, Table16Chip, Table16Config, BLOCK_SIZE},
pasta::EqAffine, pasta::EqAffine,
plonk::{ plonk::{
create_proof, keygen_pk, keygen_vk, verify_proof, Assignment, Circuit, ConstraintSystem, create_proof, keygen_pk, keygen_vk, verify_proof, Assignment, Circuit, ConstraintSystem,
@ -22,7 +17,9 @@ use std::{
path::Path, path::Path,
}; };
use criterion::Criterion; use criterion::{criterion_group, criterion_main, Criterion};
use crate::{BlockWord, Sha256, Table16Chip, Table16Config, BLOCK_SIZE};
fn bench(name: &str, k: u32, c: &mut Criterion) { fn bench(name: &str, k: u32, c: &mut Criterion) {
struct MyCircuit {} struct MyCircuit {}

View File

@ -6,11 +6,12 @@ use std::cmp::min;
use std::convert::TryInto; use std::convert::TryInto;
use std::fmt; use std::fmt;
use crate::{ use halo2::{
circuit::{Chip, Layouter}, circuit::{Chip, Layouter},
plonk::Error, plonk::Error,
}; };
mod benches;
mod table16; mod table16;
pub use table16::{BlockWord, Table16Chip, Table16Config}; pub use table16::{BlockWord, Table16Chip, Table16Config};
@ -157,3 +158,5 @@ impl<Sha256Chip: Sha256Instructions> Sha256<Sha256Chip> {
hasher.finalize(layouter.namespace(|| "finalize")) hasher.finalize(layouter.namespace(|| "finalize"))
} }
} }
fn main() {}

View File

@ -1,7 +1,7 @@
use std::marker::PhantomData; use std::marker::PhantomData;
use super::Sha256Instructions; use super::Sha256Instructions;
use crate::{ use halo2::{
arithmetic::FieldExt, arithmetic::FieldExt,
circuit::{Cell, Chip, Layouter, Region}, circuit::{Cell, Chip, Layouter, Region},
plonk::{Advice, Column, ConstraintSystem, Error, Permutation}, plonk::{Advice, Column, ConstraintSystem, Error, Permutation},
@ -324,7 +324,7 @@ trait Table16Assignment<F: FieldExt> {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
#[cfg(feature = "dev-graph")] #[cfg(feature = "dev-graph")]
use crate::{ use halo2::{
arithmetic::FieldExt, arithmetic::FieldExt,
circuit::Chip, circuit::Chip,
circuit::{layouter, Layouter}, circuit::{layouter, Layouter},

View File

@ -2,7 +2,7 @@ use super::{
super::DIGEST_SIZE, BlockWord, CellValue16, CellValue32, SpreadInputs, SpreadVar, super::DIGEST_SIZE, BlockWord, CellValue16, CellValue32, SpreadInputs, SpreadVar,
Table16Assignment, Table16Chip, ROUNDS, STATE, Table16Assignment, Table16Chip, ROUNDS, STATE,
}; };
use crate::{ use halo2::{
arithmetic::FieldExt, arithmetic::FieldExt,
circuit::Layouter, circuit::Layouter,
plonk::{Advice, Column, ConstraintSystem, Error, Fixed, Permutation}, plonk::{Advice, Column, ConstraintSystem, Error, Fixed, Permutation},
@ -800,7 +800,7 @@ mod tests {
Table16Chip, Table16Config, IV, Table16Chip, Table16Config, IV,
}; };
use super::Compression; use super::Compression;
use crate::{ use halo2::{
arithmetic::FieldExt, arithmetic::FieldExt,
circuit::{layouter, Layouter}, circuit::{layouter, Layouter},
dev::MockProver, dev::MockProver,

View File

@ -1,6 +1,5 @@
use super::super::{util::*, Gate}; use super::super::{util::*, Gate};
use crate::arithmetic::FieldExt; use halo2::{arithmetic::FieldExt, plonk::Expression};
use crate::plonk::Expression;
pub struct CompressionGate<F: FieldExt>(pub Expression<F>); pub struct CompressionGate<F: FieldExt>(pub Expression<F>);

View File

@ -5,7 +5,7 @@ use super::super::{
use super::{ use super::{
AbcdVar, Compression, EfghVar, RoundWordA, RoundWordDense, RoundWordE, RoundWordSpread, State, AbcdVar, Compression, EfghVar, RoundWordA, RoundWordDense, RoundWordE, RoundWordSpread, State,
}; };
use crate::{ use halo2::{
arithmetic::FieldExt, arithmetic::FieldExt,
circuit::Region, circuit::Region,
plonk::{Advice, Column, Error}, plonk::{Advice, Column, Error},

View File

@ -1,6 +1,6 @@
use super::super::{super::DIGEST_SIZE, BlockWord, CellValue16, Table16Assignment, Table16Chip}; use super::super::{super::DIGEST_SIZE, BlockWord, CellValue16, Table16Assignment, Table16Chip};
use super::{compression_util::*, Compression, State}; use super::{compression_util::*, Compression, State};
use crate::{ use halo2::{
arithmetic::FieldExt, arithmetic::FieldExt,
circuit::Region, circuit::Region,
plonk::{Advice, Column, Error}, plonk::{Advice, Column, Error},

View File

@ -1,6 +1,6 @@
use super::super::{RoundWordDense, RoundWordSpread, StateWord, Table16Chip, STATE}; use super::super::{RoundWordDense, RoundWordSpread, StateWord, Table16Chip, STATE};
use super::{compression_util::*, Compression, State}; use super::{compression_util::*, Compression, State};
use crate::{arithmetic::FieldExt, circuit::Region, plonk::Error}; use halo2::{arithmetic::FieldExt, circuit::Region, plonk::Error};
impl Compression { impl Compression {
pub fn initialize_iv<F: FieldExt>( pub fn initialize_iv<F: FieldExt>(

View File

@ -2,7 +2,7 @@ use super::super::{
CellValue16, RoundWordA, RoundWordE, StateWord, Table16Assignment, Table16Chip, ROUND_CONSTANTS, CellValue16, RoundWordA, RoundWordE, StateWord, Table16Assignment, Table16Chip, ROUND_CONSTANTS,
}; };
use super::{compression_util::*, Compression, State}; use super::{compression_util::*, Compression, State};
use crate::{arithmetic::FieldExt, circuit::Region, plonk::Error}; use halo2::{arithmetic::FieldExt, circuit::Region, plonk::Error};
impl Compression { impl Compression {
pub fn assign_round<F: FieldExt>( pub fn assign_round<F: FieldExt>(

View File

@ -1,5 +1,4 @@
use crate::arithmetic::FieldExt; use halo2::{arithmetic::FieldExt, plonk::Expression};
use crate::plonk::Expression;
pub struct Gate<F: FieldExt>(pub Expression<F>); pub struct Gate<F: FieldExt>(pub Expression<F>);

View File

@ -3,7 +3,7 @@ use std::convert::TryInto;
use super::{ use super::{
super::BLOCK_SIZE, BlockWord, CellValue16, SpreadInputs, Table16Assignment, Table16Chip, ROUNDS, super::BLOCK_SIZE, BlockWord, CellValue16, SpreadInputs, Table16Assignment, Table16Chip, ROUNDS,
}; };
use crate::{ use halo2::{
arithmetic::FieldExt, arithmetic::FieldExt,
circuit::{Cell, Layouter}, circuit::{Cell, Layouter},
plonk::{Advice, Column, ConstraintSystem, Error, Fixed, Permutation}, plonk::{Advice, Column, ConstraintSystem, Error, Fixed, Permutation},
@ -479,7 +479,7 @@ mod tests {
super::BLOCK_SIZE, BlockWord, Compression, SpreadTable, Table16Chip, Table16Config, super::BLOCK_SIZE, BlockWord, Compression, SpreadTable, Table16Chip, Table16Config,
}; };
use super::{schedule_util::*, MessageSchedule}; use super::{schedule_util::*, MessageSchedule};
use crate::{ use halo2::{
arithmetic::FieldExt, arithmetic::FieldExt,
circuit::{layouter, Layouter}, circuit::{layouter, Layouter},
dev::MockProver, dev::MockProver,

View File

@ -1,6 +1,5 @@
use super::super::Gate; use super::super::Gate;
use crate::arithmetic::FieldExt; use halo2::{arithmetic::FieldExt, plonk::Expression};
use crate::plonk::Expression;
pub struct ScheduleGate<F: FieldExt>(pub Expression<F>); pub struct ScheduleGate<F: FieldExt>(pub Expression<F>);

View File

@ -1,6 +1,6 @@
use super::super::{super::BLOCK_SIZE, BlockWord, CellValue16, Table16Chip, ROUNDS}; use super::super::{super::BLOCK_SIZE, BlockWord, CellValue16, Table16Chip, ROUNDS};
use super::MessageSchedule; use super::MessageSchedule;
use crate::{ use halo2::{
arithmetic::FieldExt, arithmetic::FieldExt,
circuit::{Cell, Region}, circuit::{Cell, Region},
plonk::Error, plonk::Error,

View File

@ -3,7 +3,7 @@ use super::super::{
Table16Chip, Table16Chip,
}; };
use super::{schedule_util::*, MessageSchedule}; use super::{schedule_util::*, MessageSchedule};
use crate::{arithmetic::FieldExt, circuit::Region, plonk::Error}; use halo2::{arithmetic::FieldExt, circuit::Region, plonk::Error};
// A word in subregion 1 // A word in subregion 1
// (3, 4, 11, 14)-bit chunks // (3, 4, 11, 14)-bit chunks

View File

@ -2,7 +2,7 @@ use super::super::{
util::*, CellValue16, CellValue32, SpreadVar, SpreadWord, Table16Assignment, Table16Chip, util::*, CellValue16, CellValue32, SpreadVar, SpreadWord, Table16Assignment, Table16Chip,
}; };
use super::{schedule_util::*, MessageSchedule, MessageWord}; use super::{schedule_util::*, MessageSchedule, MessageWord};
use crate::{arithmetic::FieldExt, circuit::Region, plonk::Error}; use halo2::{arithmetic::FieldExt, circuit::Region, plonk::Error};
// A word in subregion 2 // A word in subregion 2
// (3, 4, 3, 7, 1, 1, 13)-bit chunks // (3, 4, 3, 7, 1, 1, 13)-bit chunks

View File

@ -2,7 +2,7 @@ use super::super::{
util::*, CellValue16, CellValue32, SpreadVar, SpreadWord, Table16Assignment, Table16Chip, util::*, CellValue16, CellValue32, SpreadVar, SpreadWord, Table16Assignment, Table16Chip,
}; };
use super::{schedule_util::*, MessageSchedule, MessageWord}; use super::{schedule_util::*, MessageSchedule, MessageWord};
use crate::{arithmetic::FieldExt, circuit::Region, plonk::Error}; use halo2::{arithmetic::FieldExt, circuit::Region, plonk::Error};
// A word in subregion 3 // A word in subregion 3
// (10, 7, 2, 13)-bit chunks // (10, 7, 2, 13)-bit chunks

View File

@ -1,5 +1,5 @@
use super::{util::*, CellValue16, CellValue32, Table16Chip}; use super::{util::*, CellValue16, CellValue32, Table16Chip};
use crate::{ use halo2::{
arithmetic::FieldExt, arithmetic::FieldExt,
circuit::{Chip, Layouter, Region}, circuit::{Chip, Layouter, Region},
plonk::{Advice, Column, ConstraintSystem, Error, Fixed}, plonk::{Advice, Column, ConstraintSystem, Error, Fixed},
@ -248,7 +248,7 @@ mod tests {
super::{util::*, Compression, MessageSchedule, Table16Chip, Table16Config}, super::{util::*, Compression, MessageSchedule, Table16Chip, Table16Config},
SpreadInputs, SpreadTable, SpreadInputs, SpreadTable,
}; };
use crate::{ use halo2::{
arithmetic::FieldExt, arithmetic::FieldExt,
circuit::{layouter, Cell, Layouter, Region, RegionIndex}, circuit::{layouter, Cell, Layouter, Region, RegionIndex},
dev::MockProver, dev::MockProver,

View File

@ -1,3 +0,0 @@
//! Self-contained circuit implementations of various primitives.
pub mod sha256;

View File

@ -19,7 +19,6 @@
pub mod arithmetic; pub mod arithmetic;
pub mod circuit; pub mod circuit;
pub mod gadget;
pub mod pasta; pub mod pasta;
pub mod plonk; pub mod plonk;
pub mod poly; pub mod poly;