JoinMarket is built for those who:
1. Want to use coinjoin to improve the privacy of their bitcoin transactions or reduce the miner fees they pay.
2. Want to earn an income from their investment bitcoins
Coinjoin is a kind of bitcoin transaction which combines multiple people's transactions together in an effort to improve privacy, especially as a way to regain privacy after it's been degraded by bad practices. It can also reduce the size of transactions and so require less miner fees. The concept has enormous potential, but it has not seen widespread usage so far despite the multiple projects that implement it. I believe this is because the incentive structure was not right.
A coinjoin transaction requires other people to take part. The right resources (coins) have to be in the right place, at the right time, in the right quantity. This isn't a software or tech problem, its an economic problem. I propose a new kind of market is created that would allocate these resources in the best way.
In practice this would work by allowing coinjoin transactions to be paid-for. On one side there will be time-rich coinjoiners who will wait around and be willing to coinjoin at any time. On the other side will be time-stressed coinjoiners who can coinjoin instantly for a price.
This will naturally attract investors, holders of bitcoin who don't want to transact but just want to earn the coinjoin fee. They would be taking on only a very small amount of risk; Their private keys would never leave their computer, the software would only sign transactions that are valid and pay the correct amount of coins. So it's safe to say that investors would pour in, resulting in the coinjoin fees being very low.
Elevator Pitch for Coinjoin Users / People who desire privacy.With Joinmarket nobody can steal your coins, you would mix them on your own computer. The software will never sign a transaction unless your coins are going to exactly the right address in the right amount.
Other mixing services mix your coins with other users, resulting in you getting back coins possibly related to drugs, stolen money or other illegal or immoral practices. This is highly undesirable if you just don't want your employer knowing which non-profits you support from your salary. Because of the incentives of JoinMarket, you have access to a huge amount of clean, untainted bitcoins to mix with at a very low price. Many of the bitcoins you're mixing with will be bought from regulated exchanges, owned by legitimate holders of bitcoin.
Not to mention you'd likely be paying lower fees for mixing than other services, because of the competition between willing-to-wait coinjoiners. Indeed if you don't mind waiting, you can wait around with a low offer fee and maybe another impatient coinjoiner will join with you.
Elevator Pitch for InvestorsFirstly I'd like to clarify what I mean by investing. I don't want you to give your bitcoins to me. I dont want you to give your bitcoins to anybody. The private keys would be safely held on your own computer, known only by you and your wallet.
Features:
1. Earn an income from your investment bitcoins.
2. Very low risk. Your coins have to be on an online computer, but the software would only sign transactions that are valid and pay you the correct amount.
3. No commitment, withdraw your bitcoins at any time.
4. Improves the privacy of the bitcoin transactions, which makes bitcoin as a currency more useful and thus increases its value.
5. Improves the fungibility of bitcoin, since the distinction between 'clean' and 'dirty' bitcoins will be meaningless. Eliminates this particular systemic risk to bitcoin.
Downside:
1. Your return is likely to be quite low. Low risk = low reward.
2. You don't get paid unless people who desire privacy actually use this. If you're an investor you have an incentive to tell people about JoinMarket and contribute to it.
The SoftwareI've been writing an implementation of the idea. Right now the coinjoiner bots meet in an IRC channel. The bots announce their orders in an open-outcry trading pit style. Transaction data is sent between users as IRC private messages. Authenticated encryption is used to stop the IRC server eavesdropping. I have plans one day to move away from IRC entirely and have the users meet in some kind of peer to peer network.
How to tryDownload the repository from
https://github.com/JoinMarket-Org/joinmarket-clientserver and read the README file
There is an internal HD wallet. It is generated from a wallet encrypted on your hard drive.
There's also plenty of information on the github docs:
https://github.com/JoinMarket-Org/joinmarket-clientserver/tree/master/docs$python wallet-tool.py generate
Generates a new wallet. Asks for your encryption passphrase and gives you a 12-word recover seed to write down on paper, a la Electrum or Mycelium.
$ python wallet-tool.py [wallet file name]
This will print out addresses from the HD wallet, send some coins to the first receive address
$ python yield-generator.py [wallet file]
Becomes an investor bot, being online indefinitely and doing coinjoin for the purpose of profit
$ python sendpayment.py -N 4 [wallet file] [amount-in-satoshi] [destination address]
Chooses the cheapest offer to do a 5-party coinjoin to send money to a destination address
If you're a frugal user and don't feel like paying to coinjoin if you dont have to, use this command
$ python patientsendpayments.py -N 1 -w 2 [wallet file] [amount in satoshi] [destination address]
Announces orders and waits to coinjoin for a maximum of 2 hours. Once that time it up cancels the
orders and pays to do a 2-party coinjoin.
$ python ob-watcher.py
Starts a local http server which you can connect to and will display the orderbook as well as some graphs
$ python wallet-tool.py recover
Will prompt for the 12 word recover seed and create a new encrypted wallet file
$ python wallet-tool.py -p [wallet file]
Will print out addresses along with private keys which can be used to sweep the coins away
Example coinjoins transactions made with JoinMarket:
14 parties, amount 0.01btc
https://blockchain.info/tx/55eac9d4a4159d4ba355122c6c18f85293c19ae358306a3773ec3a5d053e2f1b11 parties, amount 0.57960945btc
https://blockchain.info/tx/402d3e1df685d1fdf82f36b220079c1bf44db227df2d676625ebcbee3f6cb22a8 parties, amount 2.6btc
https://blockchain.info/tx/722bb2662cb2ef9b4a2693e52ba82c44cea1042349f1aa6e71e28a3947aa41447 parties, amount 0.02btc
https://blockchain.info/tx/e38e45d004ef913ee4e952d1f185dbea91cc8cc56e22aa7f767a3edec952a4a93 parties, amount 25btc
https://blockchain.info/tx/da1a2259be752dd6b5162221989181b7334bd0acbbc1bca31596e5bc323757704 parties, amount 40btc
https://blockchain.info/tx/3b97544488cac0271a80b20822597342648d19ed02ac25041bd8d35e624d8e6b3 parties, amount 12btc
https://blockchain.info/tx/d91278e125673f5b9201456b0c36efac3b2b6700fdd04fc2227352a63f9411704 parties, amount 0.84btc (~$200 at contemporary exchange rate)
https://blockchain.info/tx/7d588d52d1cece7a18d663c977d6143016b5b326404bbf286bc024d5d54fcecb4 parties, amount 0.1btc
https://blockchain.info/tx/b85a3b563474ca98ba1809460e61a50053899c21f9869afb6a3a6d4b4cb00b7c3 parties, amount 0.19btc
https://blockchain.info/tx/2e2cd9204f97a2260ba5b1fd446f394eeff79daa973e37dd29794a9ee667bf64Further DevelopmentGithub:
https://github.com/chris-belcher/joinmarketIRC: irc.freenode.net #joinmarket
Twitter:
https://www.twitter.com/joinmarketReddit:
http://www.reddit.com/r/joinmarketIf you can program, contribute code. The project needs development works more than anything else right now. A list of suggested projects are here
https://github.com/chris-belcher/joinmarket/wiki/What-can-I-do-for-JoinMarket%3FIf you require privacy, JoinMarket can be used right now on the mainnet, albeit with a command-line interface. Many people are already using it.
Bitcoin Core wallet could be integrated by using the -walletbroadcast=0. Integration on the command line using json-rpc calls is already done, use the --rpcwallet flag on sendpayment.py
I have plans to create an Electrum plugin which does this, it would be a simple checkbox and thereafter all transactions would be coinjoined.
If you run your own yield generator bot, you can earn an income from your bitcoin savings and increase the privacy and anonymous set of others.
People trust systems more if they think they know how it works. If you're good with graphics, you can help the project by creating an infographic for how it all works. For example how coinjoin transactions in the joinmarket software are communicated, created, checked and signed.
Snazzy websites are better for getting the word out than big walls of text on a forum.
Further Readinggmaxwell's original coinjoin post.
https://bitcointalk.org/index.php?topic=279249.0my original Joinmarket suggestion / writeup.
https://bitcointalk.org/index.php?topic=279249.msg9384411#msg9384411Mike Hearn's blog post about privacy and coinjoin
https://medium.com/@octskyward/merge-avoidance-7f95a386692f