dash/doc/release-notes-13756.md
MeshCollider ccfe4b76c6 Merge #16239: wallet/rpc: follow-up clean-up/fixes to avoid_reuse
71d0344cf25d3aaf60112c5248198c444bc98105 docs: release note wording (Karl-Johan Alm)
3d2ff379131a01e4e9f9648b150e806104a23795 wallet/rpc: use static help text (Karl-Johan Alm)
53c3c1ea9e20f881c843a9219e48cec202e962f8 wallet/rpc/getbalances: add entry for 'mine.used' balance in results (Karl-Johan Alm)

Pull request description:

  This addresses a few remaining issues pointed out in #13756:

  * First commit addresses https://github.com/bitcoin/bitcoin/pull/13756#discussion_r284907468
  * Second commit addresses https://github.com/bitcoin/bitcoin/pull/13756#discussion_r294868973

  Ping jnewbery and achow101 as they pointed out these issues.

ACKs for commit 71d034:
  jnewbery:
    ACK 71d0344cf25d3aaf60112c5248198c444bc98105
  meshcollider:
    re-utACK 71d0344cf2

Tree-SHA512: 5e28822af0574ad07dbbed21aa2fe7866bf5770b4c0a1c150ad0da8af3152bcfb7170330a7497fa500326c594740ecf63733cf58325821e2811d7b911d5783a0
2022-10-17 15:41:14 -05:00

1.3 KiB

Coin selection

Reuse Avoidance

A new wallet flag avoid_reuse has been added (default off). When enabled, a wallet will distinguish between used and unused addresses, and default to not use the former in coin selection.

Rescanning the blockchain is required, to correctly mark previously used destinations.

Together with "avoid partial spends" (present as of Bitcoin v0.17), this addresses a serious privacy issue where a malicious user can track spends by peppering a previously paid to address with near-dust outputs, which would then be inadvertently included in future payments.

New RPCs

  • A new setwalletflag RPC sets/unsets flags for an existing wallet.

Updated RPCs

Several RPCs have been updated to include an "avoid_reuse" flag, used to control whether already used addresses should be left out or included in the operation. These include:

  • createwallet
  • getbalance
  • getbalances
  • sendtoaddress

In addition, sendtoaddress has been changed to avoid partial spends when avoid_reuse is enabled (if not already enabled via the -avoidpartialspends command line flag), as it would otherwise risk using up the "wrong" UTXO for an address reuse case.

The listunspent RPC has also been updated to now include a "reused" bool, for nodes with "avoid_reuse" enabled.