Jack Grigg
dc2ec0308d
halo2_gadgets: Deduplicate some Sinsemilla chip expressions
2022-05-08 02:38:01 +00:00
Jack Grigg
6444ccc16f
halo2_gadgets: Tidy up and document MerkleCRH implementation
2022-05-08 02:38:01 +00:00
Jack Grigg
3bed5725e5
Use `MessagePiece::from_subpieces` in `MerkleChip::hash_layer`
...
Several structs now impl `PartialEq, Eq` due to requirements of the
`MessagePiece::from_subpieces` impl.
2022-05-08 02:20:42 +00:00
Jack Grigg
0d978f0fc4
halo2_gadgets: Generalise `MerklePath` beyond two `MerkleChip`s
2022-05-07 23:03:30 +00:00
str4d
30f92f3f4b
Merge pull request #522 from zcash/full-width-var-base-mul
...
[ECC gadget] Distinguish base field element case in variable-base scalar mul.
2022-05-06 19:53:57 +01:00
str4d
5a543f9318
Move `EccInstructions::ScalarVar` changelog entry to "Changed"
2022-05-06 19:06:06 +01:00
therealyingtong
3c6ffb66cf
Address comments from code review.
...
Co-authored-by: Jack Grigg <jack@electriccoin.co>
2022-05-06 23:28:20 +08:00
Taylor Hornby
64e7efb0d4
Merge pull request #542 from zcash/relicense-mit-or-apache-2.0
...
Relicense Halo 2 crates as MIT OR Apache 2.0
2022-05-05 13:50:45 -06:00
therealyingtong
fdf516908b
Update changelog.
2022-05-05 21:34:30 +02:00
therealyingtong
5fd0834503
Introduce ScalarVar::new and ScalarVar::from_base gadget APIs.
2022-05-05 21:33:43 +02:00
therealyingtong
1c877f3caf
ecc::chip: Introduce ScalarVar enum.
2022-05-05 21:14:21 +02:00
therealyingtong
6f2fc57b3c
Rename FixedPoint::ScalarKind -> FixedPoint::FixedScalarKind.
2022-05-05 21:14:21 +02:00
therealyingtong
5ebfe91eee
Introduce ecc::BaseFitsInScalarInstructions trait.
2022-05-05 21:14:20 +02:00
therealyingtong
cbf3d6a7f6
EccInstructions: introduce witness_scalar_var() instruction.
2022-05-05 21:14:20 +02:00
therealyingtong
6d83db719e
EccInstructions::mul: take Self::ScalarVar instead of Chip::Var.
2022-05-05 21:14:20 +02:00
str4d
b2e2b9b081
Merge pull request #568 from zcash/circuit-review
...
Changes from Orchard circuit review
2022-05-05 16:03:31 +01:00
Jack Grigg
3800de5918
Rename `RangeConstrained::subset_of` to `bitrange_of`
2022-05-04 23:52:15 +00:00
Jack Grigg
e04c8bfb4b
Migrate to `ff 0.12`
2022-05-04 23:36:18 +00:00
Jack Grigg
97864d714e
halo2_gadgets: Add `MessagePiece::from_subpieces`
...
We introduce a new `RangeConstrained` newtype wrapper for tracking the
number of bits to which some type has been constrained.
2022-05-02 16:04:02 +00:00
Jack Grigg
fdc6c9df19
halo2_gadgets: pprof 0.8
2022-04-27 12:58:16 +00:00
Jack Grigg
f4675997bc
Fix some clippy lints
2022-04-27 12:58:16 +00:00
Jack Grigg
e3f1bf68db
halo2_gadgets: Remove usage of `array::IntoIter::new`
...
Rust 2021 implements `IntoIterator` for arrays directly, instead of only
references to arrays.
https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html
2022-04-27 12:56:54 +00:00
Jack Grigg
f830c6f7fb
Remove pins for dependencies with MSRV-incompatible point releases
2022-04-27 12:28:19 +00:00
Jack Grigg
bb1ed8288a
Set edition to 2021
...
We also set `resolver = "2"` on the workspace; this is the default for
the root package in Rust 2021, but as we use a virtual workspace we need
to explicitly set it instead.
2022-04-27 12:28:19 +00:00
Jack Grigg
7688c371f6
Bump MSRV to 1.56.1
...
Closes zcash/halo2#482 .
2022-04-27 12:24:57 +00:00
Jack Grigg
b02800466a
halo2_gadgets: Migrate chip gates to `Constraints::with_selector`
...
Only one gate couldn't be migrated without altering the Orchard circuit.
2022-04-24 22:13:38 +00:00
Jack Grigg
78de8a5c94
Add a `Constraints` helper
...
There are two existing patterns for constructing a gate from a set of
constraints with a common selector:
- Create an iterator of constraints, where each constraint includes the
selector:
```
vec![
("foo", selector.clone() * foo),
("bar", selector.clone() * bar),
("baz", selector * bar),
]
```
This requires the user to write O(n) `selector.clone()` calls.
- Create an iterator of constraints, and then map the selector in:
```
vec![
("foo", foo),
("bar", bar),
("baz", bar),
].into_iter().map(move |(name, poly)| (name, selector.clone() * poly))
```
This looks cleaner overall, but the API is not as intuitive, and it
is messier when the constraints are named.
The `Constraints` struct provides a third, clearer API:
```
Constraints::with_selector(
selector,
vec![
("foo", foo),
("bar", bar),
("baz", bar),
],
)
```
This focuses on the structure of the constraints, and handles the
selector application for the user.
2022-04-20 10:55:50 +00:00
str4d
46ba444169
Merge pull request #480 from zcash/477-mockprover-pretty-failures
...
Add `MockProver::assert_satisfied` with pretty-printed failures
2022-04-20 12:53:16 +02:00
Jack Grigg
90e671e77c
Relicense Halo 2 crates as MIT OR Apache 2.0
...
See this blog post for details:
https://electriccoin.co/blog/zero-knowledge-proving-system-halo-now-licensed-under-mit-making-it-available-for-anyone-to-use/
2022-04-07 14:22:49 +00:00
therealyingtong
75b5c1e923
halo2_gadgets 0.1.0-beta.3
2022-04-06 12:28:36 +08:00
therealyingtong
a11cb9796e
halo2_proofs 0.1.0-beta.4
2022-04-06 12:24:28 +08:00
Jack Grigg
0946bdb455
dev: Enable `VerifyFailure::Permutation` to point to region offsets
2022-03-30 01:39:50 +00:00
Jack Grigg
11dcfb88ba
halo2_gadgets 0.1.0-beta.2
2022-03-22 20:04:14 +00:00
Jack Grigg
8acd4abfb3
halo2_proofs 0.1.0-beta.3
2022-03-22 19:59:10 +00:00
str4d
642efc1536
Merge pull request #521 from zcash/reconstruct-selectors
...
Remove selector_map from pinned verification key and remove VerificationKey serialization
2022-03-18 00:14:36 +00:00
Jack Grigg
c6b4fcaf34
Fix docs.rs build
...
The published source code for each package needs to include the required
header file, and the path to that header file needs to be relative to
the package source (not the repository source). We therefore need to
have the header file present in each workspace package.
Closes zcash/halo2#506 .
2022-03-17 19:14:11 +00:00
Jack Grigg
d3f2980349
Remove VerifyingKey serialization from sha256 gadget benchmark
2022-03-17 18:58:53 +00:00
Jack Grigg
c9852c61ec
halo2_gadgets 0.1.0-beta.1
2022-02-14 21:58:20 +00:00
Jack Grigg
f642727e51
halo2_proofs 0.1.0-beta.2
2022-02-14 21:58:20 +00:00
Jack Grigg
1d2f698aca
Update license dates and links
2022-02-14 21:58:20 +00:00
Jack Grigg
e0cc7b39d3
Update changelogs
2022-02-14 21:29:42 +00:00
Dimitris Apostolou
e2f88e450b
Fix typos
2022-02-03 18:01:22 +02:00
Jack Grigg
c6886600a9
halo2_gadgets: Migrate from bigint to uint
...
Closes zcash/halo2#457 .
2022-02-01 16:19:53 +00:00
Jack Grigg
5312343e6d
halo2_gadgets: Expose testing APIs required by `orchard`
2022-01-28 17:52:48 +00:00
therealyingtong
3547008d35
Clippy fixes.
2022-01-28 23:50:14 +08:00
therealyingtong
7c7c281000
Visibility fixes.
2022-01-28 23:38:22 +08:00
Jack Grigg
9a12beee73
halo2_gadgets: Rename `halo2` to `halo2_proofs`
...
The previous commit renamed `halo2_proofs` back to `halo2` temporarily
to keep the commit size down. This commit performs the rename in a
single pass.
2022-01-27 23:32:04 +00:00
Jack Grigg
5202ec6eda
Integrate `halo2_gadgets` into the workspace
...
THe SHA-256 example gadget has been moved into the `halo2_gadgets` crate
behind an `unstable` feature flag.
2022-01-27 23:32:04 +00:00
Jack Grigg
a2367abcaf
Migrate to `halo2_gadgets` crate in subdir
...
- The crate module structure from `orchard` has been flattened.
- The book pages we want to include in `halo2` have been moved to their
target location, to avoid any conflicts during the merge.
- Common files that already exist in zcash/halo2 have been removed.
2022-01-27 23:08:01 +00:00