Commit Graph

887 Commits

Author SHA1 Message Date
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 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
Kris Nuttycombe caee90dce9 `zcash_primitives`: Use sapling::NoteValue instead of bare u64 2023-10-24 16:36:56 -06:00
Kris Nuttycombe 9cd60c536e Apply suggestions from code review
Co-authored-by: Daira Emma Hopwood <daira@jacaranda.org>
2023-10-24 13:11:35 -06:00
Kris Nuttycombe f7527e14c9 Use `NonNegativeAmount` for note and utxo value fields 2023-10-23 12:59:26 -06:00
Kris Nuttycombe a2b5c2c784 zcash_client_backend: Use `NonNegativeAmount` for fee and change amounts.
In order to use `uint64` for amounts that must be nonnegative in the
`proposal.proto` file, it is useful to update fee and change computation
to use `NonNegativeAmount` where possible.
2023-10-10 16:12:47 -06:00
Kris Nuttycombe 030c1825a8
Merge pull request #1011 from nuttycom/wallet/note_identifiers
Make `ReceivedSaplingNote` internals private, and use (TxId, output_index) for note identifiers.
2023-10-10 07:30:33 -06:00
zancas 4bd3259ad0
Add a MARGINAL_FEE constant for the ZIP 317 marginal fee 2023-10-09 15:23:55 -06:00
sasha 74840829c8 zcash_client_backend: Make `ReceivedSaplingNote` internals private.
This also adds the txid and index to `ReceivedSaplingNote` for use as a
globally identifier for the note.
2023-10-09 12:22:12 -06:00
Jack Grigg e1a4238a71 zcash_primitives: Add helper impls of `{Try}MapAuth` for closures 2023-10-06 23:48:27 +00:00
Jack Grigg 65efee1a16 zcash_primitives: Add `sapling::Bundle::try_map_authorization` 2023-10-06 23:46:02 +00:00
Jack Grigg b09b435135 zcash_primitives: Change `sapling::MapAuth` to take `&mut self` 2023-10-06 23:43:43 +00:00
Jack Grigg 241a1a3660 zcash_primitives: Add some more `Clone` and `Debug` impls 2023-10-06 22:05:49 +00:00
Jack Grigg 04aa5a044b zcash_primitives: Add `MockSpendProver` and `MockOutputProver`
These are analogues of `MockTxProver` in that they implement the
corresponding Sapling prover traits.
2023-10-06 20:31:31 +00:00
Jack Grigg 296f75954b Add `SpendProver::encode_proof` and `OutputProver::encode_proof` 2023-10-06 20:19:41 +00:00
Kris Nuttycombe e6fa567332
Merge pull request #1000 from zingolabs/add_debugs_to_inputs
add Debug to transaction builder-reported types
2023-10-04 09:15:29 -06:00
Kris Nuttycombe b73c51f974
Merge pull request #1004 from zingolabs/add_fee_getter
Add fee getter
2023-10-03 12:04:29 -06:00
zancas b9f8ec8ed2
add pub getter to transaction builder
use getter in original context to DRY

add doc-comment

Minor cleanup & documentation fixes.

