Using a public blockchain to transfer your wealth or perform regular transactions is not exactly the best option for privacy. The more transactions you make, the higher your chance of creating a link that ties these transactions back to your identity.
Sure, you might have nothing to hide; you’re a law-abiding citizen, but do you really want people you might not even know watching your every move or knowing how much is sitting in your account?
I don’t think so.
Chain analysis companies are spending millions combing through blockchain data and offering these tracking services to fintech companies and governments. Still, this information can also end up in the hands of criminal organisations, as many KYC list leaks have proven in the past.
If you ever wanted to improve the privacy of your Bitcoin transactions, you’ve likely encountered the concept of CoinJoins or participated in a mixing round in the past. CoinJoins were a staple of the Bitcoin privacy arsenal until 2024 when coordinators came under attack.
What are CoinJoins?
For those of you who need a quick primer on what CoinJoin’s are and how they work, imagine you and a few friends all want to buy coffee with some cash. To avoid suspicion, you might pool your bills together and then each take out a random amount.
This way, it’s harder to track who paid for what.
Coinjoins work in a similar way for Bitcoin transactions.
Participants combine their Unspent Transaction Outputs (UTXOs) into a single transaction.
Then, the transaction is shuffled and sent back to each participant, creating a mix of new UTXOs, which are then distributed to each owner after the number of mixing rounds, which makes it difficult to trace the origin of the funds.
The problem with traditional CoinJoins
Existing CoinJoin services often have a central coordinator who could potentially track participants’ transactions; they also act as a point of attack, as we discovered when the Samourai wallet was shut down in April 2024.
While centralised coordinators do still exist, such as Ginger coordinators and third-party community-run coordinators, these operators still need to monitor the type of transactions moving into their pools.
Like Wasabi before it, Ginger used an OFAC-compliant filter to screen UTXOs before entering a mixing round, which, in theory, should shield the coordinator from being accused of money laundering.
Decentralising CoinJoins with Joinstr
An alternative to having a centralised coordinator is to broadcast communication of wanting to mix via a distributed network like Nostr, a task the Joinstr project has taken on.
It was shared as proof of concept on the Bitcoin Dev mailing list in 2022, and there has been a lot of progress since then. BOB has helped with the residency program and contributed to the project. The protocol can be used with different clients and can be used to CoinJoin with cli, web app, electrum plugin, etc.
Joinstr is a free and open-source project based on the MIT license.
- Decentralised: Joinstr leverages the Nostr protocol, which is a decentralised social networking system. This means there’s no single point of failure and no central coordinator to track users.
- Improved User Experience: Joinstr prioritises a user-friendly experience. The interface is designed to be smooth and intuitive, making it easier for anyone to participate in CoinJoins.
- Simple Implementation:Â The implementation of Joinstr is straightforward, making it accessible to a wide range of users.
- No Fidelity Bonds:Â Joinstr does not require participants to lock up fidelity bonds, offering more flexibility.
How does Joinstr work?
Joinstr uses Nostr for communication between participants. Here’s a simplified overview of the process:
- Registering Outputs: Participants announce their desired output amounts through the Nostr protocol.
- Creating the Transaction: Joinstr collects this information and creates a Partially Signed Bitcoin Transaction (PSBT) that includes each participant’s input.
- Size to enter mixing: Users can configure and create pools based on custom denominations and respond to market demand for the most popular UTXO sizes.
- Combining PSBTs: Each participant signs their portion of the PSBT. Joinstr then combines these signed parts to create the final CoinJoin transaction.
- Sending the Transaction: The completed transaction is broadcast to the Bitcoin network, anonymising each participant’s coins.
Joinstr Adds electrum plugin support
A pre-alpha release for the electrum plugin to try the jointer protocol is now available.
- Pools using encrypted channels: Electrum plugin users can join pools using nostr encrypted channels. Users can create or join existing pools for CoinJoin
- Riseup VPN: The VPN is used to connect to a server based config to ensures all the peers in a pool use the same IP address to connect with relays and publish nostr events.
- Use of ANYONECANPAY sighash: All participants sign PSBT using SIGHASH_ALL | SIGHASH_ANYONECANPAY flag in the input registration phase.
- Support for paid nostr relays: Paid nostr relays can be used for pools in which members need to pay a one-time fee to join the pool.
Considerations before jumping into a Joinstr mixing round
- Joinstr is still under development, so it’s best to use it with caution on a mainnet and limit the size of real funds.
- Coinjoins themselves can be complex, so it’s important to understand the process before participating.
- This is a pre-alpha release that can be used on the mainnet with some trade-offs. Specifically, no sybil resistance has been added yet, so avoid using untrusted relays and suspicious pools, warns the project’s site.
Privacy needs to become easier
Joinstr offers a promising solution for those who want to enhance the privacy of their Bitcoin transactions.
It provides an alternative to Joinmarket, which requires users to run their own node first.
Joinstr, however, does require users to have a nostr set of keys and understand how to use both nostr and Bitcoin in conjunction with one another in signing PSBTs and broadcasting events, which requires a bit of a learning curve and a guided UI to help users along.
While its decentralised nature is a plus, it will need a user-friendly interface for existing nostr clients or Bitcoin wallets to add support for these types of event signings. Clients and wallets will also need to process these events and provide discovery options so users can find others willing to mix with and find pools of adequate size.
Do your own research.
If you want to learn more about JoinStr, use this article as a starting point. Don’t trust what we say as the final word. Take the time to research other sources, and you can start by checking out the resources below.
Note: If you find Joinstr useful, consider zapping some sats on Nostr use the donate button or contribute to the crowdfunding campaign hosted on Geyser.