Commit Graph

559 Commits

Author SHA1 Message Date
Kris Nuttycombe 427e6acbd4 Allow CompactSize deserialization to target any type that can be TryFrom<u64> 2021-09-01 13:57:51 -06:00
str4d edcde252de
Merge pull request #428 from nuttycom/public_compact_size
Move the CompactSize, Vector, Array and Option encodings to a new zcash_encoding crate.
2021-09-01 20:45:28 +01:00
Kris Nuttycombe c1bad64fbd Apply suggestions from code review
Co-authored-by: str4d <jack@electriccoin.co>
2021-09-01 11:08:52 -06:00
Kris Nuttycombe fa092da456 Fix stray clippy complaints. 2021-08-31 13:19:24 -06:00
Kris Nuttycombe ef98c7e48c Add zcash_encoding crate.
The CompactSize type, and the standardized encodings for the Vector,
Array and Option types are moved to the newly created crate.
2021-08-31 13:19:24 -06:00
Jack Grigg f03f05f251 zcash_note_encryption: Switch to chacha20poly1305 crate 2021-08-30 15:03:39 +01:00
Kris Nuttycombe ac139c6e9b Make CompactSize serialization functions public. 2021-08-25 09:55:08 -06:00
Jack Grigg f185f8dc83 pprof 0.5 2021-08-23 20:18:45 +01:00
Jack Grigg 5054621a6d fpe 0.5 2021-08-23 20:16:40 +01:00
str4d 9be36f3e54
Merge pull request #417 from nuttycom/incremental_merkle_tree_ser
Add manual serialization for bridgetree::Frontier
2021-08-17 14:57:59 +01:00
Kris Nuttycombe 77bb78d960 Apply suggestions from code review. 2021-08-17 07:31:15 -06:00
Kris Nuttycombe 1ed538b655 Fix clippy complaints. 2021-08-16 17:36:07 -06:00
Kris Nuttycombe 7b953283ce Add blanket implementation of Hashable for incrementalmerkletree::Hashable + HashSer 2021-08-16 13:48:37 -06:00
Kris Nuttycombe 837ad19262
Apply suggestions from code review
Co-authored-by: str4d <jack@electriccoin.co>
2021-08-16 10:20:14 -06:00
Kris Nuttycombe 5ba7bbc53b Serialize `Option` values by value, not by reference.
Co-authored-by: str4d <jack@electriccoin.co>
2021-08-16 10:06:38 -06:00
Kris Nuttycombe 98dc330cdb
Merge pull request #424 from daira/zip339-primitives
ZIP 339 support
2021-08-12 07:23:15 -06:00
Jack Grigg d8410063ab zcash_primitives: Implement `Domain::batch_epk` for `jubjub` 2021-08-11 00:21:00 +01:00
Jack Grigg 45521c7849 zcash_primitives: Test that batched trial decryption matches unbatched 2021-08-11 00:18:39 +01:00
Jack Grigg d0026b460b zcash_primitives: Implement batched trial decryption optimisation 2021-08-10 02:17:10 +01:00
Jack Grigg 0facec094f Update changelogs with `EphemeralKeyBytes` changes 2021-08-09 21:45:16 +01:00
Jack Grigg 279a8b6bb6 Use `EphemeralKeyBytes` type in place of `[u8; 32]` 2021-08-09 21:28:42 +01:00
Daira Hopwood d1443e5049 ZIP 339 support.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
2021-08-07 01:07:54 +01:00
Jack Grigg 83c6a2d1ca Store OutputDescription `ephemeral_key` as bytes
This removes an unnecessary `to_bytes` during trial decryption of notes,
and more closely matches the protocol spec. We retain the consensus rule
canonicity check on epk due to `SaplingVerificationContext::check_output`
taking a `jubjub::ExtendedPoint`, forcing `zcashd` to parse the bytes.
2021-08-06 16:54:48 +01:00
str4d 945a199ddd
zcash_primitives: Use `not(unix)` instead of `windows` for flamegraphs
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-08-05 23:22:12 +01:00
Jack Grigg 16d38ea354 zcash_primitives: Remove spaces from benchmark group names 2021-08-05 22:40:46 +01:00
Jack Grigg 0f15743200 Disable default benchmark harness for all workspace crates
This is necessary in order to provide criterion-specific arguments to
`cargo bench`, such as `--profile-time`.
2021-08-05 22:39:36 +01:00
Jack Grigg 3ffa3ae435 zcash_primitives: Add flamegraph support to benchmarks on Unix
Use `cargo bench -- --profile-time TIME_IN_SECONDS` to measure the
flamegraphs. They will be placed in `target/criterion/`.
2021-08-05 22:24:16 +01:00
Jack Grigg 8b05727361 zcash_primitives: Benchmark trial decryption of compact outputs
These are effectively identical to full-output trial decryption (as the
primary cost is the scalar multiplication), but it's good to check.
2021-08-05 22:13:23 +01:00
Kris Nuttycombe 2945905d52 Implement manual serialization for incremental Merkle tree components.
This also adds parsing of the legacy CommitmentTree format,
to permit easy migration of persisted data.
2021-08-05 09:32:44 -06:00
Kris Nuttycombe 232feb71be Use orchard::Flags::to_byte/from_byte 2021-07-29 10:38:43 -06:00
Kris Nuttycombe 3b8f0214eb Move Orchard bundle commitments to the `orchard` crate. 2021-07-29 10:38:43 -06:00
Kris Nuttycombe 105f8da91f Update `nonempty` and `orchard` dependencies. 2021-06-30 12:57:56 -06:00
Kris Nuttycombe 1ae2bd727c Fix clippy complaints 2021-06-23 16:37:48 -06:00
Jack Grigg 69ee9f8ca5 Bump orchard deps
Includes additional patched dependencies, now that the orchard crate is
not pinning specific revisions of the in-development crates.
2021-06-15 20:20:53 +01:00
Jack Grigg 00b3e427e6 impl From<Amount> for orchard::ValueSum
This is necessary in order to be able to calculate bvk for Orchard
bundles.
2021-06-14 11:41:02 +01:00
Jack Grigg c7c79d266e zcash_note_encryption: Add `ShieldedOutput::ephemeral_key() -> EphemeralKeyBytes`
This replaces the `ShieldedOutput::epk() -> &Domain::EphemeralPublicKey`
which could not be satisfied by output types that did not parse epk.
2021-06-10 18:35:19 +01:00
str4d 3915abd0a1
Merge pull request #399 from str4d/zip-244-auth-digest-test-vectors
Bring in ZIP 244 auth digest test vectors.
2021-06-08 19:47:55 +01:00
Jack Grigg 684fd504a8 ZIP 244: Write transparent scripts in their consensus encoding 2021-06-08 18:47:34 +01:00
str4d fe07fb3c51
Merge pull request #396 from str4d/394-zip-216
Impl ZIP 216 on SaplingVerificationContext and redjubjub::PublicKey
2021-06-08 18:34:47 +01:00
Kris Nuttycombe 31ea91ced8 Ensure tze digest is only included if TZEs are in the consensus rules. 2021-06-08 11:33:52 -06:00
Jack Grigg acc19a76e2 Bring in ZIP 244 auth digest test vectors.
From https://github.com/zcash-hackworks/zcash-test-vectors/pull/34.
2021-06-08 18:17:30 +01:00
Jack Grigg 7e23b96a03 Extract ZIP 225 Orchard bundle parsing and serialization into helpers
These will be used by `zcashd` for handling the Orchard component of v5
transactions.
2021-06-08 17:29:04 +01:00
str4d 0bfd1f7544
Merge pull request #375 from nuttycom/feature/zip-225
ZIP 225 & ZIP 244
2021-06-08 17:28:25 +01:00
Kris Nuttycombe eb3d01aa6b
Apply suggestions from code review
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-06-08 07:02:52 -06:00
Kris Nuttycombe f70285d243 Fix error in transaction auth digest.
Co-authored-by: str4d <jack@electriccoin.co>
2021-06-07 09:27:05 -06:00
Kris Nuttycombe 371f84dc9b Minor error message improvement.
Co-authored-by: str4d <jack@electriccoin.co>
2021-06-07 09:27:05 -06:00
Kris Nuttycombe 0253442af0 Be more explicit about empty sapling & orchard hashes. 2021-06-07 09:27:05 -06:00
str4d 2f3e4989ba
Merge pull request #352 from str4d/zcash_address
New component: zcash_address crate
2021-06-07 00:36:48 +01:00
Jack Grigg e2fb5e6402 Impl ZIP 216 on SaplingVerificationContext and redjubjub::PublicKey
`PublicKey::verify` now always uses post-ZIP 216 validation rules, which
is fine in non-consensus contexts.

`SaplingVerificationContext` is used by `zcashd`'s consensus rules.
2021-06-06 23:45:15 +01:00
Kris Nuttycombe b93c503263 Deserialize signatures directly into actions.
Co-authored-by: str4d <jack@electriccoin.co>
2021-06-05 10:19:36 -06:00