Commit Graph

52 Commits

Author SHA1 Message Date
Jack Grigg 6145b1417c halo2_gadgets: Move `primitives::*` to `*::primitives` 2022-05-09 05:43:34 +00:00
Jack Grigg 96d4a31d39 halo2_gadgets: Batch inversions in `SinsemillaChip::hash_to_point`
This saves around 3.7% in proving time for a 2-action Orchard bundle on
a Ryzen 9 5950X.
2022-05-08 03:28:34 +00:00
Jack Grigg 03697e2a7d book: Rewrite Sinsemilla gadget page
The book now has enough detail for it to be obvious why there are
factors of 2 present in several equations.
2022-05-08 02:38:01 +00:00
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