WalletWasabi: "Mix to another wallet" does not work

General Description

I tried using the new “mix to another wallet” feature in v1.1.11.0 and while the coins were mixed, they were not mixed to the destination wallet specified.

https://docs.wasabiwallet.io/using-wasabi/ColdWasabi.html#daemon-tutorial

How To Reproduce?

  1. Load wasabi hot wallet (“wallet1”)
  2. Load hardware wallet (Ledger Nano S, “hardware_wallet”)
  3. Close wasabi gui
  4. Run wassabee mix --wallet:wallet1 --destination:hardware_wallet and notice when the daemon stops, the coins are mixed but they are all still in wallet1.

Operating System

Linux Mint 18.3 (Ubuntu 16.04 base)

Also tested on Mint 19.3, same issue is present.

Logs

Can share if there’s something specific you ask for but it all looks pretty sensitive so gonna leave this out of the report for now.

Wasabi Version

v1.1.11.0

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 1
  • Comments: 35 (10 by maintainers)

Most upvoted comments

I attempted to investigate it, but didn’t get too far 😕 It could take a while to fix it, so I’d suggest to not bother until WabiSabi as this is something that has to be replaced.

@the-metalworker that’s a great idea! This could be a side effect of our “too long mempool chain” issues lately.

Ok this is good to know, thanks @the-metalworker. I have no clue what broke/fixed this though… Maybe, consider to do more bug hunting on master branch, and please report it when you find the issue again.

But to be clear - master branch is reviewed, but not thoroughly tested in its entirety, like the releases are. So be careful, there might be critical bugs in here, including those who loose your bitcoin. so consider doing this on testnet, or with smaller amounts on mainnet.

@yahiheb I am not aware of anyone touching the code (and won’t be able to test it for 2 months) but I did not experience improvement in this. The daemon starts doing its job properly, but then it stops for some strange reason.

@lontivero I can find the string its registration is not allowed in the log file several time, including in mixes that I know were failed attempts to “mix to another wallet”. FWIW I have not changed any of the settings from defaults except to have Wasabi connect to my own full node, and though the error says “this coin might already be spent” I can say that all of the coins I am trying to mix have multiple confirmations before I try to start the mix to another wallet.

@yahiheb I agree the MixUntilAnonymitySet should be an Enum, it is clearly the best way to solve the problem forever.

Mixing only a few coins I can see the daemon finishes but with an error because it tried to enqueue a coin that was already spent (in a previous coinjoin). This could be what happens. It seems there are couple of small problems that could be playing together .

2020-04-29 15:49:08 INFO	ClientState (429)	Coin added to the waiting list: 1:1969ba0fccf172ec5f2c6835dd8168b57b566d4784d103ced1b42410f5338316, but its registration is not allowed till 60 seconds, because this coin might already be spent.

How to reproduce:

  1. Start with a correct Config.json file with healthy value:
  "MixUntilAnonymitySet": 50,
  "PrivacyLevelSome": 2,
  "PrivacyLevelFine": 21,
  "PrivacyLevelStrong": 50
  1. Open a wallet
  2. Go to the Coinjoin tab and verify the Target is 50 (it is)
  3. Go to setting and modify PrivacyLevelFine to 3 and PrivacyLevelStrong to 4.
  4. Close Wasabi in order to make the setting to take effect.
  5. Open Wasabe and open a wallet
  6. Go to the Coinjoin tab and verify the Target is strll strong privacy=4 (it is)
  7. Open the Config.json file and check the MixUntilAnonymitySet Problem: it is still 50. It never changed, what we see in the coinjoin tab (Target=3) is just an optical illusion.

Can report that building from source on master and running the “mix to another wallet” command in the source directory results in the expected behavior.

thanks for testing @the-metalworker !

See the documentation again, there is a different way to run the daemon when you build source. Since you are on mint, it should be

~/WalletWasabi/WalletWasabi.Gui$ dotnet run -- mix --wallet:MyFirstWallet --destination:MySecondWallet --keepalive

so, you go to the Gui folder, then you do dotnet run, break up the command with --, and then do the usual mix --wallet:foo --destination:bar.

I did some testing and was able to replicate this issue on a fresh Mint 19.3 install with fresh wallets. Re-opening this issue.