Jack Grigg
b46ef35db5
clippy: Allow unused imports
...
We can remove this once `pasta_curves` has been updated to remove
`CurveAffine::read`.
2021-10-01 13:33:47 +01:00
Jack Grigg
3fba7434d1
Use `ff::PrimeField::root_of_unity` instead of `FieldExt::ROOT_OF_UNITY`
2021-09-30 23:06:32 +01:00
Jack Grigg
9dc2738305
Remove usages of `CurveAffine::{read, write}`
...
A new `CurveRead` helper trait brings in the `CurveAffine::read` impl.
2021-09-30 23:06:32 +01:00
Jack Grigg
17b8fe1baa
Use `ff::Field::pow_vartime` instead of `FieldExt::pow`
2021-09-30 22:54:42 +01:00
Jack Grigg
a5a3c8ca63
Use `From<u64>` instead of `FieldExt::from_u64`
2021-09-30 22:53:00 +01:00
Jack Grigg
0e6b0344f5
Use `ff::PrimeField::{from_repr, to_repr}` instead of `FieldExt`
2021-09-30 22:53:00 +01:00
Jack Grigg
9693065a00
Use `ff::BatchInvert` now that we have upstreamed it
2021-09-30 22:35:33 +01:00
Jack Grigg
81622bf847
ff 0.11, group 0.11, pasta_curves 0.2
2021-09-02 23:05:18 +01:00
Jack Grigg
3731580790
dev: Add helper method to print queries per-constraint to a CSV file
2021-07-29 01:19:51 +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
str4d
6dcc61898f
Add `used_columns` to `SimpleTableLayouter` `Debug` impl
...
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-07-27 17:55:34 +01:00
str4d
eab1884504
Add code comments from review
...
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
Co-authored-by: ying tong <yingtong@z.cash>
2021-07-27 17:49:52 +01:00
Jack Grigg
49a763cd61
Rename `Table::assign_fixed` to `Table::assign_cell`
2021-07-27 17:48:13 +01:00
Jack Grigg
57877f5f18
Fix clippy lints
2021-07-27 16:04:27 +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
8d8e76dc82
dev: Minor fixes to `CircuitLayout`
...
- Default view height is now the circuit size.
- Cells are now always shaded on top of any drawn regions.
2021-07-27 02:25:46 +01:00
Jack Grigg
7cf58661d8
dev: Add used/usable row metadata to `CircuitLayout`
...
- Black line showing the total used rows.
- Red shading for the unusable rows of the circuit.
- Annotations for the number of used and usable rows.
2021-07-27 02:25:07 +01:00
Jack Grigg
dac3bf31e4
dev: Add `CircuitCost::marginal_proof_size` API
2021-07-27 02:21:46 +01:00
Daira Hopwood
e3e39455be
Table refactoring.
...
Co-authored-by: Jack Grigg <jack@electriccoin.co>
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2021-07-27 01:34:51 +01:00
Jack Grigg
334036b942
dev: Add `halo2::dev::CircuitGates` developer tool
2021-07-26 02:53:13 +01:00
Jack Grigg
7355462a9f
Add `Expression::Negated` enum case
...
We were previously representing this as `Expression::Scaled(poly, -1)`
which was less efficient.
2021-07-26 01:59:06 +01:00
ebfull
101d7c79f3
Apply suggestions from code review
...
Co-authored-by: str4d <jack@electriccoin.co>
2021-07-25 18:39:42 -06:00
Sean Bowe
88d34924eb
Account for changes from #350 .
2021-07-24 17:17:49 -06:00
Sean Bowe
b47889ec51
Merge branch 'main' into selector-optimization
2021-07-24 17:17:03 -06:00
Sean Bowe
77805d9e8e
fix minor typo
2021-07-24 17:10:59 -06:00
Sean Bowe
2a253b89b0
Refactor the selector optimization pass so it can be independently proptested.
2021-07-24 16:35:45 -06:00
Sean Bowe
634d14a016
Remove spurious code from review suggestion.
2021-07-24 10:43:50 -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
Jack Grigg
92645b6ee9
Fix SimpleFloorPlanner's handling of global constants
...
The previous behaviour assumed that all regions were always assigned
in increasing start-row order. That assumption is broken in e.g. the
Merkle path tests, which position two Sinsemilla calls in parallel.
The layouter was working fine for current tests, but in an adjacent
PR that changed the Merkle path chip's behaviour, it started to
produce invalid circuits.
The new behaviour emulates the `floor_planner::V1` behaviour in an
(intentionally) inefficient way: constants are positioned immediately
after the regions they are assigned to, in the first constants column.
If that column is also used in regions, those regions will now be
positioned without overlapping any assigned global constants.
Co-authored-by: therealyingtong <yingtong@z.cash>
2021-07-23 16:39:37 +01:00
Sean Bowe
28439414f4
(attempt 1 at implementing daira's algorithm)
2021-07-23 08:14:15 -06:00
Sean Bowe
e23d148b72
minor clippy fixes
2021-07-22 12:07:17 -06:00
Sean Bowe
5af7a7abfa
Only accept fixed columns in lookup argument tables.
2021-07-22 10:28:52 -06:00
Sean Bowe
145d096dcd
Distinguish between simple and non-simple selectors, and allow the former in lookup arguments.
2021-07-22 10:07:20 -06:00
Sean Bowe
26982a6050
Update circuit graph tooling to account for selector optimization.
2021-07-22 10:06:48 -06:00
Sean Bowe
1254e4f245
Ensure that selectors are only used in simple ways.
...
You cannot add an expression containing a Selector to another expression.
You cannot multiply an expression containing a Selector by another expression
that also has a selector.
2021-07-21 14:43:31 -06:00
Sean Bowe
f6895555bb
Update cost model logic to account for selector optimizations.
2021-07-21 13:51:48 -06:00
Sean Bowe
2cc60838a5
Use locally generated ConstraintSystem to avoid performing optimizations twice.
2021-07-21 13:34:56 -06:00
Sean Bowe
23d7d6532d
Properly substitute selectors in lookup expressions during optimization pass.
2021-07-21 13:12:05 -06:00
Sean Bowe
382cd5a7ea
Create actual selector columns only during an optimization pass.
2021-07-21 12:55:19 -06:00
Sean Bowe
dfbd5e3332
Distinguish between selectors and all other columns in layouter using RegionColumn.
2021-07-21 10:19:35 -06:00
str4d
4283713ec7
Merge pull request #340 from zcash/339-dev-proof-cost
...
dev: Add CircuitCost tool with proof size measurement
2021-07-21 16:45:03 +01:00
str4d
a2fb36b6ee
Merge pull request #344 from zcash/325-column-ordering
...
Change canonical column ordering to Instance < Advice < Fixed
2021-07-21 16:44:50 +01:00
Jack Grigg
4e6c857854
Add test cases exercising Error::NotEnoughColumnsForConstants
2021-07-21 16:44:14 +01:00
str4d
6420a25c8c
Typo fix
...
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-07-21 16:35:44 +01:00
Jack Grigg
cb9366d656
Fix more clippy lints
2021-07-21 12:00:25 +01:00
Jack Grigg
62f088e2f2
Fix clippy lints
2021-07-21 09:31:27 +08:00
Jack Grigg
629c13eae8
Add `Region::constrain_constant` API
...
This is the non-assigning subset of `Region::assign_advice_from_constant`.
2021-07-21 09:31:27 +08:00
Jack Grigg
7adf695293
Add constants support to `floor_planner::V1`
...
Co-authored-by: therealyingtong <yingtong@z.cash>
2021-07-21 09:31:27 +08:00
Jack Grigg
9e2cba917f
Update SimpleFloorPlanner with constants support
2021-07-21 09:31:27 +08:00
Jack Grigg
ed2295b077
Add trait methods and general APIs for defining circuit constants
...
During circuit configuration, fixed columns can be marked as suitable
for containing arbitrary constant values (i.e. the columns aren't
encumbered by constraints that preclude arbitrary values).
During synthesis, circuits can now request that the layouter assign
an advice cell within a region, to some specified constant value. It
is the layouter's responsibility to find space within the previously
marked fixed columns, in which to assign the constant.
This commit intentionally does not compile.
2021-07-21 09:31:27 +08:00
str4d
c99347be4a
Minor style tweak to Column Ord impl
...
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-07-20 21:43:24 +01:00
therealyingtong
958cc7ee4b
Introduce metadata::Column struct.
2021-07-20 20:55:11 +01:00
Jack Grigg
4417b4e480
Change canonical column ordering to Instance < Advice < Fixed
...
Closes zcash/halo2#325 .
2021-07-20 20:24:37 +01:00
Jack Grigg
87beee32f4
dev: Add CircuitCost tool with proof size measurement
2021-07-20 03:17:56 +01:00
Sean Bowe
ce319c8da8
Add clarifying comment to `distribute_powers_zeta`.
2021-07-19 09:08:24 -06:00
Jack Grigg
1e33570c7a
cargo fmt
2021-07-19 14:46:02 +01:00
str4d
c0d2aa1286
Merge branch 'main' into coset-optimization
2021-07-19 14:43:37 +01:00
str4d
96b1196bce
Merge pull request #330 from zcash/permutation-common
...
Merge the common pieces of the permutation argument into a separate proof component
2021-07-19 14:38:24 +01:00
str4d
dda1be4731
Merge pull request #336 from zcash/dev-layout-equality
...
dev: Enable visualizing equality constraints in circuit layouts
2021-07-16 23:03:01 +01:00
str4d
874b52a7f7
dev: Fix typo in doc comment
...
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-07-16 23:02:18 +01:00
Jack Grigg
3fe004a794
dev: Reduce opacity of marked equality cells to add a border
2021-07-16 23:00:49 +01:00
Jack Grigg
56a6107cdf
dev: Enable visualizing equality constraints in circuit layouts
2021-07-16 15:01:55 +01:00
Jack Grigg
8e71415933
MockProver: Limit table expression evaluations to usable rows
...
Also refactors the lookup argument to only compute table expressions
once per lookup argument.
2021-07-16 00:26:16 +01:00
Sean Bowe
b0a4a19093
Rename CommonCommitted to CommonEvaluated.
2021-07-15 15:22:51 -06:00
Jack Grigg
7dae8698b6
MockProver: Poison unusable advice cells
...
Circuit developers need to use selectors (or equivalent) to prevent their
custom gates from being active on unusable rows. By marking the advice
cells in these rows as "poisoned" and tracking this through expressions,
we can provide a better error message to developers that indicates the
missing selector issue.
Closes zcash/halo2#329 .
2021-07-15 22:12:50 +01:00
Sean Bowe
3cae0d5f19
Merge the common pieces of the permutation argument into a separate proof component.
2021-07-15 14:30:52 -06:00
ebfull
4a9e329ded
Merge pull request #316 from zcash/zk-changes-again
...
Final ZK changes
2021-07-14 16:19:06 -06:00
Sean Bowe
070beafa53
Address minor review comments.
2021-07-14 15:19:26 -06:00
Sean Bowe
0a3ae6f1eb
Add clarifying comment.
...
Co-authored-by: Jack Grigg <jack@electriccoin.co>
2021-07-14 10:17:44 -06:00
Sean Bowe
bbe06ac61e
Add clarifying comment.
...
Co-authored-by: Jack Grigg <jack@electriccoin.co>
2021-07-14 10:08:49 -06:00
Sean Bowe
af01af8fa5
Remove unnecessary collect.
2021-07-14 10:07:30 -06:00
Sean Bowe
11a1fc7d4a
Fix stale comment
2021-07-14 09:48:56 -06:00
Sean Bowe
99a0e675f1
Minor changes to comments.
2021-07-14 09:46:29 -06:00
Sean Bowe
b4bd4ada9a
Clarify barycentric weight doc comment.
2021-07-14 09:19:56 -06:00
ebfull
29fc0a781a
Simplify `l_i_range` using `rotate_omega`.
...
Co-authored-by: str4d <jack@electriccoin.co>
2021-07-14 09:07:21 -06:00
ebfull
dfe716dbc1
Describe `l_i_range` implementation in doc comment
...
Co-authored-by: str4d <jack@electriccoin.co>
2021-07-14 09:05:40 -06:00
Sean Bowe
74f3e1c6d9
Fix omitted notation to explicitly designate l_last and l_blind as polynomials.
2021-07-13 16:30:52 -06:00
Sean Bowe
4cd0bffc8e
Collapse random_{poly,blind} fields back into Committed in other structures.
2021-07-13 16:19:44 -06:00
Sean Bowe
8caafc0abf
Change n to u in sanity check.
2021-07-13 16:12:21 -06:00
Sean Bowe
dd41cfa022
fix clippy lint
2021-07-13 16:02:41 -06:00
Sean Bowe
d0950c6d4c
Add explanation of lookup table degree nuances.
2021-07-13 16:02:27 -06:00
Sean Bowe
0dc4447ad8
Change verification API to allow the caller to supply instances as slices of scalars rather than commitments.
2021-07-13 12:08:16 -06:00
Sean Bowe
f532b7e973
Return error if supplied instance slice is too large.
2021-07-13 11:44:58 -06:00
Sean Bowe
f314f66f69
Fix clippy lint
2021-07-13 10:11:38 -06:00
Sean Bowe
574ce73d80
Minor changes to `distribute_powers_zeta`.
2021-07-13 10:10:03 -06:00
Sean Bowe
9155cd174b
Introduce `set_minimum_degree` to avoid performance regression in benchmark.
2021-07-12 15:28:16 -06:00
Sean Bowe
827132302a
Remove the ability to rotate when switching to the extended domain.
2021-07-12 12:57:09 -06:00
Sean Bowe
a091795aca
Switch to computing only Rotation::cur() cosets until rotation is needed.
2021-07-12 12:53:12 -06:00
Sean Bowe
55424c8c2f
Add `{mul,add,sub}_extended` and `rotate_extended` methods to `EvaluationDomain`.
2021-07-12 11:44:09 -06:00
Sean Bowe
d8df7a12d5
Fix clippy lint on beta.
2021-07-10 08:52:30 -06:00
Sean Bowe
cc84e9bf52
Additional documentation suggestions from @str4d.
2021-07-10 08:47:57 -06:00
Sean Bowe
50768bff20
Add comment explaining the extra caution in minimum_rows().
2021-07-10 08:43:01 -06:00
Sean Bowe
9023161988
Add bounds check to Assignment::query_instance impls.
2021-07-10 08:25:00 -06:00
Sean Bowe
c4e2554654
Incorporate documentation improvements suggested by @str4d.
2021-07-10 08:20:34 -06:00
Sean Bowe
1be7bf1df0
Address review comments from @daira.
2021-07-10 08:12:08 -06:00
Sean Bowe
20653acc39
Document `permutation::Argument::required_degree`.
2021-07-10 07:52:42 -06:00
Sean Bowe
fc946d99bf
Use Option in sanity-check rather than a random value.
2021-07-09 12:47:36 -06:00
Sean Bowe
9e6277ef6b
Make `usable_rows` temporary to avoid duplicative code.
2021-07-09 12:45:51 -06:00
Sean Bowe
326cae153e
Fix minor typos in comments.
2021-07-09 12:44:27 -06:00
Sean Bowe
90be1c29ab
Fix bug in sanity check during lookup argument witness creation.
2021-07-09 12:41:52 -06:00