Commit Graph

84 Commits

Author SHA1 Message Date
Jack Grigg 7da5605f51 Remove redundant Error suffix from Error cases 2021-11-10 16:19:36 +00:00
Jack Grigg c9d890377c book: Render example for `CircuitLayout` 2021-10-01 13:39:04 +01:00
Jack Grigg 7463a6e931 examples: Reorganise circuit-layout example to use in book 2021-10-01 13:39:04 +01:00
str4d 27c4187673
Merge pull request #354 from daira/table-refactoring
Add a `Layouter::assign_table` API
2021-07-27 20:52:36 +01:00
Jack Grigg 49a763cd61 Rename `Table::assign_fixed` to `Table::assign_cell` 2021-07-27 17:48:13 +01:00
Jack Grigg e855ac6adb Add `halo2::plonk::circuit::TableColumn` struct
This type is required by the `ConstraintSystem::lookup` API, and cannot
be converted into a `Column<Fixed>` via the public API, forcing chip
developers to use `Layouter::assign_table` API to load tables. This is
a safety feature, as lookup table rows need to be default-value-filled
by the layouter (or else the table would have an implicit default value
of all-zeroes which could introduce soundness bugs into circuits).
2021-07-27 15:52:42 +01:00
Jack Grigg eb2b020d8c Migrate benches and examples to `impl Neg for Expression` 2021-07-26 01:59:06 +01:00
Sean Bowe e02fc06f52
cargo fmt 2021-07-24 15:42:30 -06:00
ebfull 754dd62c92
Apply suggestions from code review
Co-authored-by: str4d <jack@electriccoin.co>
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-07-24 10:27:50 -06:00
Sean Bowe e23d148b72
minor clippy fixes 2021-07-22 12:07:17 -06:00
Sean Bowe e3c6542e83
Fix circuit-layout example. 2021-07-22 12:04:41 -06:00
Sean Bowe 26982a6050
Update circuit graph tooling to account for selector optimization. 2021-07-22 10:06:48 -06:00
Jack Grigg 4c5a830e5c Use constants API in simple-example 2021-07-21 09:31:27 +08:00
Sean Bowe ef01b9310a
Fix examples broken by verifier API changes. 2021-07-14 09:47:53 -06:00
Sean Bowe 3942d4e2e8
(examples) Specify row when calling expose_public in simple-example. 2021-07-10 08:13:24 -06:00
Sean Bowe 0766983686
Fix examples to account for public input API changes. 2021-07-08 15:32:56 -06:00
Sean Bowe fe215d153d
Update tests with API changes for public inputs and permutation argument. 2021-07-08 15:32:51 -06:00
str4d 93aabf26c6
Merge pull request #310 from zcash/clippy-capitalized-acronyms
clippy: Fix capitalized acronyms in tests and examples
2021-06-23 16:28:38 +01:00
Jack Grigg e262941b70 clippy: Fix capitalized acronyms in tests and examples 2021-06-23 13:33:04 +01:00
Jack Grigg 32edf65efa dev: Refactor VerifyFailure to extract metadata structs 2021-06-23 13:16:20 +01:00
Jack Grigg 6d0017f47c Introduce a FloorPlanner trait and integrate it into the Circuit trait
This is the beginning of the process to enable full floor planning
capabilities in `halo2`. For now, all that a floor planner can do is
synthesize a circuit, which makes it no more powerful than a layouter,
but easier to use (as moving to a multi-pass layouter no longer requires
changes to `Circuit::synthesize`).
2021-06-22 23:47:17 +01:00
Jack Grigg 1b04877b3d Migrate PLONK-gate-using circuits to use SingleChipLayouter
These were all early examples that used the Circuit trait without any
layouter, which is incompatible with upcoming changes.

The minimal change to the PinnedVerificationKey is because the lookup
table is being allocated at the top of its columns instead of in-place.
2021-06-22 00:22:12 +01:00
Jack Grigg 3e82c7b232 dev: Move halo2::dev::circuit_layout to halo2::dev::CircuitLayout::render
This makes it easier to add configuration to the renderer.
2021-06-08 12:13:18 +01:00
str4d d8e4f24df4
Merge pull request #287 from zcash/remove-selector-rotations
Remove rotations from Selectors
2021-06-05 23:36:37 +01:00
Jack Grigg 0d8b3bab38 Remove rotations from Selectors
Enabling selectors to be used in gates at non-zero rotations leads to
confusing gates, and inhibits our ability to create visualizations of
circuits. In most cases, a gate can be rearranged so that the selectors
have no rotation; in cases where cross-gate selector optimisations are
required, these can still be implemented using fixed columns.
2021-06-04 16:18:51 +01:00
Jack Grigg 6cf73391e8 Enable annotating individual constraints within gates
The closure passed to `ConstraintSystem::create_gate` can now return:

- Tuples of `(&'static str, Expression<F>)`
- Anything implementing `IntoIterator` (e.g. `Some(Expression<F>)`)
2021-06-04 03:49:21 +01:00
Jack Grigg 47061ade3d dev: Report indices of unsatisfied constraints
Now that gates may contain multiple constraints, we need to inform
developers about which specific constraints are failing within gates.
2021-06-04 03:46:08 +01:00
Jack Grigg 0f0dd8a26c Allow multiple polynomial constraints per gate
This enables a gate such as ECC complete addition to define its
constraints in terms of a common set of queried columns.
2021-05-27 15:01:46 +01:00
Jack Grigg 353a07cef1 `ConstraintSystem::lookup`: Move lookup queries into a closure
This matches `ConstraintSystem::create_gate`.

At the same time, we bind the input and table expressions together as a
"table map" by requiring the closure to return a vector of tuples. This
ensures they are always the same length.
2021-05-27 00:53:31 +01:00
str4d d62afb19ac
Merge pull request #256 from zcash/fix-sha256-chip-config
Fix `sha256` example for new config abstraction
2021-05-26 23:01:19 +01:00
Jack Grigg 80993da1e6 cargo fmt 2021-05-26 22:52:03 +01:00
str4d da465bb718
examples: Remove some unnecessary clones 2021-05-26 22:49:18 +01:00
ebfull 870a2f1e8a
Merge pull request #242 from zcash/challenge-space
Add support for full-field challenge space
2021-05-24 11:11:30 -06:00
Jack Grigg 266badf25c MockProver: Return all constraint failures, not just first 2021-05-18 16:32:15 +01:00
Jack Grigg f3120ea2d5 examples: Add verification time estimator 2021-05-18 13:54:05 +01:00
Jack Grigg f53ab478f6 examples: Add cost model for estimating proof sizes 2021-05-18 13:54:05 +01:00
therealyingtong fe2ab0bc7b Fix SHA256 example 2021-05-14 21:20:53 +08:00
therealyingtong 502f0c85dc Input as associated type on EncodedChallenge
Use Input as an associated type instead of a type parameter, to
reduce infection

Co-authored-by: Sean Bowe <ewillbefull@gmail.com>
2021-05-07 22:21:54 +08:00
therealyingtong 6f199d3b2f [tmp] Block quote SHA256 example 2021-05-04 11:14:32 +08:00
therealyingtong 32f011d52d Replace ChallengeSpace with EncodedChallenge API
Co-authored-by: Sean Bowe <ewillbefull@gmail.com>
2021-05-01 09:30:08 +08:00
therealyingtong f3021beda6 Clean up anchors in simple-example.rs
Co-authored-by: Jack Grigg <jack@electriccoin.co>
2021-04-28 12:36:37 +08:00
therealyingtong 21aaab20f6 Remove empty() methods from Config and Loaded traits
Co-authored-by: Jack Grigg <jack@electriccoin.co>
2021-04-28 10:47:26 +08:00
therealyingtong 7524c95547 Clippy fixes 2021-04-26 08:53:43 +08:00
therealyingtong cd3cc543cf Update examples and tests 2021-04-23 19:18:41 +08:00
therealyingtong 03da010d6a [tmp] Comment out sha256 example 2021-04-23 17:40:43 +08:00
therealyingtong 3ad1c43fb8 Only keep config() and loaded() generic on Chip trait
Co-authored-by: Jack Grigg <jack@electriccoin.co>
2021-04-23 17:40:43 +08:00
therealyingtong 40e7bec352 Move config responsiblities from Layouter to Chip trait 2021-04-23 17:40:43 +08:00
Jack Grigg a130edaade Remove metrics crate and inline modelling
It is causing problems in (some) downstream crates, and we won't want
these annotations in the codebase anyway if a downstream crate is
collecting metrics. We'll be replacing this with the cost model binary
in https://github.com/zcash/halo2/pull/225 shortly.
2021-03-03 23:13:34 +00:00
Jack Grigg a688c8b03d sha256: Fix / silence lints 2021-02-25 20:34:07 +00:00
Jack Grigg e41fd7ca12 Move SHA-256 gadget and chip into examples 2021-02-25 20:01:44 +00:00