Author

Topic: How to merge many small balances into one with no harm to privacy? (Read 367 times)

legendary
Activity: 2268
Merit: 18706
There's not really a point in doing this unless many other people join with many small transactions too.
What could work in this case is for someone to set up a service for consolidating small inputs similar to Peter Todd's Dust-B-Gone, but instead of sending all the dust to the miners, it consolidates all the inputs and returns them to their owners (minus a small fee). Each user would sign a transaction including all their outputs to be consolidated using SIGHASH_NONE and SIGHASH_ANYONECANPAY, and submit this transaction along with a return address to a service. Once 5, 10, 20, whatever users had submitted their transactions, the service would combine them all together and consolidate all those funds in to one address, pass it through ChipMixer or coinjoin to increase privacy, and then send the consolidated amounts back to each individual user.

It does mean you have to trust your coins to a centralized service, and of course your privacy is not protected from the service itself, however.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
Let's say that each UTXO holds 0.001 BTC, in that case he would need 100 times that amount to meet the conditions to partake in a CoinJoin.
That would still link all addresses together. There's not really a point in doing this unless many other people join with many small transactions too.
legendary
Activity: 2730
Merit: 7065
You can use Wasabi wallet for CoinJoin which charges 0.003% as fee.
Wasabi's fees are OK, the only problem is that a CoinJoin round has a minimum amount that each user needs to deposit to be part of it. If my memory serves me right, that sum is 0.1 BTC. OP said that he has several addresses that contain less than 0.001 BTC. Let's say that each UTXO holds 0.001 BTC, in that case he would need 100 times that amount to meet the conditions to partake in a CoinJoin. I am not ruling out the possibility that he could have that many UTXO's, but I find it unlikely. 
hero member
Activity: 1246
Merit: 708
That's what I meant.

I don't have much to do with programming, but I hope this solution will appear anytime soon Wink

Maybe electrum will integrate it? Hmm have to suggest it to them on github.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
@LoyceV maybe there are some scripts or so to replace LN addres everytime by new ?
I haven't seen it. Each time you want a new address, you have to create a new LN-wallet inside the BlueWallet app.
BlueWallet is Open Source, so if you really want you can create it.
hero member
Activity: 1246
Merit: 708
Thanks @bitmover,
I've managed to figure it out, but I hope your manual will help other!

@hosseinimr93 your tip is excellent!

@LoyceV maybe there are some scripts or so to replace LN addres everytime by new ?
legendary
Activity: 2380
Merit: 5213
To add to what stated by bitmover in the post above:

For sending the remaining balance to a certain address, you can insert "!" instead of an amount.
Assuming you have 1 BTC and you want to send 0.1 BTC to address A and the remaining balance to address B, fill the "Pay to" box as follows.

Code:
Address A, 0.1
Address B, !

In this way, Address A will receive 0.1 BTC and address B will receive 0.9 BTC - fee.
legendary
Activity: 2352
Merit: 6089
bitcoindata.science
Or should I copy address from bluewallet and set it as second output (instead of change address in my wallet)

You need to send to a second output.

In electrum you will need to use click Tools > Pay to Many



After you click Pay to Many you can add more than 1 output. Then you will can add the second output with the remaining balance of your UTXOs and add the LN wallet address.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
Even better: you can prevent small change outputs by sending the change to a LN-wallet directly.
Could you tell me if there is any automated solution to achieve this?
I don't think that's really possible, especially if you want to use a new address for each transaction.

Quote
Or should I copy address from bluewallet and set it as second output (instead of change address in my wallet)
That works Smiley

They may at some point start charging a fee for this, because of the fees they have to pay to consolidate their inputs. Phoenix Wallet for instance charges a small (0.1%) fee already, but that wallet is non-custodial so I'm not sure how traceable the LN-funds would be.
hero member
Activity: 1246
Merit: 708
Even better: you can prevent small change outputs by sending the change to a LN-wallet directly.

Could you tell me if there is any automated solution to achieve this?

