Daira-Emma Hopwood
7a05b44df9
Make mutable inputs to closures in `create_proposed_transaction` explicit.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-27 01:45:45 +01:00
Daira-Emma Hopwood
b77813933a
Refactor ephemeral output-related parameters to balance calculation.
...
This now only supports a single ephemeral input and/or output when
constructing a proposal (multiple ephemeral outputs are still supported
when creating transactions).
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-27 01:45:45 +01:00
Daira-Emma Hopwood
ffb2ddf594
`zcash_client_backend::fees::ChangeValue` is now an enum, allowing only
...
valid combinations of output pool, memo presence, and ephemerality.
Co-authored-by: Kris Nuttycombe <kris@nutty.land>
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-27 01:45:45 +01:00
Daira-Emma Hopwood
c926e7ce0a
Filter ephemeral transparent `ChangeValue`s by `is_ephemeral()` as well as
...
pool type.
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-27 01:43:09 +01:00
Daira-Emma Hopwood
0735390546
Rename `amount` to `transfer_amount` in `send_multi_step_proposed_transfer`.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-27 01:43:09 +01:00
Daira-Emma Hopwood
bd6c9f3599
Apply documentation suggestions from code review.
...
Co-authored-by: Kris Nuttycombe <kris@nutty.land>
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-27 01:43:09 +01:00
Daira-Emma Hopwood
7d8a96f827
Don't cache metadata between steps; it's not an important optimization.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-27 01:43:09 +01:00
Daira-Emma Hopwood
7fb355739e
Implement `WalletRead::get_transparent_address_metadata` for
...
`zcash_client_sqlite` using direct database queries.
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-27 01:43:09 +01:00
Daira-Emma Hopwood
5a90fffed4
Factor out the conversion of the `diversifier_index_be` field in the
...
`addresses` table to a `NonHardenedChildIndex`.
(This moves where a `diversifier_index_be` field of the wrong length would
be detected and so is not quite a no-op, but that shouldn't matter.)
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-27 01:43:09 +01:00
Daira-Emma Hopwood
4f43a01f83
Refactor transparent address metadata lookups. This is correct as-is but
...
will be simplified and made more efficient in subsequent commmits.
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-27 01:43:09 +01:00
Daira-Emma Hopwood
6b465b702e
Document the mapping functions on `zcash_client_backend::wallet::Recipient`.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-25 08:40:08 +01:00
Daira-Emma Hopwood
745054ba69
`find_account_for_transparent_output` now searches unreserved ephemeral
...
addresses within the gap limit. This should make recording TXOs found at
these addresses via `WalletWrite::put_received_transparent_utxo` work
correctly.
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-25 08:40:08 +01:00
Daira-Emma Hopwood
914acb57ce
Move most remaining code for wallet support of ephemeral addresses into
...
`zcash_client_sqlite::wallet::transparent::ephemeral`.
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-25 08:40:08 +01:00
Daira-Emma Hopwood
e164b59329
Move most ephemeral address index handling into helper functions in
...
`zcash_client_sqlite::wallet::transparent::ephemeral`. Also report the
account id and index for `SqliteClientError::ReachedGapLimit`.
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-25 08:40:08 +01:00
Daira-Emma Hopwood
25f07da47d
Add a constraint on the range of `ephemeral_addresses(address_index)`.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-25 08:40:08 +01:00
Daira-Emma Hopwood
994f6ff387
Change type of `n` in `reserve_next_n_ephemeral_addresses`.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-25 08:40:08 +01:00
Daira-Emma Hopwood
637ae925da
Add a migration test for the `ephemeral_addresses` migration.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-25 08:40:08 +01:00
Daira-Emma Hopwood
0f49daed5f
`mark_ephemeral_address_as_mined` now prefers setting `mined_in_tx` to
...
the transaction mined at an earlier height, out of the newly observed
transaction and any already referenced one. This slightly reduces the
chance of unnecessarily reaching the gap limit too early in some corner
cases.
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-25 08:40:08 +01:00
Daira-Emma Hopwood
2f521d7873
If a change memo is supplied, it should not be used in the second step
...
of a ZIP 320 proposal.
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-25 08:40:08 +01:00
Daira-Emma Hopwood
c6520cf6a6
Change the protobuf schema to explicitly specify whether a `ChangeValue`
...
is ephemeral.
This also fixes `try_into_standard_proposal` to allow decoding from the
protobuf representation into a proposal that uses references to prior
ephemeral transparent outputs, provided that the "transparent-inputs"
feature is enabled.
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-25 08:40:08 +01:00
Daira-Emma Hopwood
eb8846162c
Address review comment: `EphemeralIvk` should not implement `IncomingViewingKey`.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-25 08:40:08 +01:00
Daira-Emma Hopwood
549fe0b652
In `reserve_next_n_ephemeral_addresses`, exclude addresses observed in
...
unmined transactions from consideration when calculating the end of the
gap.
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-25 08:40:08 +01:00
Daira-Emma Hopwood
0f3de63ae1
Apply documentation suggestions from code review.
...
Co-authored-by: str4d <thestr4d@gmail.com>
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-25 08:40:08 +01:00
Daira-Emma Hopwood
2fae4bb244
ZIP 320 implementation.
...
Co-authored-by: Kris Nuttycombe <kris@nutty.land>
Co-authored-by: Jack Grigg <str4d@electriccoin.co>
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-25 08:40:08 +01:00
Kris Nuttycombe
5bd911f63b
Merge pull request #1402 from nuttycom/transparent_txos_migration
...
zcash_client_sqlite: Align handling of transparent UTXOs with that of shielded notes.
2024-06-24 20:34:44 -06:00
Kris Nuttycombe
9716617b55
Apply suggestions from code review
...
Co-authored-by: Jack Grigg <thestr4d@gmail.com>
Co-authored-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-24 14:50:29 -06:00
Kris Nuttycombe
10258b8443
zcash_client_sqlite: Address comments from code review.
2024-06-21 19:13:18 -06: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
Kris Nuttycombe
d92bf27bfc
zcash_client_sqlite: Move transparent-inputs wallet methods into the `wallet::transparent` module.
2024-06-21 19:13:17 -06:00
str4d
26c6b82e9b
Merge pull request #1419 from zcash/dependabot/github_actions/codecov/codecov-action-4.5.0
...
build(deps): bump codecov/codecov-action from 4.3.0 to 4.5.0
2024-06-20 21:23:03 +01:00
str4d
5e4c4a03e5
Merge pull request #1433 from nuttycom/fix_migration_pragmas
...
zcash_client_sqlite: Fix handling of PRAGMA directives.
2024-06-20 00:56:02 +01:00
Andrew Arnott
b075636e86
Add several tests
2024-06-19 17:41:45 -06:00
Andrew Arnott
d27bf4fc12
Fix importing of UFVKs with fewer keys than possible
2024-06-19 17:41:37 -06:00
Kris Nuttycombe
1110f5d8fb
Apply suggestions from code review
...
Co-authored-by: str4d <thestr4d@gmail.com>
2024-06-19 16:50:20 -06:00
Kris Nuttycombe
a452cf9669
zcash_client_sqlite: Fix handling of PRAGMA directives.
...
The `foreign_keys` pragma has no effect when used within a transaction,
so it should only be set at the top level. The `legacy_alter_table`
pragma should only be used in cases where its effect is explicitly
intended.
2024-06-19 15:16:18 -06:00
str4d
de352218b1
Merge pull request #1432 from daira/update-wallet-pool-tests
...
Update tests in testing/pool.rs to use ZIP 317 fees
2024-06-19 21:44:07 +01:00
Daira-Emma Hopwood
f0cf40543a
Update tests in testing/pool.rs to use ZIP 317 fees.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-19 16:38:12 +01:00
str4d
4b2a942100
Merge pull request #1430 from daira/fee-semantic-change
...
Improvements to the strategy implemented by `{fixed,standard,zip317}::SingleOutputChangeStrategy`
2024-06-19 14:04:26 +01: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
Kris Nuttycombe
06c089535a
Merge pull request #1423 from daira/pre-zip-320-refactoring
...
Cleanups, refactoring, and placeholder for TEX addresses
2024-06-18 14:44:37 -06:00
Daira-Emma Hopwood
0b7f60d544
Refactoring of change calculation.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-18 21:24:33 +01:00
Daira-Emma Hopwood
4f935a7fa3
Define an error type alias for brevity.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-18 21:24:33 +01:00
Daira-Emma Hopwood
dcf0187e52
Fix a typo in an error message.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-18 21:24:33 +01:00
Daira-Emma Hopwood
41c30ef44d
"child index" -> "address index" where applicable.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-18 21:24:33 +01:00
Daira-Emma Hopwood
9881e811ea
Miscellaneous documentation improvements.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-18 21:24:33 +01:00
Daira-Emma Hopwood
c9c7fa3b79
Use a simpler way of ascribing a type to an empty slice.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-18 21:06:42 +01:00
Daira-Emma Hopwood
6f4a3b107e
Address a review comment concerning `Vector::serialized_size`.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-18 21:06:42 +01:00
Daira-Emma Hopwood
9881861228
Add `zcash_encoding::{CompactSize, Vector}::serialized_size` and
...
`zcash_primitives::legacy::Script::serialized_size`. Use the latter in
`zcash_primitives::transaction::fees::transparent::OutputView::serialized_size`.
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-18 21:06:39 +01:00
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
6d35583a4b
Add `OutPoint::fake()` helper.
...
Signed-off-by: Daira-Emma Hopwood <daira@jacaranda.org>
2024-06-18 21:03:22 +01:00