mirror of https://github.com/zcash/halo2.git
Move SHA-256 gadget and chip into examples
This commit is contained in:
parent
c64346467b
commit
e41fd7ca12
|
@ -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"
|
||||||
|
|
|
@ -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 {}
|
|
@ -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() {}
|
|
@ -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},
|
|
@ -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,
|
|
@ -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>);
|
||||||
|
|
|
@ -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},
|
|
@ -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},
|
|
@ -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>(
|
|
@ -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>(
|
|
@ -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>);
|
||||||
|
|
|
@ -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,
|
|
@ -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>);
|
||||||
|
|
|
@ -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,
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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,
|
|
@ -1,3 +0,0 @@
|
||||||
//! Self-contained circuit implementations of various primitives.
|
|
||||||
|
|
||||||
pub mod sha256;
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue