Commit Graph

941 Commits

Author SHA1 Message Date
Kris Nuttycombe f18d082aa3 zcash_client_backend: Introduce an "orchard-client" feature flag.
We plan to also introduce a similar flag to gate access to Sapling
functionality. Since introduction of Orchard functionality is still
nascent, it's the correct time to introduce this isolation, before
there's more functionality that needs to be isolated in this fashion.
2024-01-03 17:05:20 -07:00
Jack Grigg 2ea83243a7 Document the feature flags 2024-01-03 20:15:21 +00:00
Jack Grigg 0df4c6f043 Remove implicit feature flags for optional dependencies
All optional dependencies are enabled as part of dedicated feature
flags.
2024-01-03 20:15:21 +00:00
Jack Grigg b7bba9bbb2 zcash_primitives: Remove `keys` module 2024-01-03 17:29:59 +00:00
Kris Nuttycombe 704e8e1144 zcash_primitives: Updates to reflect `sapling-crypto` and `orchard` builder changes. 2024-01-02 13:00:11 -07:00
Kris Nuttycombe d74f635d9d zcash_client_backend: Factor out common single-output change strategy logic. 2023-12-14 12:55:34 -07:00
Jack Grigg 35ea2ff38b zcash_primitives: Remove `sapling-crypto` re-export and update changelog 2023-12-12 19:50:26 +00:00
Jack Grigg b6907b14e6 Use `sapling-crypto` crate directly outside `zcash_primitives` 2023-12-12 19:50:26 +00:00
Jack Grigg bf984ff38d zcash_primitives: Remove benchmarks that were moved to `sapling-crypto` 2023-12-12 18:45:32 +00:00
Jack Grigg 6acc64e61c Move `zcash_primitives::sapling` module into `sapling-crypto` 2023-12-11 17:07:45 +00:00
Jack Grigg b6ee98ed46 zcash_primitives: Add `ProverProgress` trait to `sapling::builder`
This breaks the link between the concrete `Sender<Progress>` channel
used by the main builder in `zcash_primitives`, and the proof creation
APIs in what will become the `sapling-crypto` crate.

Part of zcash/librustzcash#1044.
2023-12-11 16:37:53 +00:00
str4d ecd5402266
Merge pull request #1061 from zcash/1044-sapling-prf-expand
zcash_primitives: Introduce type-safe `PRF^expand`
2023-12-07 18:03:37 +00:00
Jack Grigg ce7b7df0cc zcash_primitives: Switch to type-safe `PRF^expand`
Part of zcash/librustzcash#1044.
2023-12-07 17:09:44 +00:00
Kris Nuttycombe 4eaa41affa zcash_primitives: Remove and relocate `InputView` traits. 2023-12-06 20:17:43 -07:00
Jack Grigg d332aacf98 Merge branch 'main' into 1044-extract-zip32 2023-12-06 18:04:36 +00:00
Jack Grigg 3dfd478141 Migrate to published `zip32` crate outside this repository 2023-12-06 18:04:09 +00:00
Jack Grigg 5aa0e6c6ee Revert "Convert zip32 crate into a module of zcash_primitives"
This reverts commit f25a8a557e.
2023-12-05 18:07:53 +00:00
Kris Nuttycombe 8c1480304e zcash_client_backend: Wrap entire Sapling note in `SaplingReceivedNote` 2023-12-05 10:49:35 -07:00
Jack Grigg 54e8dd35c1 zcash_primitives: Remove old Sapling re-exports from `zip32` module 2023-12-05 17:31:17 +00:00
str4d fb424364ce
Merge pull request #1057 from nuttycom/wallet/orchard_balance
Expose Orchard value in balance API & add Orchard components to ScannedBlock
2023-12-05 17:01:10 +00:00
Kris Nuttycombe 214a3750c5 zcash_client_backend: Make `Balance` and `AccountBalance` fields private.
Public methods for mutation of these fields have been provided that
perform checking for overflow of the valid monetary range as part
of their operation.
2023-12-04 13:53:27 -07:00
Jack Grigg 906e203663 zcash_primitives: Move Sapling `HashSer` impl into `merkle_tree` module
The `HashSer` trait will remain in `zcash_primitives` while the Sapling
type it is implemented for moves to `sapling-crypto`.

