Commit Graph

3134 Commits

Author SHA1 Message Date
Kris Nuttycombe 14d61a2e98 zcash_primitives: Remove the deprecated 1000-ZAT DEFAULT_FEE constant 2023-09-01 12:46:13 -06:00
str4d 7421d85cc0
Merge pull request #926 from zcash/debugging
Debugging improvements
2023-09-01 19:41:29 +01:00
str4d 229f6e82ad
Merge pull request #907 from nuttycom/sbs/wallet_birthday
zcash_client_backend: Add account birthday management to the Data Access API
2023-09-01 18:10:30 +01:00
Kris Nuttycombe 5b3f544102 Apply suggestions from code review
Co-authored-by: str4d <thestr4d@gmail.com>
Co-authored-by: Daira Emma Hopwood <daira@jacaranda.org>
2023-09-01 10:38:20 -06:00
Kris Nuttycombe a51712830f zcash_client_sqlite: ignore unscanned ranges below the birthday height in note selection 2023-09-01 10:12:19 -06:00
Kris Nuttycombe 0b0274cdc1 zcash_client_backend: Make wallet and account birthday heights available via the data access API 2023-09-01 10:11:43 -06:00
Kris Nuttycombe 459dc49b54 zcash_client_backend: Accept account birthday as a parameter to `create_account`
This also removes the zcash_client_sqlite-specific database
initialization procedures in favor of a standardized approach using the
methods available via the data access API.
2023-09-01 10:08:17 -06:00
Kris Nuttycombe c99c0fc884 zcash_client_sqlite: Enable forced re-scanning of previously scanned ranges.
When `force_rescans` is set to `true` in a call to
`replace_queue_entries`, previously scanned ranges will have their
existing priority overwritten by the scan priority for a provided range;
otherwise, the existing scan priority dominance rule continues to be
enforced. This enables us to require previously scanned ranges be
re-scanned without interfering with higher-priority scan operations.
2023-09-01 08:13:11 -06:00
Kris Nuttycombe cf4c769609
Merge pull request #927 from nuttycom/sbs/prevent_scan_fragmentation
zcash_client_sqlite: Prevent scan range fragmentation.
2023-09-01 07:50:04 -06:00
Kris Nuttycombe 8bcc3c1cc1 Fix unused imports. 2023-08-31 17:56:04 -06:00
Kris Nuttycombe fb8c3a178c zcash_client_sqlite: Ensure that fragmentation also can't occur at scan range ends. 2023-08-31 17:52:29 -06:00
Kris Nuttycombe 4fe9d61959
zcash_client_sqlite: Fix a comment on range inclusion.
Co-authored-by: str4d <thestr4d@gmail.com>
2023-08-31 15:07:07 -06:00
str4d 2ba9c25b9f
Merge pull request #928 from zcash/lightwalletd-expose-service-types
zcash_client_backend: Reduce scope of `lightwalletd-tonic` feature flag
2023-08-31 22:06:55 +01:00
Jack Grigg 3272f129e2 zcash_client_backend: Remove now-superfluous braces from build script 2023-08-31 20:32:42 +00:00
Jack Grigg 3ad07cad9e zcash_client_backend: Reduce scope of `lightwalletd-tonic` feature flag
The `zcash_client_backend::proto::service::compact_tx_streamer_client`
is now the only module controlled by that feature flag, exposing the
service types for use by parsers.
2023-08-31 20:32:04 +00:00
Kris Nuttycombe bcafb7d4b4 zcash_client_sqlite: Prevent scan range fragmentation.
Fixes #922

