The Rotating Coinjoiner

How does it work?

Coinjoining is a method for bitcoin users to improve their privacy by combining their transactions with those of other users. This way, it is impossible to tell which inputs come from which person — or which outputs belong to which person. It is described in detail on bitcointalk.org.

In order to merge transactions, all parties need to find each other and willingly participate, exchanging transactions and signing them. This site aims to solve the peer-discovery problem by merging transactions submitted by all users.

The way it works is as follows: when somebody submits a transaction, a new session opens. For the next several minutes, users can submit transactions to be joined, and recieve a URL specific to that session.

Once the session closes, users re-visit their URL to download a joined transaction, which is a join of every transaction received during their session. They should verify that their inputs and outputs are present, then sign it and resubmit the signed transaction. When all signatures are present, the signed transactions are merged into one and submitted to the bitcoin network.

What do I do?

There is no currently open session. To start a new session, just submit a transaction.

If you are a user of brainwallet.org (yuck!), or you are managing your own private keys, it is possible to create raw transactions using its transaction generator.

Alternately, to create a transaction locally, first check the list of available coins for you to spend by running

bitcoin-cli listunspent

Notice the txid's and vout's — these identify the coins you may spend. Then create a transaction by running

bitcoin-cli createrawtransaction '[{"txid": xxx, "vout": n}, ...]' '{"1ABC": m, ...}'

Here xxx and n are the txid and vout from the previous step (you may put as many as you want, just separate them with a comma as shown), while 1ABC and m are the output address and value in BTC. Again, you can put as many outputs as you want, separated by commas.

Donations and Fees

To minimize the risk of mistakes, every transaction submitted to the joiner must have its total input value equal to its total output value. How this works with fees is described as follows.

It is required to add a fee of at least 0.000030 BTC or 3000 satoshi, per input, to each transaction submitted to the joiner. The standard way to add network fees is to have the total input value exceed the total output value. As this is prone to error, the joiner instead requires that fees are added as spends to the special address 1ForFeesAndDonationsSpendHerdtWbWy; the joiner calculates the necessary network fees and sends the rest to a commission address of its own. This is not a real Bitcoin address. Do not ever spend to this address directly, only when using the joiner to submit transactions.

Donations for development and upkeep of the joiner should be done by large spends to the above address; there is no way to force the joiner to use a higher network fee.

OK, I'm ready.

Great! Enter the output of createrawtransaction (or brainwallet) here:


Thanks for helping bitcoin's privacy.

Permanent links to the coinjoiner:

The joiner is also availble as a Tor hidden service. You can access it at either of these URLs.