Or should I copy address from bluewallet and set it as second output (instead of change address in my wallet)
legendary
Activity: 2268
Merit: 18706
he is going to send all the funds to one address which may be new and not connected to any of the KYC verified accounts
It will absolutely be connected.

Let's say I withdraw from a fully KYCed exchange account in to address A. I also have some bitcoin from a casino in address B. I have some bitcoin in address C, which is change from when I made a large purchase. I have some bitcoin in address D, which came from someone I was trading with. I have some bitcoin in address E, which is change from when I deposited a large amount of bitcoin to my cold storage address Z.

If I send the coins in A, B, C, D, and E, all to a new address in a single transaction, then the other parties from all those transactions will be able to identify me as the owner of all those coins and a participant in all those transactions. I don't want a random trader knowing how much I have in cold storage. I don't want the merchant I bought from to know how much my gambling winnings are. I certainly don't want an exchange with my KYC to link all those transactions, and how much bitcoin I am spending and holding, to my real name and address.
member
Activity: 1204
Merit: 38
Because by combining all those outputs which are left over from previous transactions together in a single transaction, he links all his previous transactions together as belonging to the same person. These transactions could be anything from buying a coffee, to buying a car, to depositing to an exchange where he has completed KYC, to depositing coins to his long term cold storage. If you wouldn't publish your credit card history on Facebook, then you don't really want to link your entire bitcoin transaction history together for anyone to see either.
It seems the user concerned more about the fee than his privacy and since he is talking about consolidation he is going to send all the funds to one address which may be new and not connected to any of the KYC verified accounts but still, the amount will be known. I will not be worrying unless I am buying a lambo with BTC which I consolidated. Grin

Thanks for letting me know about the multiple deposits to the same session at Chipmixer which I never knew.
legendary
Activity: 2268
Merit: 18706
Actually the minimum chip size is 0.001BTC and OP already mentioned that he want to consolidate funds lesser than the minimum size so it is not possible for him to use Chipmixer unless he consolidated it.
He actually could, but it wouldn't really help with his privacy in this case. Although the minimum chip size is 0.001 BTC as you say, you can still deposit multiple smaller amounts than this to ChipMixer and receive chips of the total amount you deposit in a single session. For example, if you sent 0.0015 BTC in two transactions, you would receive three 0.001 BTC chips. However, since you have to send all your deposits to the same address, and there is no way to use a voucher to carry smaller than the minimum chip size over between sessions, then he would still be sending all his tiny inputs to the same address which would not help the privacy of his consolidation.

@OP why do you consider sending all the small transactions to one address can be harmful to your privacy? If it is your wallet and you are sending it from your addresses then it is not going to be creating any issues right?!
Because by combining all those outputs which are left over from previous transactions together in a single transaction, he links all his previous transactions together as belonging to the same person. These transactions could be anything from buying a coffee, to buying a car, to depositing to an exchange where he has completed KYC, to depositing coins to his long term cold storage. If you wouldn't publish your credit card history on Facebook, then you don't really want to link your entire bitcoin transaction history together for anyone to see either.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
@OP why do you consider sending all the small transactions to one address can be harmful to your privacy?
You don't want your local pizza shop to know you also bought a jet the other day, right?
member
Activity: 1204
Merit: 38

You can use Chipmixer which is free to use, you can decide to pay any amount you want.
Actually the minimum chip size is 0.001BTC and OP already mentioned that he want to consolidate funds lesser than the minimum size so it is not possible for him to use Chipmixer unless he consolidated it.


@OP why do you consider sending all the small transactions to one address can be harmful to your privacy? If it is your wallet and you are sending it from your addresses then it is not going to be creating any issues right?!

Or I am understanding anything wrong here!
full member
Activity: 1008
Merit: 138
★Bitvest.io★ Play Plinko or Invest!
Your sugestion to use LN is good, thanks. Just have to find reliable operators
I've used BlueWallet (Android) for amounts up to a few mBTC at a time at most.

