Previously, `AllowRevealedSenders` would permit linking multiple legacy taddrs. This strengthens the
policy to only allow sending from a single taddr, preventing linking of any addresses. To send from
multiple taddrs (legacy or UA) now requires `AllowLinkingAccountAddresses`.
Previously transparent inputs were under-counted because the `CTxIn`s were created without a
signature. This now adds a dummy signatures so sizes are correct.
Fixes#6658.
Previously, there were no arguments after `memo`, so it could always just be
omitted. Now the `privacyPolicy` is there, so it’s necessary to be able to
explicitly omit the memo.
Using `"F6"` would work in some situations, but while it encodes the “no memo”
case, the internal checks that ensure we don’t try to send a memo to transparent
recipients fail on it. And as we can’t merge to a taddr without specifying
`"AllowRevealedRecipients"`, this prevents merging to taddrs (unless the
deprecated `legacy_privacy` feature is enabled).
This change makes it possible to send `null` as the `memo` argument, which
indicates “no memo” successfully. It does the same for `*_limit` parameters in
`z_mergetoaddress` and `z_shieldcoinbase` (even though those don’t have a
similar failure case), since those parameters also need to be specified when the
`privacyPolicy` is, and it’s consistent with #6599, rather than hardcoding some
particular value.
This also fixes a bug in `WalletTxBuilder` that could inadvertently require
`AllowRevealedAmounts` on a transaction from a shielded pool to itself (via
`NetAmountRecipient`).
These features were deprecated at least 3 minor releases ago. I found
one mistake which was that `z_validateaddress` had not been placed
behind the `addrtype` deprecated feature; this has been fixed.
Associate with each CTxMemPoolEntry all the size/fees of descendant
mempool transactions. Sort mempool by max(feerate of entry, feerate
of descendants). Update statistics on-the-fly as transactions enter
or leave the mempool.
Also add ancestor and descendant limiting, so that transactions can
be rejected if the number or size of unconfirmed ancestors exceeds
a target, or if adding a transaction would cause some other mempool
entry to have too many (or too large) a set of unconfirmed in-
mempool descendants.
(cherry picked from commit bitcoin/bitcoin@5add7a74a6)
Zcash:
- Mempool methods were adapted to our mempool changes.
- Default ancestor and descendant size limits were double to account for
our larger block size.
- The mempool_packages RPC test fee was adapted to account for our
emissions curve (which results in a smaller per-block reward that
needs to be split into smaller shards for sequential transactions.
- Includes some modifications to account for us backporting
bitcoin/bitcoin@f3fe83673e early in
zcash/zcash#5269.
Previously we only required synchronization points where blocks were
sent between nodes; now we need them between action and query operations
on the same node, because wallet notification of mined blocks no longer
occurs in real-time.
The p2p_nu_peer_management and rewind_index RPC tests still start from
Sprout, because they are explicitly (and only) testing network behaviour
across network upgrades.
The mempool_tx_input_limit test is removed because the flag has been
ignored since Sapling activation, and will be removed at some point in
the near future.