Co-Authored-By: Daira Emma Hopwood <daira@jacaranda.org>
2023-10-03 11:13:06 -06:00
Jack Grigg 0d46fe72cc zcash_primitives: Introduce an `OutputProver` trait 2023-10-02 16:59:01 +00:00
Jack Grigg 290bfa8b31 zcash_primitives: Introduce a `SpendProver` trait 2023-10-02 16:59:01 +00:00
zancas b5e24751d6
add Debug to transaction builder-reported types 2023-09-29 12:55:06 -06:00
Jack Grigg db31105067 Move Sapling circuits from `zcash_proofs` to `zcash_primitives::sapling`
Closes zcash/librustzcash#737.
2023-09-29 18:36:54 +00:00
Jack Grigg 0ddcccdbac zcash_primitives: Move Sapling constants into `sapling` module 2023-09-29 17:39:43 +00:00
Jack Grigg 7e89300db9 Move common package and dependency configs into workspace config
The MSRV for the main crates is 1.65, which is higher than the Rust
version that stabilised workplace dependencies (1.64). The implicit MSRV
for the component crates is still lower than this, so we don't migrate
these crates.
2023-09-26 22:01:32 +00:00
Jack Grigg d35d0961ab zcash_primitives 0.13.0 2023-09-25 15:06:57 +00:00
Daira Emma Hopwood 401af23484 Improve wallet tests.
Signed-off-by: Daira Emma Hopwood <daira@jacaranda.org>
2023-09-12 01:33:12 +01:00
Jack Grigg 67b84c25e0 zcash_primitives 0.13.0-rc.1 2023-09-08 19:45:54 +00:00
Kris Nuttycombe 46cc6666df Address comments from code review.
Co-authored-by: Daira Emma Hopwood <daira@jacaranda.org>
2023-09-08 13:03:53 -06:00
Jack Grigg 94c1f2413d Migrate to `incrementalmerkletree 0.5`, `orchard 0.6` 2023-09-08 18:57:25 +00:00
Kris Nuttycombe 0ea2290670 zcash_primitives: update CHANGELOG.md in preparation for the 0.13.0 release 2023-09-08 08:54:39 -06:00
Kris Nuttycombe 7abd1324de Apply suggestions from code review
Co-authored-by: Daira Emma Hopwood <daira@jacaranda.org>
Co-authored-by: Jack Grigg <jack@electriccoin.co>
2023-09-05 16:49:36 -06:00
Kris Nuttycombe f53ea2d778 Add `get_wallet_summary` to `WalletRead`
The intent of this API is to provide a single API which returns in a
single call:

* per-account balances, including pending values
* wallet sync progress

Fixes #865
Fixes #900
2023-09-05 16:06:55 -06:00
Kris Nuttycombe 224e021558
Merge pull request #931 from nuttycom/remove_deprecated_default_fee
zcash_primitives: Remove the deprecated 1000-ZAT DEFAULT_FEE constant
2023-09-01 14:40:11 -06:00
Kris Nuttycombe 14d61a2e98 zcash_primitives: Remove the deprecated 1000-ZAT DEFAULT_FEE constant 2023-09-01 12:46:13 -06:00
Jack Grigg f33c8ea418 zcash_primitives: Parse the full opcode set
This enhances the alternate `impl Debug for Script` to render unexpected
scripts correctly.
2023-08-30 20:41:27 +00:00
Jack Grigg c8e2d81f58 Render byte slices as hex more often in `Debug` impls
This is more generally useful for debugging purposes than the default
`Debug` impl for `&[u8]`.

We also provide an alternate `Debug` impl for `legacy::Script` that
parses and renders known opcodes. Note that we only parse a subset of
the full opcode set.
2023-08-30 20:41:27 +00:00
Jack Grigg 57a3914e3a zcash_primitives: Drop `byteorder::LittleEndian` usage in sighash 2023-08-30 19:46:38 +00:00
Jack Grigg 2a98f94f05 Add more debug and trace logging
The `Debug` impl for `sapling::Node` is updated to output hex-encoded
bytes for readability.
2023-07-18 17:23:57 +00:00
Kris Nuttycombe 6fa0b46d8e Implement `suggest_scan_ranges` and `update_chain_tip`
This implements a priority queue backed by the wallet database for scan
range ordering. The scan queue is updated on each call to `put_blocks`
or to `update_chain_tip`.
2023-07-07 20:13:45 -06:00
Kris Nuttycombe e3aafdad19 Move chain continuity checks into `scan_block_with_runner`
In preparation for out-of-order range-based scanning, it is necessary
to ensure that the size of the Sapling note commitment tree is carried
along through the scan process and that stored blocks are always
persisted with the updated note commitment tree size.
2023-07-03 10:49:03 -06:00
Kris Nuttycombe d65b129b43 Apply changelog, documentation & style suggestions from code review
Co-authored-by: str4d <thestr4d@gmail.com>
2023-06-30 09:30:24 -06:00
Kris Nuttycombe 0a4236f725 zcash_client_sqlite: Add tests for sqlite-backed ShardTree & fix revealed issues. 2023-06-29 15:35:18 -06:00
Kris Nuttycombe 3e358bc1c9 zcash_client_backend: Use `shardtree` for note commitments in block scanning.
Also adds a skeleton `zcash_client_sqlite` implementation of
`shardtree::ShardStore` and a skeleton migration for related
database changes.
2023-06-29 15:35:18 -06:00