Commit Graph

807 Commits

Author SHA1 Message Date
Kris Nuttycombe ec29836df9 Remove `bridgetree` dependency from `zcash_primitives`.
This also now makes `zcash_extensions` use `incrementalmerkletree`
transitively via type aliases in `zcash_primitives`.
2023-05-04 15:42:39 -06:00
Kris Nuttycombe c9f53ddde5 Apply suggestions from code review
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2023-05-04 14:46:34 -06:00
Kris Nuttycombe 4d32a8ac20 Remove serialization version constants. 2023-05-04 12:46:15 -06:00
Kris Nuttycombe 71f74d4ac1 Remove the `merkle_tree::incremental` module.
This consolidates all the seralization code for frontiers and
incremental witnesses in the `merkle_tree` module.
2023-05-04 12:46:15 -06:00
Kris Nuttycombe 6aaa96d377 Remove zcashd-specific `bridgetree` serialization. 2023-05-04 12:46:15 -06:00
Kris Nuttycombe 1f9747e15f Move merkle tree types to the `incrementalmerkletree` crate.
This removes the `CommitmentTree`, `IncrementalWitness`, and
`MerklePath` types in favor of equivalent versions available
from the `incrementalmerkletree` crate.
2023-05-04 12:30:56 -06:00
Kris Nuttycombe 667a7b841e Move-only: restructure merkle tree source for extraction. 2023-05-04 12:21:50 -06:00
Kris Nuttycombe 6f2cbfc7de Factor serialization out from merkle tree data structures. 2023-05-04 12:21:47 -06:00
Kris Nuttycombe 831a6cd396 Remove superfluous inner functions now that tree depth is a constant. 2023-05-04 12:16:09 -06:00
Kris Nuttycombe ec57d23115 Use const generics to set commitment tree & incremental witness depths.
This is in preparation for extraction into the `incrementalmerkletree`
crate, which is not Sapling-specific and therefore cannot hard-code
the depths of these data structures.
2023-05-04 12:16:09 -06:00
Kris Nuttycombe 69430c3da2 Upgrade incrementalmerkletree and use bridgetree crate for `Bridgetree`. 2023-05-04 12:08:38 -06:00
Jack Grigg a419b56e80 zcash_primitives 0.11.0 2023-04-14 23:56:16 +00:00
Jack Grigg 7be5d1bf7d Update changelogs 2023-04-14 23:49:13 +00:00
Kris Nuttycombe 30dfcd79cc
Merge pull request #809 from nuttycom/test/merkle_tree_serialization
Add roundtrip and golden tests for v1 `MerkleBridge` serialization.
2023-04-12 13:40:49 -06:00
Jack Grigg edb1941f19 zcash_primitives: Downgrade to `bip0039 0.10`
`bip0039 0.11` switched from language function arguments to a generic
parameter. We aren't ready to migrate to this yet.
2023-04-12 16:19:03 +00:00
Kris Nuttycombe b2139c0b97 Add roundtrip and golden tests for v1 `MerkleBridge` serialization. 2023-04-11 16:45:09 -06:00
Kris Nuttycombe 3ff5fa5288
Merge pull request #793 from zcash/zip32_seed_signature
[#792] zcash_primitives: implement Seed Signature section of ZIP-32
2023-04-11 12:58:39 -06:00
Jack Grigg 878f3e9214 zcash_primitives: Migrate to `sha2 0.10`, `bip0039 0.11` 2023-04-11 15:48:44 +00:00
Jack Grigg d2ccd1f017 zcash_primitives: Migrate to `fpe 0.6`
Part of zcash/librustzcash#757.
2023-04-11 15:48:44 +00:00
Jack Grigg 2fcde5e047 Migrate to `orchard 0.4.0`
Closes zcash/librustzcash#766.
2023-04-11 13:25:17 +00:00
Francisco Gindre e3f09ba66a
[#792] zcash_primitives: implement Seed Signature section of ZIP-32
Implements a type to enclose a Seed Fingerprint byte sequence
called `SeedFingerprint`

implements a public function to create a `SeedFingerprint` from
seed bytes

Closes #792

Credits for PR Suggestions by Daira and Kris

Edit: Added suggestions from Daira Emma and a test for returning `None`

Added test refactor suggestions as well

removed reference to test vectors
2023-03-30 18:41:57 -03:00
Kris Nuttycombe d6fafa291b Update Sapling note encryption for `zcash_note_encryption 0.3.0`
Fixes zcash/librustzcash#455
2023-03-21 11:09:38 -06:00
Kris Nuttycombe c696069f93 Bump zcash_note_encryption to version 0.3.0 for release.
This removes the path-based dependencies on the `zcash_note_encryption`
crate in favor of using versioned dependencies locally. This better
reflects the future state in which `zcash_note_encryption` is factored
out of the workspace and maintained in a separate repository.
2023-03-20 16:16:34 -06:00
Kris Nuttycombe cb1be45f22 Update CHANGELOGs to reflect the addition of the zcash_primitives/multicore feature. 2023-03-20 15:11:05 -06:00
Kris Nuttycombe 7c1a4c898d Fix wasm32 CI runner.
The `halo2_proofs/multicore` flag must be disabled when running wasm
builds; this ensures that we do not accidentally include it as a
transitive dependency when building with `--no-default-features`.
2023-03-20 14:39:07 -06:00
Kris Nuttycombe 77fbd8cb4f Update dependencies to reflect changes in ff 0.13 2023-03-20 14:35:45 -06:00
Jack Grigg 2530eb3a9d Temporarily re-expose Sapling `NoteCommitment` derivation 2023-03-16 23:27:01 +00:00
Jack Grigg a8003c8ff5 Temporarily re-expose ability to construct invalid Sapling bundles
Until zcash/zcash#6397 is closed, this ability is needed by `zcashd` for
crossing the FFI.
2023-03-08 03:45:01 +00:00
Kris Nuttycombe 9c56b21de7 Pin the `inferno` transitive dependency to avoid MSRV errors. 2023-02-16 11:06:24 -07:00
Jack Grigg 9852c31970 zcash_primitives 0.10.0 2023-02-01 02:10:42 +00:00
Jack Grigg 7f970bb82f Use `EphemeralSecretKey, EphemeralPublicKey, SharedSecret` types in APIs 2023-01-24 15:02:49 +00:00
Jack Grigg bc99cd2634 Move prepared key types into `sapling::keys`
We re-export them under `sapling::note_encryption` for now to make the
API changes smaller.
2023-01-24 15:02:43 +00:00
Jack Grigg ded14adbb3 Add `sapling::keys::DiversifiedTransmissionKey` 2023-01-24 15:02:38 +00:00
Jack Grigg 06ba399d80 Clean up the `sapling::Note` API 2023-01-24 15:02:32 +00:00
Jack Grigg 87d0bd7db1 Refactor `sapling::Note`
Its internals are now private, and it stores a `PaymentAddress` (and by
extension the diversifier) instead of `g_d`.
2023-01-24 15:02:27 +00:00
Jack Grigg dff21222fb Require `PaymentAddress` to contain a valid diversifier 2023-01-24 14:51:13 +00:00
Jack Grigg 42c332a7a8 Use `sapling::note::ExtractedNoteCommitment` type in APIs 2023-01-24 14:37:11 +00:00
Jack Grigg 0a26c812e0 Split `sapling::Authorization::Proof` type into Spend and Output types
While the Groth16 proofs have identical encodings, they are technically
for different circuits, and we need the ability to differentiate them
during bundle building.
2023-01-20 11:12:49 +00:00
Kris Nuttycombe 79f3f10714
Merge pull request #760 from zcash/759-msrv-1.60
Bump MSRV for `zcash_primitives` and dependents to 1.60
2023-01-19 19:33:15 -07:00
Jack Grigg 809427f6bd criterion 0.4 2023-01-20 00:03:10 +00:00
Jack Grigg 49b1cb3e69 Bump MSRV for `zcash_primitives` and dependents to 1.60
The MSRVs of the component crates are left as-is, partly because our
dependencies don't require us to bump them, and partly because those
crates have no pending changes and are relatively stable. We also plan
to split the component crates out into a separate repository, where it
will be easier to have a separate MSRV.

Closes zcash/librustzcash#759.
2023-01-19 23:48:24 +00:00
Jack Grigg 19d8e2125e Introduce `sapling::keys::{EphemeralSecretKey, EphemeralPublicKey}` types 2023-01-06 22:42:33 +00:00
Jack Grigg 7fb80d55d6 Introduce `sapling::keys::SharedSecret` type 2023-01-06 22:24:40 +00:00
Jack Grigg 1df49c517e Refactor Sapling key derivation 2023-01-06 22:24:40 +00:00
Jack Grigg 88d46fd6b3 Refactor Sapling note commitment derivation 2023-01-06 22:24:40 +00:00
Jack Grigg 65271b49e5 Refactor Sapling nullifier derivation 2023-01-06 22:24:40 +00:00
Jack Grigg f1d3e03a9b zcash_primitives: Reorganise `sapling` module into submodules
The module structure now matches the `orchard` crate, to make subsequent
refactoring easier. The public API is not altered by this commit.
2023-01-06 22:24:35 +00:00
Kris Nuttycombe 95cbc7abaf
Merge pull request #734 from zcash/sapling-type-safety
Improve Sapling type safety
2023-01-05 13:12:45 -07:00
Jack Grigg 23922ca290 Add Sapling value types
These are modeled after the value types developed for the `orchard`
crate.
2022-12-20 05:16:39 +00:00
Kris Nuttycombe 125d2bc3d5
Merge pull request #727 from nuttycom/test/shield_transparent_funds
Add `shielding_threshold` argument to `shield_transparent_funds`.
2022-12-15 13:11:55 -07:00