Commit Graph

928 Commits

Author SHA1 Message Date
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
str4d 64d657ed31
Merge pull request #1033 from zcash/sapling-params-refactor
Introduce newtypes for Sapling circuit parameters
2023-11-08 21:01:30 +00:00
str4d e4b9d73d0c
Merge pull request #1003 from nuttycom/wallet/reusable_input_selection
zcash_client_backend: Factor out `InputSource` from `WalletRead`
2023-11-08 20:20:03 +00:00
Kris Nuttycombe aa063ae3fd zcash_client_backend: Factor out input source traits from `WalletRead`
Prior to this change, it's necessary to implement the entirety of the
`WalletRead` trait in order to be able to use the input selection
functionality provided by `zcash_client_backend::data_api::input_selection`.
This change factors out the minimal operations required for transaction
proposal construction to better reflect the principle of least authority
and make the input selection code reusable in more contexts.

In order to minimize the operations of the newly-created `InputSource`
and `ShieldingSource` traits, this change also removes the
`min_confirmations` field from transaction proposals, in favor of
storing explicit target and anchor heights. This has the effect of
limiting the lifetime of transaction proposals to `PRUNING_DEPTH -
min_confirmations` blocks.
2023-11-08 12:41:49 -07:00
Jack Grigg 82535112c2 zcash_primitives: Add Sapling verification key newtypes 2023-11-07 03:11:15 +00:00
Jack Grigg 1b9f26c984 Move `{Spend,Output}Parameters` from `zcash_proofs` to `zcash_primitives` 2023-11-07 03:09:25 +00:00
Jack Grigg 8bb9c4e7ba Move Sapling proof verifiers from `zcash_proofs` to `zcash_primitives` 2023-11-07 03:08:43 +00:00
Jack Grigg 3b8c932ab9 zcash_primitives: Implement `Clone` on bundle marker types
This enables unauthorized Sapling bundles to be cloned, for example when
loading them into a `TransactionData` for signature hashing.
2023-11-04 04:27:07 +00:00
Jack Grigg b20641ae58 zcash_primitives: Remove `sapling::prover::TxProver`
Removed
-------
- `zcash_primitives::sapling`:
  - `prover::TxProver` (use `SpendProver` and `OutputProver` instead).
  - `prover::mock::MockTxProver` (use `MockSpendProver` and `MockOutputProver`
    instead).
2023-11-03 21:08:37 +00:00
Jack Grigg a77b6c631c Add missing unreleased changelog entries 2023-11-03 00:56:56 +00:00
Jack Grigg bed5bc6cf6 Clean up unreleased changelog entries 2023-11-03 00:56:26 +00:00
Jack Grigg b2ff29db78 Refactor Sapling builder to separate out proof generation
Closes zcash/librustzcash#741.
2023-10-31 22:01:34 +00:00
Kris Nuttycombe 570ea48588 Apply suggestions from code review
Co-authored-by: Daira Emma Hopwood <daira@jacaranda.org>
2023-10-26 15:24:45 -06:00
Kris Nuttycombe cc0cc2de84 zcash_primitives: add StandardFeeRule
`StandardFeeRule` is an enumeration of the standard fees that have
existed in the history of Zcash zips. It is provided to simplify
transition to new fee strategies; legacy elements of this enumeration
are introduced already-deprecated.
2023-10-25 08:08:49 -06:00