Congratulations to the Wasabi and JoinMarket developers! JoinMarket pioneered a lot of CoinJoin science (and BTW, belcher wrote an excellent & comprehensive
wiki article on privacy), while Wasabi is the first wallet that implements CoinJoin in both a
highly-usable and sound way. As both a signer and a donor to the CoinJoin bounty fund, I'm thrilled that these two pieces of software exist!
For everyone looking to improve their privacy, I highly recommend checking out Wasabi, especially over centralized "mixers".
Further work is still necessary toward achieving
default-fungibility, which is IMO the end goal. Even with Wasabi, you need a fair bit of expertise to maintain privacy, and the vast majority of people are using wallets that are terrible privacy-wise. Without intending to say that the bounty fund will reward people for these specific things, I'd personally like to see:
- Improvements to make Wasabi more of a complete wallet.
- CoinJoin integration in other wallets, especially Bitcoin Core.
- Research on doing CoinJoin in decentralized ways. (Wasabi's method is pretty secure, but requires a centralized coordinator.)
- Other research (and, perhaps more importantly,
usable products) for improving day-to-day privacy.
Here is a solution for your third point:
Just like Bitcoin a CoinJoin wallet should build a network of nodes with a mempool.
It works like this:
Alice wants to coinjoin a transaction so she sends a message to the mempool
In this message it is specified the listening node which is the communication port for Alice plus eventual informations or conditions releted to the coinjoin she wants (maybe she wants to be paid for the coinjoin and she states the fee or she wants to coinjoin with 3 or 4 participants, etc...)
Alice builds a path of nodes to her listening node just like it happens in the lightning network in which every node of the path is only aware of the 2 nodes communicating with it
Alice --> node A --> node B --> node C --> node D --> Alice's listening node
In this example of path node C will only be aware of node B and node D
Bob sees Alice's message on the mempool and decides he wants to coinjoin with Alice
He construct a path to a Bob's listening node just like Alice did
Now the 2 listening nodes talk to each other and through them Alice and Bob communicate in a secure way
They settle the details for the coinjoin, sign it and then send it to the Bitcoin network.
This is not limited to 2 participants, it can be extended to 3 or more and it could become a standard in which every privacy oriented coinjoin wallet participates.
Of course this is far less efficient than a centralized solution but we already know decentralization is inefficient.