Commit Graph

267 Commits

Author SHA1 Message Date
Jack Grigg 270eec2574 CI: Don't test `zcash_client_backend/lightwalletd-tonic` on WASM
Broken until hyperium/tonic#1783 is addressed.
2024-07-11 18:09:49 -07:00
Jack Grigg e5517b61cc zcash_client_backend: Migrate to `tonic 0.12` with `http 1` 2024-07-11 22:23:55 +00:00
Kris Nuttycombe 72d8df8e68 zcash_client_sqlite: Align handling of transparent UTXOs with that of shielded notes.
Co-authored-by: Daira-Emma Hopwood <daira@jacaranda.org>
Co-authored-by: Jack Grigg <jack@electriccoin.co>
2024-06-21 19:13:18 -06:00
Daira-Emma Hopwood 21d573122c `zcash_client_backend::{fixed,standard,zip317}::SingleOutputChangeStrategy`
now implement a different strategy for choosing whether there will be any
change, and its value. The aims are:

* Ensure that it is possible to create fully transparent transactions with
  no change (this will be needed for ZIP 320). The `InsufficientFunds`
  error in this case should have a `required` field that reflects the
  additional amount needed, according to the fee calculated without an
  extra change output.
* Avoid leaking information about note amounts in some cases: an adversary
  that knew the number of external recipients and the sum of their outputs
  was able to learn the sum of the inputs if no change output was present.
* Defend against losing money by using `DustAction::AddDustToFee` with a
  too-high dust threshold.
* Ensure that if a "change memo" is requested, there will always be a
  shielded change output in which to put it. Previously, this would not
  be the case when using `DustAction::AddDustToFee`.

Co-authored-by: Jack Grigg <jack@electriccoin.co>
Co-authored-by: Kris Nuttycombe <kris@nutty.land>
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-19 13:12:17 +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 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
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
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 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
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 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 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 4f7c5bd722 zcash_client_sqlite: Fix `scan_complete` tests. 2024-03-19 16:11:57 -06: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
Kris Nuttycombe ab3e790bfc zcash_client_backend: Rename `AccountKind` to `AccountSource` 2024-03-15 09:28:35 -06: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 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
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
Jack Grigg 7d603b8c59 zcash_client_backend: Add `proto::service::TreeState::to_chain_state` 2024-03-13 12:54:58 +00: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 374ed8cf94 zcash_client_sqlite: Add backend impl for the Orchard note commitment tree 2024-03-11 16:35:01 +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
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
Kris Nuttycombe 376db4684b Fix incorrect zip321 amount parsing. 2024-03-05 21:50:25 -07:00