Part of zcash/librustzcash#1044.
2023-12-04 20:26:00 +00:00
Jack Grigg 8acc03783e zcash_primitives: Refactor `sapling::tree::Node` around `jubjub::Base` 2023-12-04 20:24:24 +00:00
Daira Emma Hopwood acf146248e
Merge pull request #1056 from zcash/581-use-redjubjub-crate
zcash_primitives: Replace `sapling::redjubjub` with `redjubjub` crate
2023-12-04 18:27:32 +00:00
Tomek Piotrowski 22ad737267
zcash_primitives: Add Network Upgrade 6 to `consensus::NetworkUpgrade` (#1048)
Co-authored-by: Jack Grigg <jack@electriccoin.co>
2023-12-04 14:41:41 +00:00
Jack Grigg ded09f99b5 zcash_primitives: Add RedJubjub test vectors 2023-12-01 14:22:49 +00:00
Jack Grigg 5ccba3e1af zcash_primitives: Introduce newtypes for `ask` and `ak`
The Sapling key components specification places more constraints on the
values of `ask` and `ak` than general RedJubjub signing and verification
keys.
2023-12-01 11:19:31 +00:00
Jack Grigg de1ed21051 zcash_primitives: Replace `sapling::redjubjub` with `redjubjub` crate
As a side-effect, we remove the ability to verify individual
transactions with pre-ZIP 216 rules (which we already removed from
`zcashd` consensus nodes in zcash/zcash#6000 and zcash/zcash#6399, as
all pre-ZIP 216 transactions on mainnet are also valid under ZIP 216).
2023-11-30 17:52:31 +00:00
Kris Nuttycombe 1e5d253c9c Fix dependencies to repair `cargo -p` subproject builds. 2023-11-29 12:37:18 -07:00
Kris Nuttycombe 7f3d057a1b zcash_primitives: Avoid passing duplicate diversifier information to Sapling builder.
The note provided to `add_sapling_spend` contains the recipient address,
and we can extract the diversifier from this address, so we should not
pass it separately.
2023-11-28 10:54:06 -07:00
Jack Grigg 0d06e561bb Update Sapling imports to migrate off re-exports at old paths 2023-11-28 03:40:41 +00:00
Jack Grigg 54fa31e00c zcash_primitives: Separate `GROTH_PROOF_SIZE` constant for `sapling` module 2023-11-28 03:25:14 +00:00
Jack Grigg 106f5a353a Remove `MemoBytes` usage from `zcash_primitives::sapling` 2023-11-28 03:25:14 +00:00
Jack Grigg 7064efe697 zcash_primitives: Improve ZIP 32 comments 2023-11-28 01:38:53 +00:00
Jack Grigg f7726141c3 zcash_primitives: Reject non-canonical ZIP 32 Sapling master key encodings 2023-11-28 01:38:53 +00:00
Jack Grigg 7badba29ea zcash_primitives: Move `zip32::sapling` to `sapling::zip32` 2023-11-28 01:38:53 +00:00
Jack Grigg 45ef8b1604 zcash_primitives: Add constructor and getter to `zip32::ChainCode` 2023-11-28 01:38:53 +00:00
Jack Grigg 61bb18d97f zcash_primitives: Refactor `zip32::ChildIndex` to be an opaque struct 2023-11-28 01:38:53 +00:00
Jack Grigg a9310e3969 zcash_primitives: Remove non-hardened Sapling ZIP 32 derivation 2023-11-28 01:34:31 +00:00
Jack Grigg cdd20e8583 zcash_primitives: Make `value_balance` generic in `sapling::Bundle`
This removes the dependency on `Amount`, and matches how we handle this
in the `orchard` crate.

Part of zcash/librustzcash#1044.
2023-11-23 07:08:13 +00:00
Jack Grigg eb0b5a1b24 zcash_primitives: Remove `consensus::Parameters` from `sapling` module
Part of zcash/librustzcash#1044.
2023-11-22 04:29:36 +00:00
Kris Nuttycombe 236cd569ee
Merge pull request #891 from nuttycom/proposal-ffi
Add protobuf representation for transaction proposals
2023-11-15 15:47:46 -07:00
Daira Emma Hopwood e32cf8b5ac Use `{ENC,OUT}_CIPHERTEXT_SIZE` constants in `zcash_primitives::transaction::components::sapling`.
Signed-off-by: Daira Emma Hopwood <daira@jacaranda.org>
2023-11-10 20:38:50 +00:00
Daira Emma Hopwood e5bdc72b52 Use `{ENC,OUT}_CIPHERTEXT_SIZE` constants in `zcash_primitives::sapling::bundle`.
Signed-off-by: Daira Emma Hopwood <daira@jacaranda.org>
2023-11-10 20:30:31 +00:00
Kris Nuttycombe 33169719ce zcash_client_backend: Add serialization & parsing for protobuf Proposal representation. 2023-11-09 20:07:16 -07:00
Jack Grigg c6dd9ad858 zcash_primitives: Expose Sapling bundle component parsers needed by zcashd
These can be removed after future zcashd refactors.
2023-11-10 02:09:22 +00:00
Jack Grigg 68ae453e5d zcash_primitives: Move Sapling bundle parsing into `transaction::components::sapling` 2023-11-10 02:09:22 +00:00
Jack Grigg e1a5539094 zcash_primitives: Rework Sapling parsers to be plain functions
Once `zcash_primitives::sapling` is extracted to `sapling-crypto`, these
would have become orphan impls.
2023-11-10 01:06:18 +00:00
Jack Grigg 54eb03e34e zcash_primitives: Move Sapling bundle types into `sapling` module 2023-11-09 04:04:07 +00:00
Jack Grigg f5595122f9 zcash_primitives: Move `builder` module to `zcash_primitives::sapling` 2023-11-09 04:02:19 +00:00