Jack Grigg
901ef2381e
clippy: Allow binary operators in Mul impls for curves
...
We use binary operators specifically to implement constant-time scalar
multiplication.
2021-03-03 22:00:22 +00:00
Jack Grigg
a3921fd38c
clippy: Allow too-many-arguments on F*::montgomery_reduce
...
We need to reduce from eight limbs to four, so we need eight arguments.
2021-03-03 22:00:22 +00:00
Jack Grigg
c13fc16ead
clippy: Allow single-character names where necessary
2021-03-03 22:00:22 +00:00
Jack Grigg
b06937103d
clippy: Use *Assign to implement arithmetic::Group trait
2021-03-03 22:00:22 +00:00
Jack Grigg
d40ed36d50
Move Pasta implementations into root
2021-03-03 21:59:08 +00:00
Jack Grigg
b36356667f
Rename crate to pasta_curves and remove halo2 code
2021-03-03 21:59:08 +00:00
str4d
5e05845936
Remove unnecessary identity check from Group::random impl
...
Co-authored-by: ebfull <ewillbefull@gmail.com>
2021-03-03 11:11:13 +13:00
Jack Grigg
62e50ae6bd
Fix Group::random implementation for Pallas and Vesta
...
Also removes the broken CurveAffine::from_bytes_wide and unused
CurveAffine::to_bytes_wide methods.
2021-03-02 21:29:59 +00:00
Jack Grigg
0a4db20d82
impl group::cofactor::CofactorGroup for Pallas and Vesta
...
Prime-order groups can be treated as a group with a cofactor of 1,
allowing them to be used in cofactor-aware protocols like RedDSA.
2021-03-01 20:27:34 +00:00
Sean Bowe
cb59a40ff8
Move PLONK integration tests into the tests subdirectory.
2021-02-26 08:22:19 -07:00
Sean Bowe
ef86a936ff
Remove print statements from tests.
2021-02-26 08:22:13 -07:00
Sean Bowe
d92b1c4fb9
Relocate computation of the degree of the constraint system to the ConstraintSystem struct.
2021-02-26 08:22:05 -07:00
Jack Grigg
e41fd7ca12
Move SHA-256 gadget and chip into examples
2021-02-25 20:01:44 +00:00
Jack Grigg
c64346467b
Add Table16 circuit layout example
2021-02-25 20:01:44 +00:00
Jack Grigg
3fa36d7a60
Add test for circuit_dot_graph using SHA-256
2021-02-25 20:01:44 +00:00
therealyingtong
5f4a08898e
SHA-256 benchmarks
2021-02-25 20:01:44 +00:00
therealyingtong
a5ac5b3ed3
Add Compression test
2021-02-25 20:01:44 +00:00
therealyingtong
46b5ddcc68
Compression subregion_digest assignments
2021-02-25 20:01:44 +00:00
therealyingtong
b47b2e436b
Compression subregion_main assignments
2021-02-25 20:01:44 +00:00
therealyingtong
05c6ebd42d
Compression subregion_initial assignments
2021-02-25 20:01:44 +00:00
therealyingtong
4d7c717107
Add utils for Compression assignments
2021-02-25 20:01:44 +00:00
therealyingtong
3778266eeb
Add Compression gates
2021-02-25 20:01:44 +00:00
therealyingtong
5951ae6516
Add Compression
2021-02-25 20:01:44 +00:00
therealyingtong
f6af03c953
Add MessageSchedule test
2021-02-25 20:01:44 +00:00
therealyingtong
6f703d5cc3
MessageSchedule subregion3 assignments
2021-02-25 20:01:44 +00:00
therealyingtong
931d55a5bb
MessageSchedule subregion2 assignments
2021-02-25 20:01:44 +00:00
therealyingtong
65f7707a28
MessageSchedule subregion1 assignments
2021-02-25 20:01:44 +00:00
therealyingtong
88379fa62f
Add MessageSchedule gates and assign fixed column cells
2021-02-25 20:01:44 +00:00
therealyingtong
fc4f3576a0
Add utils for common MessageSchedule assignments
2021-02-25 20:01:44 +00:00
therealyingtong
feedffa2b2
Add MessageSchedule
2021-02-25 20:01:44 +00:00
therealyingtong
570f90e4ee
SHA-256 chip that uses a 2^16 lookup table
...
Co-authored-by: Jack Grigg <jack@electriccoin.co>
2021-02-25 20:01:44 +00:00
Jack Grigg
b4feff8272
Remove ECC gadgets and instructions
...
Migrated to the orchard crate:
https://github.com/zcash/orchard/pull/22
2021-02-25 18:17:50 +00:00
Jack Grigg
bd17c726ac
Add a Selector type
...
This currently just wraps a `Column<Fixed>`, but enables us to start
writing circuits that can later have their selector usage optimised.
2021-02-25 15:28:29 +00:00
str4d
9467a03ae2
Merge pull request #209 from zcash/ecc-gadget-fixedpoints
...
Store `Loaded` chip state in chip
2021-02-26 04:24:28 +13:00
therealyingtong
4f17322c2d
Allow Chip::load to return state that the Layouter will hold
...
This enables chips that e.g. want to load multiple lookup tables into
the same columns to store state about where each table was layed out.
Co-authored-by: Jack Grigg <jack@electriccoin.co>
2021-02-24 23:28:18 +08:00
therealyingtong
6cbf32c2cd
Add FixedPoints type and trait to ECC gadget
2021-02-24 23:24:53 +08:00
therealyingtong
4ae21a905d
Update tests
2021-02-24 00:21:12 +08:00
therealyingtong
5a341b0f8f
Modify Assignment::copy() to take Column<Any> instead of usize
2021-02-24 00:18:22 +08:00
therealyingtong
d82a0c85b1
Modify Assignment::copy() to take Permutation instead of usize
2021-02-24 00:17:29 +08:00
therealyingtong
340fb2b6df
Move Permutation struct from crate::circuit -> plonk::circuit
2021-02-24 00:17:29 +08:00
ebfull
20bd44f854
Merge pull request #191 from zcash/sha-256-gadget-namespacing
...
Alter the SHA-256 gadget to require namespacing
2021-02-23 08:49:03 -07:00
ebfull
98896560fd
Merge pull request #203 from zcash/newtype-region-idx
...
Add circuit::RegionIndex and circuit::RegionStart newtypes
2021-02-23 08:20:19 -07:00
Sean Bowe
12230a49e0
Move CURVE_ID to CurveExt.
2021-02-22 16:30:05 -07:00
Sean Bowe
75bb8121fb
Switch to domain prefix based on what is suggested in #182 by @daira.
2021-02-22 16:13:11 -07:00
Sean Bowe
1078f854e3
Remove BLAKE2B_PERSONALIZATION constant.
2021-02-22 15:53:22 -07:00
Sean Bowe
5503517ac1
Produce URS using hashtocurve logic.
2021-02-22 15:50:01 -07:00
Sean Bowe
df8dcce042
Add CurveExt and AffineExt associated types to project Group trait implementations.
...
Co-authored-by: Jack Grigg <jack@electriccoin.co>
2021-02-22 15:47:57 -07:00
Jack Grigg
b4ed5295fe
Migrate to group traits
...
The `Curve` trait is now `CurveExt: group::prime::PrimeCurve`, and
`CurveAffine` is now `CurveAffine: group::prime::PrimeCurveAffine`.
There is no `CurveAffine` trait in `group`, and it's a widely-used
trait in this crate, so we don't rename it to `CurveAffineExt`.
2021-02-22 20:20:23 +00:00
Jack Grigg
55fb581f17
Define hash-to-curve over Curve, not CurveAffine
...
This removes an unnecessary layer of indirection from the type system,
and ensures that these APIs depend on the halo2-specific trait with the
extensions we require.
2021-02-22 20:12:10 +00:00
Jack Grigg
082d66d6e7
pasta: Reorganize the curve macro
...
This will make the migration to group easier to review.
2021-02-22 20:05:12 +00:00