Jack Grigg
a4135dde24
ecc::chip: Fix `print_ecc_chip`
...
The ECC test chip performs various checks that assume the chip will only
be synthesized with witnesses. This assumption is broken by the chip
printer test, so we fix the assumption here.
2021-12-09 00:49:01 +00:00
Jack Grigg
6b84d0955a
Fix "complex type" clippy lints
2021-12-08 04:11:57 +00:00
Jack Grigg
a44253acc7
ecc::chip: Define a `MagnitudeSign` type alias
...
This fixes some "complex type" clippy lints, and also will make it
easier to change it to a better-typed struct later.
2021-12-08 02:23:51 +00:00
Jack Grigg
bacdf67428
Remove the `CellValue` type
...
In order to make the changeover easier to review, we redefined
`CellValue<F>` to be `AssignedCell<F, F>`. Now we remove that type and
rename throughout the codebase.
2021-12-08 02:10:17 +00:00
Jack Grigg
65a89f099b
Replace `gadget::utilities::copy` with `AssignedCell::copy_advice`
...
Also replaces other copy-advice implementations that weren't using
`copy`.
2021-12-08 01:50:02 +00:00
Jack Grigg
3079800f42
Remove `Var::new` trait method
...
As the underlying `Region` methods now return `AssignedCell` instead of
`Cell`, we can simplify all the places where we then constructed a
`CellValue` struct.
2021-12-08 01:48:17 +00:00
Jack Grigg
9b41a06363
Migrate to halo2 version with `AssignedCell`
...
We change `CellValue` into a typedef of `AssignedCell` to simplify the
migration in this commit.
The migration from `CellValue` to `AssignedCell` requires several other
changes:
- `<CellValue as Var>::value()` returned `Option<F>`, whereas
`AssignedCell::<F, F>::value()` returns `Option<&F>`. This means we
need to dereference, use `Option::cloned`, or alter functions to take
`&F` arguments.
- `StateWord` in the Poseidon chip has been changed to a newtype around
`AssignedCell` (the chip was written before `CellValue` existed).
2021-12-08 01:45:00 +00:00
Jack Grigg
5cb838f1a2
circuit: Remove `Copy` impl from `poseidon::pow5::StateWord`
...
We will be making it a newtype around `halo2::circuit::AssignedCell`,
which does not impl `Copy`.
2021-12-08 01:44:09 +00:00
Jack Grigg
e99fc92e4b
circuit: Use `Field::is_zero_vartime`
2021-12-08 01:44:08 +00:00
Jack Grigg
50b4600a1a
circuit: Remove `Copy` impl from `CellValue`
...
We will be replacing it with `halo2::circuit::AssignedCell`, which does
not impl `Copy`.
2021-12-08 01:43:00 +00:00
str4d
55567f31ed
Merge pull request #248 from zcash/ecc-config-refactor
...
circuit: Refactor `EccConfig` away from `impl From<EccConfig>`.
2021-12-08 01:40:14 +00:00
str4d
a38e2ff728
Ensure lo and hi incomplete ranges line up
...
The previous code assumed that `pallas::Scalar::NUM_BITS` was odd, which is true, but might not remain so after a future generalisation refactor.
2021-12-08 01:00:18 +00:00
str4d
99b767a3a1
Merge pull request #252 from zcash/circuit-pin-proof-size
...
circuit: Pin the proof size
2021-12-06 20:03:22 +00:00
Jack Grigg
fe7796b884
circuit: Ensure that the real proof length matches calculated length
2021-12-06 19:44:44 +00:00
Jack Grigg
e2c300368b
circuit: Pin the proof size
...
This is to ensure that if any future circuit changes are made, their
effect on the proof size (if any) will be noticed.
2021-12-06 18:01:55 +00:00
str4d
42ad193b58
Merge pull request #247 from zcash/ternary-expr
...
circuit: Introduce ternary expression helper.
2021-12-06 17:32:35 +00:00
therealyingtong
a09173a331
ecc::chip: Remove chip-level permutation.
...
We have now refactored away from the impl From<EccConfig> pattern
so that each sub-config can equality-enable the columns they need.
2021-12-04 04:45:06 +00:00
therealyingtong
c00ee1707e
mul_fixed::base_field_elem: Refactor base_field_elem::Config.
...
This commit does not result in circuit changes.
2021-12-04 04:45:06 +00:00
therealyingtong
687e220c36
mul_fixed::short: Refactor short::Config.
...
This commit does not result in circuit changes.
2021-12-04 04:45:06 +00:00
therealyingtong
165c9b6941
mul_fixed::full_width: Refactor full_width::Config.
...
This commit does not result in circuit changes.
2021-12-04 04:45:06 +00:00
therealyingtong
f472a16b32
chip::mul_fixed: Move running_sum_config into mul_fixed::Config.
2021-12-04 04:45:06 +00:00
therealyingtong
1a7e832ed4
chip::mul_fixed: Refactor mul_fixed::Config.
...
This commit does not introduce circuit changes.
2021-12-04 04:45:06 +00:00
therealyingtong
a7dad1d611
chip::mul: Refactor mul::Config.
...
This commit does not introduce additional circuit changes.
2021-12-04 04:45:05 +00:00
therealyingtong
440cd14dbb
mul::overflow: Refactor overflow::Config.
...
This is only used in chip::mul::Config. In a subsequent commit,
this will be configured from mul::Config instead of from
ecc::chip::Config.
This commit does not result in circuit changes.
2021-12-04 04:44:41 +00:00
therealyingtong
931d61a863
mul::complete: Refactor complete::Config.
...
This is only used in chip::mul::Config. In a subsequent commit,
this will be configured from mul::Config instead of from
ecc::chip::Config.
This commit does not result in circuit changes.
2021-12-04 04:41:52 +00:00
therealyingtong
22f57005a9
mul::incomplete: Refactor incomplete::Config.
...
This is only used in chip::mul::Config. In a subsequent commit,
this will be configured from mul::Config instead of from
ecc::chip::Config.
This commit does not result in circuit changes.
2021-12-04 04:39:41 +00:00
Jack Grigg
0ede6b2301
mul::Config: Reorder gate definitions
...
We are about to extract the sub-configs from mul::Config and refactor
them. Doing so would have moved their gate definitions past the one gate
that isn't created in a sub-config. Reordering the definitions here will
make the subsequent refactor diffs simpler to review.
2021-12-04 04:38:08 +00:00
therealyingtong
2ec480ef6b
utilities::lookup_range_check: Derive Copy for LookupRangeCheckConfig.
2021-12-02 14:55:37 -05:00
therealyingtong
4fe6fb8bf2
chip::add: Refactor add::Config.
...
This is also used in mul and mul_fixed.
2021-12-02 14:55:36 -05:00
therealyingtong
13faedc7cc
chip::add_incomplete: Refactor add_incomplete::Config.
...
This is also used in mul_fixed.
2021-12-02 14:54:13 -05:00
therealyingtong
9d8fee29c7
chip::witness_point: Refactor witness_point::Config.
2021-12-02 14:51:33 -05:00
ebfull
53b68ea799
Merge pull request #249 from zcash/241-spendingkey-ct_eq
...
Replace `PartialEq, PartialOrd` with `ConstantTimeEq` on `{Extended}SpendingKey`
2021-12-02 11:45:44 -07:00
str4d
d8690b8985
Merge pull request #236 from zcash/bench-poseidon-2
...
Benchmark Poseidon gadget for rates {2, 8, 11}
2021-12-01 15:57:55 +00:00
ying tong
b02628d263
Apply suggestions from code review
...
Co-authored-by: str4d <jack@electriccoin.co>
2021-12-01 09:31:53 -05:00
therealyingtong
76c8bb9711
utilities::cond_swap: Use ternary helper in cond_swap.
...
Co-authored-by: Jack Grigg <jack@electriccoin.co>
2021-11-30 20:36:13 -05:00
Jack Grigg
37f1bba998
Remove `PartialEq, PartialOrd` impls from `{Extended}SpendingKey`
2021-11-30 23:25:35 +00:00
Jack Grigg
674ceb54c8
`impl ConstantTimeEq for {Extended}SpendingKey`
2021-11-30 23:24:50 +00:00
str4d
32b3eb9840
Merge pull request #235 from zcash/n_minus_x
...
circuit: Use `N - x` instead of `x - N`.
2021-11-30 20:39:30 +00:00
therealyingtong
1a7a1255c8
mul::complete.rs: Use ternary helper in complete addition part of variable-base scalar mul.
2021-11-30 13:02:25 -05:00
therealyingtong
9513efd6f3
ecc::chip::mul.rs: Use ternary helper in variable-base scalar mul.
2021-11-30 12:52:15 -05:00
therealyingtong
ba75da27bb
gadget::utilities: Introduce ternary expression helper.
2021-11-30 10:39:01 -05:00
therealyingtong
421891f065
Benchmark proof creation and verification for RATE = 2, 8, 11.
2021-11-30 10:03:49 -05:00
therealyingtong
9b76556503
poseidon: Make gadget tests generic over WIDTH, RATE
2021-11-30 10:03:49 -05:00
therealyingtong
b63c868591
poseidon: Make Spec trait methods not take (&self) parameter.
2021-11-30 10:02:16 -05:00
therealyingtong
e0a0a0d509
book: Introduce RangeCheck macro.
2021-11-30 09:30:43 -05:00
therealyingtong
409bbf36a0
mul::complete: Replace k_minus_one with one_minus_k.
2021-11-29 21:45:49 -05:00
therealyingtong
303bdc3f65
Replace local bool_check expressions with utilities::bool_check().
2021-11-29 21:45:48 -05:00
therealyingtong
4fb434f88d
gadget::utilities: Use range_check in bool_check.
2021-11-29 20:50:31 -05:00
therealyingtong
36f1d18705
gadget::utilities: Use N - x in range_check.
2021-11-29 20:50:31 -05:00
str4d
aa251befbc
Merge pull request #240 from zcash/update-halo2
...
Migrate to latest halo2 revision
2021-11-29 20:19:58 +00:00