Co-authored-by: Sean Bowe <ewillbefull@gmail.com>
2023-08-31 14:18:30 -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
str4d 31e5a5188e
Merge pull request #915 from nuttycom/sbs/pre_birthday_test_refactor
Test refactorings in preparation for #907
2023-08-30 00:44:41 +01:00
Kris Nuttycombe 22b6ddd754 Apply suggestions from code review
Co-authored-by: str4d <thestr4d@gmail.com>
2023-08-29 17:02:46 -06:00
Kris Nuttycombe ff8104fa75 zcash_client_sqlite: (testing) Initialize wallets using an `AccountBirthday` struct. 2023-08-28 19:25:52 -06:00
Kris Nuttycombe a238007e14 zcash_client_sqlite: Remove `testing::network` global accessor function. 2023-08-28 17:27:23 -06:00
Kris Nuttycombe 3be55ae964 zcash_client_backend: Add test-only convenience methods for default addresses. 2023-08-28 14:05:17 -06:00
str4d 8c30c6a066
Merge pull request #916 from zcash/sqlite-testing-helper
`zcash_client_sqlite`: Introduce `TestBuilder` and `TestRunner`
2023-08-28 20:43:44 +01:00
Jack Grigg 8af74de931 `zcash_client_sqlite`: Add `TestState::propose_shielding`
Currently unused (causing an expected lint), but will be in an upcoming PR.
2023-08-28 18:58:37 +00:00
Jack Grigg 578eac15df zcash_client_sqlite: Rename `TestRunner` to `TestState` 2023-08-28 18:54:35 +00:00
Jack Grigg 84a5d5ca94 zcash_client_sqlite: Migrate all tests to `TestBuilder` 2023-08-28 16:55:51 +00:00
Jack Grigg ce3e4cd34a zcash_client_sqlite: Introduce `TestBuilder` and `TestRunner`
These provide a standard way to set up tests, and helper methods for
performing common test actions.
2023-08-28 16:55:51 +00:00
Jack Grigg 7ba36c7bd2 zcash_client_sqlite: Move testing helper functions into module 2023-08-25 23:16:37 +00:00
Kris Nuttycombe b3474724a9
Merge pull request #909 from AArnott/AArnott-patch-1
Fix API doc comment on UnifiedSpendingKey
2023-08-24 13:19:05 -06:00
Andrew Arnott 9859066c72
Fix API doc comment on UnifiedSpendingKey
This fixes a simple copy/paste error of the docs from the unified viewing key.
2023-08-24 07:47:30 -06:00
Daira Emma Hopwood b580c42bdc
Merge pull request #903 from nuttycom/sbs/scan_queue_init
zcash_client_sqlite: Initialize the scan queue as part of `init_blocks_table`
2023-08-22 14:30:55 +01:00
Kris Nuttycombe 4d6e236e23
zcash_client_sqlite: minor test documentation improvement.
Co-authored-by: Daira Emma Hopwood <daira@jacaranda.org>
2023-08-21 17:13:45 -06:00
Kris Nuttycombe 61ac79c006 Add debug logging of ignored block range in `init_blocks_table` 2023-08-21 12:26:56 -06:00
Kris Nuttycombe b3be0318c6 zcash_client_sqlite: Initialize the scan queue as part of `init_blocks_table`
Fixes #902
Fixes #898
2023-08-21 09:03:31 -06:00
str4d f61d60bb96
Merge pull request #894 from nuttycom/sbs/select_only_witnessable
zcash_client_sqlite: Only select notes for which witnesses can be constructed.
2023-08-18 01:15:50 +01:00
Kris Nuttycombe 1f8108e8da zcash_client_sqlite: Use constant for SAPLING_SHARD_HEIGHT in v_sapling_shard_unscanned_ranges 2023-08-17 16:20:54 -06:00
Kris Nuttycombe 75ca045786 zcash_client_sqlite: Note selection requires commitment tree positions to be known.
Fixes #895
2023-08-17 16:20:54 -06:00
Kris Nuttycombe 0e7ee0ebd7 zcash_client_sqlite: Ensure that the shard at the chain tip is complete to anchor height.
If the tip shard has any un-scanned range below the anchor height, we
can't compute witnesses for any of our notes.
2023-08-17 16:20:54 -06:00
Kris Nuttycombe 50ea2a5b0f zcash_client_sqlite: Only select notes for which witnesses can be constructed.
This change modifies the implementation of `get_spendable_sapling_notes`
and `select_spendable_sapling_notes` to only return notes at positions
where the associated note commitment tree shard has been fully scanned.
This is slightly more conservative than it needs to be, because
there could be cases where witnesses imported into the tree in the
`shardtree_support` migration cover the complete range of a subtree (and
hence that subtree doesn't need to be re-scanned). However, we can't
detect or depend upon that condition in general without attempting to
create a witness for each note retrieved.

A possible alternative to this approach would be to not bound our query
results on the requested total, and instead attempt to construct a
witness for each note we retrieve, skipping the note if we cannot
construct a witness. However, given that accessing the note commitment
tree can be a costly operation requiring nontrivial deserialization
costs, the more conservative database-oriented approach is perhaps
better.
2023-08-17 16:20:54 -06:00
str4d 104577c108
Merge pull request #896 from nuttycom/chain_tip_target_height
zcash_client_sqlite: Ensure that target and anchor heights are relative to the chain tip.
2023-08-17 22:29:13 +01:00
Kris Nuttycombe dee43854cb zcash_client_sqlite: Ensure that target and anchor heights are relative to the chain tip.
Prior to the scan-before-sync changes, the wallet was able to assume
that the maximum scanned block height at the time of the spend was
within a few blocks of the chain tip. However, under linear scanning
after the spend-before-sync changes this invariant no longer holds,
resulting in a situation where in linear sync conditions the wallet
could attempt to create transactions with already-past expiry heights.

This change separates the notion of "chain tip" from "max scanned
height", relying upon the `scan_queue` table to maintain the wallet's
view of the consensus chain height and using information from the
`blocks` table only in situations where the latest and/or earliest
scanned height is required.

As part of this change, the `WalletRead` interface is also modified to
disambiguate these concepts.
2023-08-16 11:53:24 -06:00
str4d d25f2bd6ab
Merge pull request #893 from zcash/scanning-bugfixes
Scanning bugfixes
2023-08-10 00:16:10 +01:00
Jack Grigg d3fc9670d5 zcash_client_backend: Fix `scan_cached_blocks` panic with genesis block
If `from_height = 0` and `limit > 1`, then the conditional being used to
initialise `continuity_check_metadata` was previously running for every
block, and would therefore panic while processing the block at height 1.
2023-08-09 17:57:00 +00:00
Jack Grigg 44abd3450b Require `BlockSource::with_blocks` fail on non-existent `from_height`
Previously this was not clearly specified, and the implementations in
`zcash_client_sqlite` behaved similarly to when `from_height = None`.

Closes zcash/librustzcash#892.
2023-08-09 17:57:00 +00:00
str4d 81d1928497
Merge pull request #890 from nuttycom/received_note_id_display
Add `Display` impl for `ReceivedNoteId`
2023-08-07 20:06:28 +01:00
Kris Nuttycombe 1c4e63718f Add `Display` impl for `ReceivedNoteId` 2023-08-07 12:24:05 -06:00
str4d f6eef20f62
Merge pull request #888 from nuttycom/feature/tx_output_note_refs
Restrict use of backend-specific note identifiers.
2023-08-07 18:55:11 +01:00
Kris Nuttycombe f602ec125d Apply suggestions from code review
Co-authored-by: str4d <thestr4d@gmail.com>
2023-08-07 11:28:28 -06:00