Same here. I only used BlueWallet for LN transactions and had no issues.
It never occurred to me to use an LN wallet to consolidate small balances, though. Thank you for the idea.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
Your sugestion to use LN is good, thanks. Just have to find reliable operators
I've used BlueWallet (Android) for amounts up to a few mBTC at a time at most.

Update: you can easily make a new LN-wallet inside the app, and each new wallet gets it's own dedicated deposit address.

It never occurred to me to use an LN wallet to consolidate small balances, though. Thank you for the idea.
Even better: you can prevent small change outputs by sending the change to a LN-wallet directly.
legendary
Activity: 3038
Merit: 4418
Crypto Swap Exchange
Nope. It's not a protocol implementation. I think you can probably integrate it on top of Bitcoin Core though.

Electrum have something similar with feature called "Use multiple change addresses" & "Enable output value rounding"
I was going to suggest something like this. But I was thinking that doing a CoinJoin with yourself is unnecessary, making the transaction larger than needed and creating more UTXOs (perhaps bigger but still more than necessary) to be consolidated in the future. It doesn't exactly break the connection or obfuscate it, I'd say that having a CoinJoin with multiple entities would probably be more useful.

It does give some extra privacy but doubt it helps that much.
hero member
Activity: 1246
Merit: 708
So I think I can try to merge it now, but how to do it better to not harm my privacy?
[...]those to another one of your addresses (with a low fee).
Another alternative would be to actually use them for payments, or send them one-by-one to a (custodial) Bitcoin Lightning Network wallet. The wallet provider will know which addresses belong to you, so it depends on who you're trying to hide it from.

With payments is certain problem.. payment usually needs to be performed quickly, and this will lead to too much relative fee, however it coule be solution for  some of addresses.

Your sugestion to use LN is good, thanks. Just have to find reliable operators
legendary
Activity: 2870
Merit: 7490
Crypto Swap Exchange
...
You can use Chipmixer which is free to use, you can decide to pay any amount you want. You can use Wasabi wallet for CoinJoin which charges 0.003% as fee.

The actual fee is 0.003% multiplied by total participant of each CoinJoin round. The default CoinJoin option have 50 participant (could be more or less on reality), which means the fee is about 0.15% (which is still low compared with most mixer).

Nope. It's not a protocol implementation. I think you can probably integrate it on top of Bitcoin Core though.

Electrum have something similar with feature called "Use multiple change addresses" & "Enable output value rounding"
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
So I think I can try to merge it now, but how to do it better to not harm my privacy?
You can consolidate your inputs in batches: if you don't mind linking certain addresses together, or if you even have several small inputs on the same address, you can send those to another one of your addresses (with a low fee).
I've seen only one mixer that accepts very low amounts of Bitcoin. Note that this isn't an endorsement.
Another alternative would be to actually use them for payments, or send them one-by-one to a (custodial) Bitcoin Lightning Network wallet. The wallet provider will know which addresses belong to you, so it depends on who you're trying to hide it from.
legendary
Activity: 3038
Merit: 4418
Crypto Swap Exchange
I'm curious about this too. Is there a menu option in Bitcoin Core or at least an RPC command that lets you toggle coinjoin in your transaction? I'm guessing that it's something that can be turned on like RBF.
Nope. It's not a protocol implementation. I think you can probably integrate it on top of Bitcoin Core though.

It works by having multiple parties spending their UTXOs in the same transaction to multiple output. It requires a coordinator (someone to collate/distribute all the parties and their information) for this to work. An example transaction would be as follows. A spending to B and C spending to D, E spending to F.

TXID:...
UTXO(0.1BTC, A)                           Output (B 0.1BTC)
                                  ->
UTXO(0.11BTC, C)                         Output (D 0.1BTC).

UTXO (0.22BTC, E)                        Output (F 0.1BTC)

                                                   Change(C, 0.01BTC)
                                                  
                                                   Change (E, 0.12BTC)

