Daira-Emma Hopwood
17af8e32e8
Refactor `FeeRule::fee_required` to take the sizes of transparent
...
inputs and outputs.
Co-authored-by: Kris Nuttycombe <kris@nutty.land>
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-18 21:05:49 +01:00
Daira-Emma Hopwood
cefbaf59d5
Add `zcash_client_backend::fees::{sapling,orchard}::EmptyBundleView`.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-18 21:03:22 +01:00
Daira-Emma Hopwood
2337f79484
Add `zcash_keys::Address::Tex`.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-18 21:03:22 +01:00
Daira-Emma Hopwood
6c90219817
Prefer the `PoolType::{SAPLING, ORCHARD, TRANSPARENT}` constants to
...
`PoolType::{Shielded(_), Transparent}`.
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-18 21:03:22 +01:00
Daira-Emma Hopwood
c3e532f29b
The return type of `ChangeValue::new` is now optional; it returns `None`
...
if a memo is given for the transparent pool. Use `ChangeValue::shielded`
to avoid this error case when creating a `ChangeValue` known to be for a
shielded pool.
Co-authored-by: Jack Grigg <jack@electriccoin.co>
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-18 21:03:22 +01:00
Daira-Emma Hopwood
3582f84686
Allow `ChangeValue::output_pool` to reference the transparent pool by
...
changing its type from `ShieldedProtocol` to `PoolType`.
Also fix compilation errors when the "orchard" feature is used without
the "transparent-inputs" feature.
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-18 21:03:22 +01:00
Daira-Emma Hopwood
1d9fede906
Cosmetic fixes to changelog.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-18 21:03:22 +01:00
Kris Nuttycombe
87e23081d0
Merge pull request #1421 from zcash/dep-bip32
...
Migrate from `hdwallet` to `bip32`
2024-06-17 17:04:14 -06:00
str4d
03fc64cfd0
Merge pull request #1396 from nuttycom/test/block_spanning_shards
...
`zcash_client_sqlite` Fix error related to commitment tree frontier insertions.
2024-06-17 19:29:44 +01:00
Jack Grigg
f54ee4abde
Migrate from `hdwallet` to `bip32`
...
As part of this, we migrate to `secp256k1 0.27`. This version does not
bump `secp256k1-sys`, so remains compatible with the `libsecp256k1`
revision used in `zcashd`.
The `zcash_primitives::legacy::keys::AccountPrivKey` encoding also
changes to preserve the transparent extended key metadata. Previously
the type was documented as such, but only encoded the private key and
chain code; the new encoding now matches the documentation. As a side
effect, the unstable encoding of `zcash_keys::keys::UnifiedSpendingKey`
also changes.
Closes zcash/librustzcash#1407 .
Closes zcash/librustzcash#1408 .
2024-06-15 00:04:37 +00:00
Kris Nuttycombe
ecea9ca196
zcash_client_sqlite: Fix shardtree error caused by pruning after frontier insertion.
...
Fixes #1398
2024-06-13 18:09:46 -06:00
Kris Nuttycombe
de66c5b154
zcash_client_sqlite: Add test to reproduce incomplete penultimate subtree error.
2024-06-13 18:09:39 -06:00
Jack Grigg
0f4b7463d8
Remove `time` pin now that its MSRV is compatible with ours
2024-06-12 11:20:40 +00:00
Jack Grigg
bffe6a4a10
Bump MSRV to 1.70
2024-06-12 10:58:17 +00:00
str4d
851e20347f
Fix changelogs to reflect actual MSRVs
2024-05-24 15:46:40 +01:00
Daira-Emma Hopwood
aa77be8830
Update dependencies (including to avoid a vulnerability warning for atty), bump MSRV to 1.66,
...
and fix new clippy lints for MSRV 1.66.
* tonic 0.10 -> 0.11
* tonic-build 0.10 -> 0.11
* cargo update
* cargo update -p home@0.5.9 --precise 0.5.5
* cargo update -p prost-build@0.12.4 --precise 0.12.3
* cargo update -p prost-types@0.12.4 --precise 0.12.3
* cargo update -p prost@0.12.4 --precise 0.12.3
* cargo update -p prost-derive@0.12.5 --precise 0.12.3
* cargo update -p half@2.4.1 --precise 2.2.1
(The precise updates avoid a further MSRV bump to 1.70.)
Remaining duplicates are currently unavoidable.
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-05-20 13:35:27 +01:00
jimmycathy
3510384f10
chore: remove repetitive words
...
Signed-off-by: jimmycathy <clonecode@outlook.com>
2024-05-04 20:54:15 +08:00
Kris Nuttycombe
f28aa6b304
`zcash_{keys, client_backend}`: Fix no-default-features build.
2024-04-11 18:00:59 -06:00
Kris Nuttycombe
b60600a4c3
zcash_client_sqlite: Use `ZcashAddress` for persistence of sent note addresses
...
Prior to this change, the recipient of a sent transaction would always
be shown as the protocol-level address, instead of any unified address
intended as the recipient. Now, instead of reencoding the recipient
address, we use the original `ZcashAddress` value from the payment
request.
2024-04-05 16:48:13 -06:00
Kris Nuttycombe
86e1181259
zip321: Make `Payment` fields private.
2024-04-05 16:30:31 -06:00
Kris Nuttycombe
3ea7d84183
zcash_client_backend: Update to use extracted `zip321` crate
2024-04-05 16:25:21 -06:00
Kris Nuttycombe
d982d7826a
zip321: Replace dependencies on `zcash_keys` types with `zcash_address`
2024-04-05 16:10:22 -06:00
Kris Nuttycombe
fdf86ad740
Move `zcash_client_backend::zip321` to the `zip321` crate.
2024-04-03 12:14:20 -06:00
Jack Grigg
24277a6ba4
zcash_client_backend: Implement async wallet synchronization function
...
This implements the necessary state machine for taking a wallet in some
arbitrary synchronization status, and fully scanning (the remainder of)
the chain.
Closes zcash/librustzcash#1169 .
2024-04-02 00:26:08 +00:00
oscar-pepper
25b8404e2d
Add block cache trait ( #1192 )
2024-04-01 21:55:16 +01:00
Kris Nuttycombe
1cb33c8b06
zcash_client_backend release version 0.12.1
2024-03-27 14:58:12 -06:00
Kris Nuttycombe
d431889560
zcash_client_sqlite: Fix incorrect input selection filtering when sending to transparent.
...
The "avoid pool crossing" conditions in not selection were erroneously
not taking into account the need to pay transparent outputs.
2024-03-27 14:58:12 -06:00
Kris Nuttycombe
777adb871d
Release zcash_client_backend version 0.12.0
...
Closes #1079
2024-03-25 14:03:42 -06:00
Kris Nuttycombe
151e6e526e
zcash_client_backend: Track external addresses in inter-account transactions.
...
Previously, if the funding account for a received transaction output was
determined to be an account known to the wallet, the output was recorded
as though it were sent to an internal (change) address of the wallet.
2024-03-25 07:59:21 -06:00
Kris Nuttycombe
7e7dba8020
zcash_client_sqlite: Add `get_funding_accounts` method.
2024-03-25 07:59:20 -06:00
Kris Nuttycombe
874d6b608b
zcash_client_backend: Ensure checkpoint at the end of each block.
...
This fixes an error wherein a note commitment in the last note
commitment position in a block was not being correctly marked as a
checkpoint.
This would occur when a block contained both Sapling and Orchard note
commitments, but the final transaction in the block contained only
either Sapling or Orchard note commitments, but not both.
Fixes #1302
2024-03-24 11:50:12 -06:00
Kris Nuttycombe
5d3ddabe24
zcash_client_sqlite: Add a test to attempt to simulate the checkpoint conflict bug (not failing.)
2024-03-23 08:37:59 -06:00
Kris Nuttycombe
dc4fccf566
zcash_client_sqlite: Modify `TestState` to allow initialization with chain state.
2024-03-20 20:43:49 -06:00
Kris Nuttycombe
5f1d75937b
zcash_client_backend: Treat protobuf default as the empty tree.
...
Fixes #1280
2024-03-19 17:26:45 -06:00
str4d
97651a6d4b
Merge pull request #1289 from nuttycom/sqlite_wallet/branching_chain_test_fixes
...
zcash_client_sqlite: Fix `scan_complete` tests.
2024-03-19 22:47:30 +00:00
Kris Nuttycombe
4f7c5bd722
zcash_client_sqlite: Fix `scan_complete` tests.
2024-03-19 16:11:57 -06:00
Jack Grigg
b189fe7a36
Remove `orchard` feature flag from behind `zcash_unstable` cfg flag
2024-03-19 18:24:39 +00:00
Jack Grigg
3090aff87f
Distinguish seed relevance when no derived accounts are present
...
During wallet migration in particular, the absence of _any_ accounts is
expected, and all seeds should be treated as relevant (because accounts
cannot be added before a wallet is initialized).
2024-03-19 17:53:41 +00:00
Jack Grigg
e6bc21b461
Add `WalletRead::is_seed_relevant_to_any_derived_accounts`
2024-03-19 00:34:28 +00:00
Jack Grigg
703e50ae03
Add `Account::uivk`
...
The blanket `impl Account<A> for (A, Option<UnifiedFullViewingKey>)` is
removed because we cannot know the UIVK for `(A, None)`. We instead
provide a blanket impl for `(A, UnifiedIncomingViewingKey)`. We also
move both of them behind `test-dependencies` because they are only
intended for testing purposes.
2024-03-19 00:34:28 +00:00
Kris Nuttycombe
ab3e790bfc
zcash_client_backend: Rename `AccountKind` to `AccountSource`
2024-03-15 09:28:35 -06:00
Willem Olding
1775f6525b
Add WASM support to `lightwalletd-tonic` feature flag ( #1270 )
...
The transport-specific code is moved behind a new `lightwalletd-tonic-transport` feature flag.
2024-03-15 11:58:13 +00:00
Kris Nuttycombe
46fd6ab0fe
zcash_client_backend: Make `WalletRead::get_transaction` return `Result<Option<Transaction>, _>`
...
This should never have had the behavior of returning an error on a
missing txid in the first place; doing so conflates database corruption
or connectivity errors with the ordinary case where data may not be
available.
2024-03-14 17:38:51 -06:00
Kris Nuttycombe
cc990b60e0
zcash_keys: Remove HdSeedFingerprint as it duplicates `zip32::fingerprint::SeedFingerprint`
2024-03-14 17:09:03 -06:00
Kris Nuttycombe
0bae47b05b
zcash_client_backend: Improve API ergonomics for input selection.
2024-03-13 19:33:06 -06:00
Kris Nuttycombe
22f341888f
zcash_client_backend: Add `SpendableNotes` type and `NoteRetention` trait.
2024-03-13 19:32:16 -06:00
str4d
2e0a3005de
Merge pull request #1268 from nuttycom/sqlite_wallet/cross_pool_note_selection
...
zcash_client_backend: Fix note selection & add more multi-pool tests.
2024-03-14 01:12:42 +00:00
Kris Nuttycombe
a81e7ff306
zcash_client_backend: Fix note selection & add more cross-pool tests.
2024-03-13 18:44:36 -06:00
Jack Grigg
bbb7f36e55
zcash_client_backend: Add `WalletRead::get_account`
2024-03-13 21:00:59 +00:00
Jack Grigg
64aabdc54a
Rename `WalletRead::get_seed_account` to `WalletRead::get_derived_account`
2024-03-13 21:00:59 +00:00
Jack Grigg
5f3d5e9f4a
zcash_client_sqlite: Use `wallet::Account` for `WalletRead::Account`
2024-03-13 21:00:59 +00:00
Jack Grigg
65093487c3
zcash_client_backend: Expose the kind of an `Account`
2024-03-13 21:00:59 +00:00
Kris Nuttycombe
dd63a6e3dd
zcash_client_backend: Remove unnecessary `ReceivedNote::traverse_opt`
2024-03-13 14:19:26 -06:00
Kris Nuttycombe
b2597aa952
zcash_client_backend: Add a test for ZIP 317 cross-pool payments.
2024-03-13 13:54:53 -06:00
Jack Grigg
634ebf51ef
Reorder `WalletRead` and `WalletWrite` trait methods for clarity
2024-03-13 16:00:32 +00:00
Jack Grigg
7d603b8c59
zcash_client_backend: Add `proto::service::TreeState::to_chain_state`
2024-03-13 12:54:58 +00:00
Kris Nuttycombe
a0460886f4
Fix stray clippy complaint.
2024-03-12 18:27:02 -06:00
Kris Nuttycombe
2ba89a6d16
zcash_client_backend: Fix `scan_cached_blocks` example doc compilation errors.
2024-03-12 18:27:02 -06:00
Kris Nuttycombe
f58263e211
zcash_client_backend: Require the tree state for the start of each scanned range.
...
In order to support constructing the anchor for multiple pools with a
common anchor height, we must be able to checkpoint each note commitment
tree (and consequently compute the root) at that height. Since we may
not have the information in the tree needed to do so, we require that it
be provided.
As a bonus, this change makes it possible to improve the UX around
spendability, because we will no longer require subtree ranges below
received notes to be fully scanned; the inserted frontier provides
sufficient information to make them spendable.
2024-03-12 18:14:11 -06:00
Kris Nuttycombe
0c5a365c60
zcash_client_sqlite: Update to make use of `orchard::note::Rho`
2024-03-12 17:28:10 -06:00
Kris Nuttycombe
33e943d14a
zcash_client_backend: Add `WalletRead::get_seed_account`
2024-03-12 11:21:04 -06:00
Kris Nuttycombe
5e810d3689
Merge pull request #1258 from nuttycom/sqlite_wallet/fuzzy_key_matching
...
Return partial matches when using `WalletRead::get_account_for_ufvk`.
2024-03-12 11:12:34 -06:00
Kris Nuttycombe
09181f458c
zcash_client_sqlite: Return a backend-specific `Account` type from get_account_by_ufvk.
2024-03-12 08:59:53 -06:00
Jack Grigg
5a6057b8fb
zcash_client_backend: Detect Orchard dust in `zip317::SingleOutputChangeStrategy`
2024-03-11 18:58:09 +00:00
Kris Nuttycombe
1028894324
zcash_client_sqlite: Minor refactoring for improved debuggability & future Sapling flagging.
2024-03-11 18:58:09 +00:00
Kris Nuttycombe
8dfa836a03
zcash_client_sqlite: Use correct offsets for Orchard commitment positions.
2024-03-11 17:42:23 +00:00
Kris Nuttycombe
374ed8cf94
zcash_client_sqlite: Add backend impl for the Orchard note commitment tree
2024-03-11 16:35:01 +00:00
Kris Nuttycombe
de58b5a5b1
zcash_client_sqlite: Add a failing test of cross-pool transfer
2024-03-11 11:36:35 +00:00
Jack Grigg
c4abcba343
zcash_client_backend: Add Orchard change output support to proposals
2024-03-10 21:47:40 +00:00
Kris Nuttycombe
19868af84a
Merge pull request #1246 from zcash/zcb-0.11-zcs-0.9-doc-fixes
...
`zcash_client_backend 0.11.1`, `zcash_client_sqlite 0.9.1` with doc fixes
2024-03-09 08:19:41 -07:00
Jack Grigg
7f38b79c3c
zcash_client_backend 0.11.1
2024-03-09 11:38:33 +00:00
Jack Grigg
075a155a29
Remove `orchard` feature flag from docs.rs builds while not public
2024-03-09 11:37:25 +00:00
Oscar Pepper
a63cf37c7b
zcash_client_backend: Fixed cargo doc build failure when transparent-inputs feature is not specified
...
(cherry picked from commit ab701118f3
)
2024-03-09 11:37:25 +00:00
Kris Nuttycombe
e24d93ccfd
Merge pull request #1228 from Oscar-Pepper/fix_cargo_doc_build_failure
...
Fixed cargo doc build failure
2024-03-08 15:44:09 -07:00
Kris Nuttycombe
78e4916899
zcash_client_backend: Generalize `DecryptedOutput` to support Orchard
2024-03-08 13:48:30 -07:00
Kris Nuttycombe
4c5ce32dee
zcash_client_backend: Use `NonNegativeAmount` for `select_spendable_notes`
2024-03-08 13:48:30 -07:00
Kris Nuttycombe
8f4de9b235
Merge pull request #1235 from zcash/diverse_accounts
...
zcash_client_sqlite: Rework accounts to support imported viewing keys
2024-03-08 13:39:08 -07:00
Andrew Arnott
0c80893ce0
zcash_client_sqlite: Rework accounts to support imported viewing keys
2024-03-08 18:55:18 +00:00
Kris Nuttycombe
4532520670
zcash_client_backend: Add Orchard frontier to `AccountBirthday`
2024-03-07 14:45:23 -07:00
Oscar Pepper
ab701118f3
zcash_client_backend: Fixed cargo doc build failure when transparent-inputs feature is not specified
2024-03-07 11:33:10 +00:00
Kris Nuttycombe
376db4684b
Fix incorrect zip321 amount parsing.
2024-03-05 21:50:25 -07:00
Kris Nuttycombe
6b4942f8eb
Add failing test for incorrect zip321 amount parsing.
2024-03-05 21:48:05 -07:00
Kris Nuttycombe
eaabc0f514
Apply suggestions from code review
...
Co-authored-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-03-05 20:03:46 -07:00
Kris Nuttycombe
5675a76f0d
zcash_protocol: Use `BalanceError` instead of `()` for monetary range violations.
2024-03-05 13:59:26 -07:00
Kris Nuttycombe
a823ed776f
Expose address generation errors when constructing default addresses
2024-03-05 13:36:15 -07:00
Kris Nuttycombe
4b18426fcd
zcash_address: Use `zcash_protocol::consensus::NetworkType`
...
This inverts the dependency relationship between `zcash_protocol` and
`zcash_address`, permitting the network constants (primarily the HRPs)
defined in `zcash_protocol` to be used directly in `zcash_address`
instead of being duplicated.
2024-03-05 13:36:15 -07:00
Kris Nuttycombe
64454100c5
zcash_client_backend: Move the `ShieldedProtocol` and `PoolType` types to `zcash_protocol`
2024-03-05 09:46:03 -07:00
Kris Nuttycombe
a35ccfc10b
Fix broken intra-doc links after `zcash_protocol` crate extraction.
2024-03-05 09:45:24 -07:00
Kris Nuttycombe
eb3c7b479e
zcash_protocol: Modify `Zatoshis` to directly wrap a u64
2024-03-05 09:45:24 -07:00
Kris Nuttycombe
5e4d9abbce
Move `Amount` and `NonNegativeAmount` types to the `zcash_protocol` crate.
2024-03-05 09:45:24 -07:00
Kris Nuttycombe
bacfe3cb9d
Move `zcash_primitives::{consensus, constants}` to the `zcash_protocol` crate
2024-03-05 09:45:24 -07:00
Kris Nuttycombe
0d430ba62c
Apply documentation suggestions from code review.
...
Co-authored-by: str4d <thestr4d@gmail.com>
2024-03-04 13:32:26 -07:00
Kris Nuttycombe
e4c0b0e63f
zcash_client_backend: Add `WalletRead::validate_seed`
...
This adds a mechanism that allows a caller to verify that a given seed
generates the viewing key that is stored in the wallet for a specified
account.
Fixes #1189
2024-03-04 10:59:56 -07:00
Jack Grigg
dbdc88e4d7
Revert "Hide unstable `orchard` feature flag in rustdoc"
...
Now that the release commits are created, we can unhide this ahead of
the subsequent Orchard-supporting releases.
This reverts commit zcash/librustzcash@6161709441 .
2024-03-01 01:17:15 +00:00
Jack Grigg
dfb6c65edd
zcash_client_backend 0.11.0
...
Closes zcash/librustzcash#962 .
2024-03-01 01:16:04 +00:00
Jack Grigg
6161709441
Hide unstable `orchard` feature flag in rustdoc
...
It is not part of the public API for `zcash_client_backend 0.11.0` and
`zcash_client_sqlite 0.9.0`.
2024-03-01 01:12:07 +00:00
Kris Nuttycombe
e44ddee8ad
zcash_client_backend: Add documentation for the `data_api` module.
...
Fixes #1209
2024-03-01 00:47:15 +00:00
Kris Nuttycombe
a4b951d193
Apply suggestions from code review
...
Co-authored-by: str4d <thestr4d@gmail.com>
2024-02-29 15:19:07 -07:00
Kris Nuttycombe
27f6207a7c
zcash_client_backend: Pass nullifiers separately from scanning keys.
2024-02-29 12:06:22 -07:00
Kris Nuttycombe
a63d5e51d1
zcash_client_backend: Return decoding errors from `BatchRunners::add_block`
2024-02-29 12:04:55 -07:00