Commit Graph

17586 Commits

Author SHA1 Message Date
Daira Emma Hopwood 7c7e8645bc Change ZIP 401 mempool limiting to use constants decided in zcash/zips#565.
fixes #6518

In a ZIP sync meeting we decided that:

* The minimum cost should be changed to 10000, in order to avoid
  penalizing Orchard-using transactions too much relative to other
  transactions.
* `low_fee_penalty` should be changed to 40000. This preserves the
  property that a transaction paying less than the ZIP 317 conventional
  fee is deprioritized relative to a min-cost, conventional-fee
  transaction by a factor of 5, as in the original design.
* The recommended default for `mempooltxcostlimit` should remain at
  80000000. Rationale: 80000000 was chosen so that the worst-case size
  of the mempool would be equal to the worst-case size of 40 blocks,
  which is the current default transaction expiry delta. That reasoning
  still holds even with the above changes.
* `eviction_memory_entries` remains at 40000. It could have been lowered
  given that there will now be at most 80000000/10000 = 8000 transactions
  "in-flight", but it doesn't need to be because the rationale that
  "40000 [RecentlyEvicted queue] entries can be stored in ~1.6 MB,
  which is small compared to other node memory usage" still holds.

Signed-off-by: Daira Emma Hopwood <daira@jacaranda.org>
2023-04-16 23:04:57 +01:00
Daira Emma Hopwood 31c0dcf790 Change ZIP 401 mempool limiting to use conventional fee.
Signed-off-by: Daira Emma Hopwood <daira@jacaranda.org>
2023-04-16 11:41:40 +01:00
Kris Nuttycombe 0a901b06eb
Merge pull request #6559 from sellout/conventional-fee-sentinel
Use null as the ZIP 317 fee sentinel instead of -1
2023-04-15 22:24:09 -06:00
Kris Nuttycombe 0679ee64b9
Merge pull request #6562 from sellout/broken-cli-help
Fix zcash-cli crash when printing help message
2023-04-15 22:09:26 -06:00
Greg Pfeil 7770d9d647
Add z_sendmany RPC examples with fee field 2023-04-15 16:21:50 -06:00
Greg Pfeil 2e80bd74cf
Use null as the ZIP 317 fee sentinel instead of -1
Fixes #6556
2023-04-15 16:12:42 -06:00
Greg Pfeil 14c11c385a
Fix zcash-cli crash when printing help message
When a `zcash-cli` command fails, it attempts to print the help message for the command. However,
making the `help` call can also fail, and there was a bug in this check, so that we tried to display
the help message when the `help` call failed, and tried to display the error when the `help` call
succeeded – both leading to an assertion failure.

This also makes some minor changes to the output formatting.

Fixes #6561
2023-04-15 16:07:33 -06:00
str4d 7df187d905
Merge pull request #6558 from str4d/zcash_primitives-0.11
Use published `zcash_primitives 0.11` and `zcash_proofs 0.11`
2023-04-15 11:17:31 +01:00
Jack Grigg 716720775e Use published `zcash_primitives 0.11` and `zcash_proofs 0.11`
Closes zcash/zcash#6462.
2023-04-15 01:51:29 +00:00
Kris Nuttycombe 6ad60e7340
Merge pull request #6524 from sellout/zip317-wallet-support
Support ZIP 317 fees in the zcashd wallet
2023-04-14 14:14:11 -06:00
Greg Pfeil d78cee9680
Address more ZIP 317 fee feedback 2023-04-14 12:58:28 -06:00
Daira Hopwood 6ae7c532ce
Change spelling of prioritisation in an error message
For consistency with the `prioritisetransaction` RPC method.
2023-04-14 19:49:58 +01:00
Kris Nuttycombe 6854c25415
Merge pull request #5993 from str4d/5716-cxx-ed25519
rust: Migrate Ed25519 FFI to `cxx`
2023-04-14 09:37:30 -06:00
str4d c37569c6da
Merge pull request #6551 from str4d/update-deps-5.5.0
Update dependencies one more time for 5.5.0
2023-04-14 07:56:39 +01:00
Greg Pfeil 0b9b5c8dc1
Address review feedback for ZIP 317 fees in wallet 2023-04-13 19:20:10 -06:00
Greg Pfeil c54c4ee987
Adjust wallet absurd fee check for ZIP 317
It now happens async (in `PrepareTransaction`) and ensures that the fee doesn’t
exceed the maximum useful value for a transaction.
2023-04-13 19:16:09 -06:00
Jack Grigg 5e353a9fdb cargo update 2023-04-13 21:02:52 +00:00
Kris Nuttycombe 0b9126a846
Merge pull request #6448 from sellout/zcash-cli-conversion
Improve zcash-cli argument handling
2023-04-13 14:37:18 -06:00
Greg Pfeil 5a7c36c868
Rename Arg* to Param
Some of these are newly-introduced names in this PR, others are ones that I had
renamed from param -> arg in an earlier commit.

Also restores `strMethod` where it had been changed to `method`.
2023-04-13 13:28:28 -06:00
Greg Pfeil 2596b4920b
Fix edge case revealed by #6409
Without `AllowRevealedRecipients`, we can’t send transparent change, but previously we asserted if
we couldn’t get a transparent change address. Now it returns a new `TransparentChangeNotAllowed`
failure, which is just a more specific `TransparentRecipientNotAllowed` to avoid confusion when
there are no explicit unshielded recipients.
2023-04-13 12:47:52 -06:00
Jack Grigg 1f8887e0b6 qa: Postpone dependencies we aren't updating 2023-04-13 17:01:03 +00:00
Jack Grigg b3332c6273 depends: `cxx 1.0.94` 2023-04-13 17:01:03 +00:00
Jack Grigg b1de4909e8 depends: `native_zstd 1.5.5` 2023-04-13 16:47:44 +00:00
Jack Grigg 90b4366824 depends: Rust 1.68.2 2023-04-13 16:43:52 +00:00
Jack Grigg 93dddd2104 depends: CMake 3.26.3 2023-04-13 16:41:19 +00:00
Jack Grigg 30f258e2a6 qa: Fix update checker to handle `native_clang` version format 2023-04-13 16:32:10 +00:00
Kris Nuttycombe 504c63089f
Merge pull request #6548 from str4d/6462-orchard-0.4
Migrate to published `orchard 0.4`
2023-04-12 16:33:00 -06:00
Jack Grigg 002ed29c72 Migrate to published `orchard 0.4`
Part of zcash/zcash#6462.
2023-04-12 21:26:37 +00:00
Kris Nuttycombe 6f59cc9d10
Merge pull request #6545 from sellout/eliminate-ZTXOSelector-cycles
Eliminate LegacyCompat–ZTXOSelector cycle
2023-04-12 14:47:28 -06:00
str4d 6274da265d
Merge pull request #6547 from str4d/fix-cargo-vet
Fix `cargo vet`
2023-04-12 21:38:30 +01:00
Greg Pfeil 0fca843a5b
Simplify some vector initialization
Also simplify some calls to use `tl::make_unexpected`.
2023-04-12 14:20:37 -06:00
Jack Grigg c468437e31 More crate audits 2023-04-12 19:24:23 +00:00
Greg Pfeil 8d6dabd46a
Use examine instead of std::visit 2023-04-12 12:11:49 -06:00
Jack Grigg ad51f74d6e cargo-vet: Switch to Google's aggregated audits 2023-04-12 18:08:37 +00:00
Jack Grigg 878037af6a cargo-vet: Regenerate imports 2023-04-12 18:07:00 +00:00
Jack Grigg 279c82b093 Tell `cargo-vet` to ignore patched dependencies
The book page on Rust is updated to describe how to patch dependencies,
so `cargo-vet` can be kept passing while patches are present.
2023-04-12 18:04:29 +00:00
Greg Pfeil 2e0eb32892
Remove unnecessary explicit privacy policy
This was added in c1dbe12d77 as an inadvertent
workaround for the bug fixed by the commit before this one.
2023-04-12 11:43:26 -06:00
Greg Pfeil 1c00591699
Fix accidental reversion of #6409
Rearranging some code caused a partial reversion.
2023-04-12 10:32:30 -06:00
Greg Pfeil 2ab17586d6
Better messages on client-side zcash-cli errors
The other changes in this PR push more errors to the client side, where error messages have been
minimal. Also if a request made it to the server _then_ errored, it would return the help text, but
not specific failure information.

Now, client-side errors make a help RPC call for the method, resulting in a message with both the
specific failure plus the help text, whereas previously we only ever received one or the other.
2023-04-12 10:11:56 -06:00
Greg Pfeil 2435b974ee
Enrich zcash-cli arg conversion
Instead of storing the indices of args to convert from string, store two
`vector<bool>` (per operation), the first containing an entry for each required
parameter (`true` if we should convert it), and the second containing an entry
for each optional parameter.

This allows us to check a few more things on the client side:
- does the operation exist
- have enough arguments been passed
- have too many arguments been passed

This is ostensibly a fix for `zcash-cli` to be able to use `asOfHeight` where
available, but it also caught a few bugs in the old implementation:
- `submitblock` didn’t convert its optional (but ignored) second arg;
- `z_getpaymentdisclosure` docs claimed all the args were strings, but two are
  actually ints;`
- `listreceivedbyaddress` didn’t convert the optional `includeImmatureCodebase`;
- `listsinceblock` didn’t convert the optional `includeRemoved` and
  `includeChange`;`
- `gettransaction` didn’t convert `verbose`;
- `listunspent` didn’t convert `includeUnsafe` or `queryOptions`;
- `z_getbalanceforviewingkey` didn’t convert minconf; and
- a minor non-bug – `z_getbalanceforaddress` had a handler even though the
  operation has been removed.

`getblockdeltas` also incorrectly tries to convert its required string argument,
but correcting that would be a breaking API change. Instead, it is deferred to

Fixes #6429.
2023-04-12 10:11:56 -06:00
Greg Pfeil d1ba9c423e
Simplify client.cpp
There was a lot of indirection to build a `set<pair<string, int>>` that should
have been a `map<string, set<int>>` from a `[pair<string, int>]`, when it could
just be initialized directly.
2023-04-12 10:11:56 -06:00
Greg Pfeil c9ffa6e8ae
Eliminate LegacyCompat–ZTXOSelector cycle
This now determines the meaning of “LegacyCompat” in advance, then always has a
known `TransactionStrategy` when we create the `ZTXOSelector`. With the addition
of `TransparentCoinbasePolicy`, there were two different ways that the selector
depended on the strategy, so it became more complicated to manage the cycle. And
the coinbase policy was overly conservative when there were no transparent
recipients or UAs in the tx. So this resolves that as well.

Fixes #6541.
2023-04-12 10:01:39 -06:00
Greg Pfeil f7a27e8089
Revert "Add `AllowRevealedSenders` to fix `mempool_nu_activation.py`"
This reverts commit 6f5360fbd8.
2023-04-12 09:22:19 -06:00
Greg Pfeil c6001268c5
Address review feedback re: ZIP 317 in wallet 2023-04-11 13:21:48 -06:00
Jack Grigg b1dc94249c rust: Migrate Ed25519 FFI to `cxx` 2023-04-11 16:36:26 +00:00
str4d 035e21a610
Merge pull request #6536 from str4d/6397-cxx-orchard-bundle
Use `cxx` bridge for all Orchard bundle inspection and validation
2023-04-11 17:33:23 +01:00
str4d 6ca34c2f0c
Merge pull request #6538 from Anish-M-code/master
use SOURCES_PATH instead of local git DEPENDS_SOURCES_DIR
2023-04-10 15:51:52 +01:00
Kris Nuttycombe df77acb218
Merge pull request #6535 from str4d/6534-tolerate-split-llvm-versions
build: Tolerate split LLVM versions
2023-04-10 07:24:58 -06:00
Greg Pfeil dac6c014d4
Correct change handling for ZIP 317 fees 2023-04-10 00:23:22 -06:00
Greg Pfeil fc6eca86e2
Support ZIP 317 fees in the zcashd wallet
- still support explicit fixed fees everywhere – if a caller provides a fee, we
  don’t adjust it
- treat negative fees as signifier for use of ZIP 317 fees when a fee needs to
  be provided because of additional positional arguments
2023-04-10 00:20:29 -06:00