Coinjoin is a method that make a transaction with other transaction of other parties to hide the link between txin and txout.

In case of this, why we need others transaction? We have many bitcoin address since we are using HD Wallet(BIP32) so I think we don't need to wait other bitcoiner to participate into shuffling for making a transaction. we can just give our address set.

Is there a special reason that enforce to combine mine and others stuff?

Sorry for my English.

3 Answers 3


The only advantages of doing a coinjoin is that the recipient of your funds cannot see the source of your funds (and the sender of funds to you cannot see your future transactions). If you do a coinjoin with only your funds, any branch they follow along this trail will lead to a source (or destination) of your funds.

Every source you include in the coinjoin will thus be exposed. Your recipient, of course, won't know that they're all of your sources, but if they're keeping a log of addresses that are likely tied to your identity, now all of those addresses, and only those addresses, will be in their log. If you instead do this with other people, it muddies such a log with false leads.

Similarly, the sources of your funds will all have logs of that destination of funds. Also, they can follow the chain back and deduce that your address is likely tied to another address if you have multiple sources, and they will all have an list of your other addresss. Again, they won't know that the other address are necessarily your address, but they actually will be, and so their log will contain accurate address linkage data.

  • Yes, they can trace all the history about my money flow but, the fact is that they cannot claim some source are belong to me. additionally, my address set is consist of many transaction made with others. it means that they have to trace all the people's address that have expereicne trade with me. I think it is not bad method to hide privacy without depending on other people that may require some resources such as fee or time.
    – Hyunsoo
    Dec 6, 2019 at 19:07
  • 2
    Yes, your address set consists of many transactions made with others, but if you're concerned about privacy, that's exactly what you're trying to hide. I can't imagine that showing the recipient more information about all of your sources of funds, instead of one source, is better for privacy. If they're the type of entity to just say "oh these came from a lot of sources, I give up", sure, but you can assume anyone really trying to decode the originating transaction will consult with a blockchain analytics firm, in which case you just gave them a lot more information. Dec 6, 2019 at 19:19

"Privacy loves company."

The key is to understand why a coinjoin transaction provides privacy. It is not a magical veil that shields your financial history, it is just a tool that helps obfuscate a particular output's history. This obfuscation is only achieved by including many inputs in the coinjoin transaction, such that each input could be the source of a specific output, but it is not technically possible to determine which is which.

With this in mind, we can see why having many participants is important: you want to have as widely varied a selection of inputs as possible, so that your output's history is not meaningfully determinable. If you only include your own inputs, then each and every input will have a history that leads to you.

To illustrate this point, consider the case in which a chain analysis firm has a very good idea of who owns each UTXO that exists:

If you supply 10 inputs to a transaction, but a chain analysis firm has linked your ID to those 10 inputs, then it would be trivial to determine that you likely own the outputs created as well.

On the other hand, if you supply 1 of 10 inputs, then the chain analysis firm would be hard pressed to determine who owns each newly created output. With no additional info, there is just a 10% chance that you own any one specific output.


Doing coinjoin with only your coins is possible, it's called fake coinjoin. Samourai Wallet has one implementation, called Stonewall, I have written fake-coinjoin.sh for Bitcoin Core. But such fake coinjoin by itself does not give you much privacy, because of common-input-ownership heuristic. So, by default chain analysis companies assume that all the inputs of Bitcoin transaction are controlled by the same entity. Unless they are aware of coinjoins and take them out from their analysis. What fake coinjoin does is that you cannot actually be really sure is coinjoin transaction with multiple equally sized outputs actual real multi-party coinjoin or not. And can possibly give you plausible deniability.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.