sparrowwallet / sparrow

Desktop Bitcoin Wallet focused on security and privacy. Free and open source.
https://sparrowwallet.com/
Apache License 2.0
1.32k stars 188 forks source link

Allow Stonewall(x2) when spending to non bech32 address #1177

Open checkuon opened 10 months ago

checkuon commented 10 months ago

This is possible with Samourai, and while the true spend is indeed easily identifiable there are still benefits to making a Stonewall(x2) spend here:

  1. the common input ownership heuristic is still broken
  2. the non-decoy change outputs still can still be send to 2 different people, impossible to tell
craigraw commented 10 months ago

The way Sparrow presents StonewallX2 though is an upgrade path from Stonewall. The UX of disallowing a Stonewall but allowing a StonewallX2 feels like it may be confusing.

the non-decoy change outputs still can still be send to 2 different people, impossible to tell

They are always sent to 2 different people in a StonewallX2? Not sure I follow.

checkuon commented 9 months ago

Apologies I was not clear in my explanation. I meant allow both stonewall and stonewallx2 transactions when spending to a non bech32 address.

Despite the decoy change output being obvious when not sending to a bech32 address, there is still a privacy benefit allow stonewall and stonewallx2 since an observer does not know if it is a 2 person coinjoin or a fake 2 person coinjoin, therefore:

  1. The inputs might be from 2 different people. The common input ownership heuristic is broken.
  2. The non decoy change outputs might go to 2 different people.

EDIT: Since Sparrow does not have like-type change output functionality (for obvious UX and UI reasons) like Samourai does, some users who have the same wallet loaded in both Samourai and Sparrow disable that option in Samourai so that their wallet balance is exactly the same in both wallets. Samourai Wallet allows for stonewall and stonewallx2 spends to non bech32 addresses, even if the like-type change output option is disabled. I prefer spending from Sparrow, but if I'm paying to a non bech32 address I'm forced to use Samourai now if I want to do a stonewall or stonewallx2 spend.