Walletwasabi: Send funds directly from coinjoin to hardware wallet

Created on 3 Oct 2019  路  16Comments  路  Source: zkSNACKs/WalletWasabi

The Problem

It's awkward that once my funds are mixed I have a load of UTXOs in Wasabi that I then need to move over to my hardware wallet. It's also difficult to do this without relinking your UTXOs. You need to move them one at a time, not consolidate them, do them all at random time intervals to avoid timing based attacks.

It's a pain and I think lots of users could easily shoot themselves in the foot and end up accidentally revealing too much data when sweeping their funds out.

It would be great if as soon as my required anonymity set is reached, the output address for the coinjoin is my hardware wallet address, not another internal Wasabi Wallet address. So I just leave Wasabi mixing with hot keys, and my hardware wallet automatically get's filled up >50 anon set UTXOs slowly over time.

My hardware wallet should not need to be available, plugged in, or require any interaction for this to work.

A Solution

The solution I'd propose is:

  • Add opt-in option in Wasabi to send post-mixed funds to a hardware wallet
  • During the one-time enable process a hardware wallet needs to be connected and the xpub requested
  • Hardware wallet xpub is saved on disk and associated with this Wasabi Wallet account
  • When mixing, once the next coinjoin will bring the UTXO to the required anonymity set, the output address is derived from the hardware wallet xpub, not Wasabi Wallet's internal xpub

I can now have my hardware wallet stored somewhere safe, send funds to Wasabi Wallet, as it mixes my Wasabi Wallet balance decreases and my hardware wallet balance increases.

Some Notes

Pre-mix anonset predictability

If resulting anonymity set cannot be predicted before the coinjoin has completed, an extra coinjoin should be performed after the anonimty set is reached to send to the hardware wallet address. Users should be made aware of this when enabling this feature as it will mean extra fees.

Allowing xpub import from anywhere

This problem isn't specific to hardware wallets. It could apply to any wallet, by changing my proposed solution from "plug in hardware wallet" to "paste in xpub" would allow this same solution to work with pretty much all wallets in existence.

However that comes with its own problems with users incorrectly copying xpubs, different derivation schemes etc. While it would be nice for technical users, I feel like this might have the potential to cause a lot of problems and add support burden for the maintainers. For that reason I don't think it's a good idea to implement this.

Limiting to hardware wallet gives Wasabi Wallet much more control over extracting the xpub and means there are no address derivation confusion issues because the funds can always be accessed with the hardware wallet directly from Wasabi Wallet itself.

featurenhancement

Most helpful comment

I don't want to promise to personally implement it, there's just so many things to do, however I have a bunch of wallets and it's a pain to move money between them, so I have a strong motivation to do so.

All 16 comments

The difficulty of handling funds post-mix actually made me stop using Wasabi :(. Would love to see that implemented as well.

FYI there's a bit of discussion about it here: https://twitter.com/meeDamian/status/1092271823369060352?s=09

This is something that would be a great addition to wasabi. Similar to my ColdSend idea

This would be really useful

Related #1628 #2280

useful

Re the duplicate label, not sure this issue qualifies as a dupe of #1628 or #2280.

Those issues seem to be suggesting a way to automate sweeping post-mixed funds out of Wasabi in a new transaction. I'm proposing that the post-mixed funds are sent out of Wasabi directly from the last required coinjoin.

Solving the the same problem and definitely related but a different solution.

I agree,
Anyone mixing for the future while fees are low is shooting himself in the foot right now.
Either decreasing security of funds or setting himself up with a costly and time consuming burden of sending UXTOs back one by one, Even if you manage to automate the moving of UTXO one by one, if it's not done on a random timing and few people do it, it's almost as much a giveaway to an outsider than merging them out into one large UTXO
This should be prioritized.

Pre-mix anonset predictability

I don't think I've weve seen a final 0.1 with an anon-set lower than 20 even 50 in a while, a level I think most should be fine with.
For those who really want a fake anon-set of 100+ via double mixing we could allow them to coinjoin to HW once all their 0.1 have almost reached their desired anonset.

Anyone mixing for the future while fees are low is shooting himself in the foot right now.

Assuming that "anyone" is using a hardware wallet and that "anyone" is impatient and unskilled to move coins one by one. Where the second two assumptions are reasonable, but the first one I think is unreasonable. However it's not like any of us have data to back up our gut feelings.

This should be prioritized.

Its prerequisite, multi-wallet monitoring is prioritized and has been for months: https://github.com/zkSNACKs/WalletWasabi/issues/2359
After multi-wallet monitoring is implemented, this feature should be a piece of cake to add.

What I meant by "people mixing for the future" is those who have no need to mix at the moment. They are more likely to want the funds to end up in safer/long term storage.

Its prerequisite, multi-wallet monitoring is prioritized and has been for months: #2359

Just to clarify, by "multi-wallet monitoring" you mean the way Wasabi Wallet currently works it's just monitoring one xpub per wallet? Monitoring an entirely new xpub in a performant way as well as the default Wasabi Wallet xpub is not a simple addition right now?

After multi-wallet monitoring is implemented, this feature should be a piece of cake to add.

This is great to hear!

Monitoring an entirely new xpub in a performant way as well as the default Wasabi Wallet xpub is not a simple addition right now?

It only monitors the wallet that you click "load" and even then you can only click "load" once. I want it to keep monitoring all wallets on the same network at start. So we can get the keys from another wallet and and be 100% sure they're clean and they won't result in address reuse.

Ok, I understand.

So does this mean that this is a feature you're interested in supporting once you have the wallet monitoring code refactored?

I don't want to promise to personally implement it, there's just so many things to do, however I have a bunch of wallets and it's a pain to move money between them, so I have a strong motivation to do so.

Totally understand. Thanks for taking the time to explain your position and keep up the great work! 馃檶

3245 made this possible with the Daemon.

https://docs.wasabiwallet.io/using-wasabi/ColdWasabi.html#mix-to-another-wallet

it's still not in the GUI, so I think we can keep this open a while longer...

Was this page helpful?
0 / 5 - 0 ratings

Related issues

yahiheb picture yahiheb  路  3Comments

gabridome picture gabridome  路  3Comments

MaxHillebrand picture MaxHillebrand  路  3Comments

UkolovaOlga picture UkolovaOlga  路  3Comments

trading2835 picture trading2835  路  3Comments