Since B, D and F are the intended destination, there is no way to tell that A is spending to B and so on so forth.
legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
I heard about CoinJoin, but never took a closer look, so thanks for tips, I have to look for coinjoin
~

I'm curious about this too. Is there a menu option in Bitcoin Core or at least an RPC command that lets you toggle coinjoin in your transaction? I'm guessing that it's something that can be turned on like RBF.
legendary
Activity: 1512
Merit: 4795
Leading Crypto Sports Betting & Casino Platform
...
You can use Chipmixer which is free to use, you can decide to pay any amount you want. You can use Wasabi wallet for CoinJoin which charges 0.003% as fee.

Check the link below for more information
2021 List Bitcoin Mixers Bitcoin Tumblers Websites
hero member
Activity: 1246
Merit: 708
So I think I can try to merge it now, but how to do it better to not harm my privacy?
Normally low Bitcoin amount with high input also can still be consolidated, but only advisable for high amount for subsequent fast transaction time with lower fee in the later time after consolidatiion. You can just get new address from your bitcoin wallet, then use fee customization to edit the fee to like 5 Satoshi/vbyte or lower and send the whole Bitcoin amount to the new address, the transaction can take long, but will later be confirmed after mempool is not congested.

For privacy, you need to make use of coin mixer or CoinJoin, but coin mixer will be preferable in my opinion. Or, making use of coin control if possible.

sending all from many addresses will be completely against privacy rules,
I heard about CoinJoin, but never took a closer look, so thanks for tips, I have to look for coinjoin,
cause I don't know if mixer will be good solution, first mixers are associated with dark market, illegal activity etc, secondly what I saw their fees aren't small ...

I've just found coinjoin minimal amount is 0,1 btc :|
legendary
Activity: 1512
Merit: 4795
Leading Crypto Sports Betting & Casino Platform
So I think I can try to merge it now, but how to do it better to not harm my privacy?
Normally low Bitcoin amount with high input also can still be consolidated, but only advisable for high amount for subsequent fast transaction time with lower fee in the later time after consolidatiion. You can just get new address from your bitcoin wallet, then use fee customization to edit the fee to like 5 Satoshi/vbyte or lower and send the whole Bitcoin amount to the new address, the transaction can take long, but will later be confirmed after mempool is not congested.

For privacy, you need to make use of coin mixer or CoinJoin, but coin mixer will be preferable in my opinion. Or, making use of coin control if possible as suggested by ranochigo.
legendary
Activity: 3038
Merit: 4418
Crypto Swap Exchange
I have many bitcoin addresses with small balance leftovers <0.001 BTC.
Sending it as one tx will be against privacy, right?
Yes. There is no way for you to consolidate all the small UTXOs unless you spend all of them in a single transaction. If you want to have some form of privacy, you can possibly try to segregate them from each other and only spending the UTXOs that are associated with the same addresses/ a small group of addresses only.
Additionally, when I need to send bitcoin I need it to be confirmed quickly mostly, and if I want that my  tx to be confirmed quickly I need to set high fee rate, and if I have many inputs this fee will be incredibly high.
So I think I can try to merge it now, but how to do it better to not harm my privacy?
That is inevitable. Consolidation transactions are best done when the fees are relatively low so that it can be confirmed sooner. If the fees are consistently high, then it'd be better for you to spend specific UTXOs for the transactions that you're making.

The only way for you to preserve your privacy, when spendlinking is inevitable is to consolidate and send them to a mixer or use CoinJoin. If not, then it'd be better for you to use each of the inputs individually.
hero member
Activity: 1246
Merit: 708
I have many bitcoin addresses with small balance leftovers <0.001 BTC.
Sending it as one tx will be against privacy, right?
Additionally, when I need to send bitcoin I need it to be confirmed quickly mostly, and if I want that my  tx to be confirmed quickly I need to set high fee rate, and if I have many inputs this fee will be incredibly high.
So I think I can try to merge it now, but how to do it better to not harm my privacy?

Jump to: