sparrowwallet / sparrow

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

Feature Request: Ricochet #335

Open 6102bitcoin opened 2 years ago

6102bitcoin commented 2 years ago

Tool like ricochet that makes it easy to put distance between utxos.

Ideall with configurable number of hops, minimum delay between hops and changing script type between hops

ItoroD commented 8 months ago

Hello @6102bitcoin @craigraw

Is this still open to work on? I would like to work on this.

Is the idea to have functionality in Sparrow that allows for broadcasted transactions to be difficult to scan and get blacklisted (or worse) by analytics companies like the way ricochet does? Basically, ensuring more privacy and less false positive claims of address being added to a ban list on centralized services like an exchange.

functionality being similar to what @6102bitcoin said in comment.

craigraw commented 8 months ago

The complexity here is that to do this properly with a decent user experience, a server is required. There is some discussion about transaction delays being added to Bitcoin Core or Electrum servers, but it has memory requirements on the server side, and certainly nothing is implemented yet.

ItoroD commented 8 months ago

@craigraw I see what you mean. For the minimum delay, yes, a server will probably be needed (I assume you say this to enable control of when transactions are broadcasted at specified intervals).

Minimum delay is like a 2nd layer of privacy. First layer will be the hops and changing of scripts on each hop. This can be worked on iteratively starting with hops being first, and then to minimum delay comes later.

<fees might be a concern for the hops but then again, this is why it should be an optional feature>

RequestPrivacy commented 8 months ago

The complexity here is that to do this properly with a decent user experience, a server is required.

Can you elaborate? Isn't it comparable to whirlpool where you need to have the gui running for getting remixes? And/Or could this be outsourced to the Sparrow Server/Terminal client which is intended to run 24/7 anyway?

craigraw commented 8 months ago

Isn't it comparable to whirlpool where you need to have the gui running for getting remixes?

It's a little different - if Sparrow is not running, mixes simply stop, and pick up again on restart. In this case, if Sparrow is not running, delayed transactions don't get broadcast.

could this be outsourced to the Sparrow Server/Terminal client which is intended to run 24/7 anyway?

Yes, that's possible, although there are UX and security implications with turning Sparrow Terminal from a client into a server - and of course then this functionality would be limited to only those with that setup. Support in Core, or failing that Electrum servers would be better. Servers should do server things, clients should do client things.

ItoroD commented 8 months ago

Hi @craigraw @RequestPrivacy @6102bitcoin and anyone else taking a look,

I have written a design proposal in google docs for this issue. It will be great to have your thought on this.

https://docs.google.com/document/d/1_d9U603o_9DbLeN01rW4m1LDnIkM_ZnLr1c79elibs4/edit?usp=sharing

craigraw commented 8 months ago

Thanks for the detailed writeup. I'm still of the view that best place to implement this would be Bitcoin Core, for reasons additional to this particular feature. I do not desire to run a centralized Sparrow server. Using Sparrow Terminal is an option, but has drawbacks as previously mentioned.

I will try to find some time to write up a proposal for this.

ItoroD commented 8 months ago

@craigraw

Alright. Thanks for looking through the doc.