Fourth Gen
Alpha

Joinstr

Joinstr is a coinjoin protocol with a decentralized coordinator model on Nostr relays. Participants can use multiple relays in the same coinjoin round.
Joinstr Logo

Overview

Joinstr aims to decentralize the coinjoin coordinator to solve the censorship resistance problem of other centralized protocols. Joinstr is a protocol and anyone can build a client for it. There’s currently a CLI/web client, an electrum plugin and a mobile application is currently being developed.

It is not yet available on the Bitcoin mainnet network and using it with real money is strongly discouraged.

The CLI and web app approach is different from the new one used in the Electrum plugin. The old approach starts with input registration, followed by output registration using SIGHASH_ALL or the default SIGHASH flag. A PSBT is created and all users sign it to complete the transaction.

The new approach is to first register the outputs, then each user creates a PSBT with their input and all outputs signed with SIGHASH_ALL | SIGHASH_ANYONECANPAY flag, and finally all PSBTs are combined, finalized and sent.

Each event is published with a new Nostr public key and a new IP address using the RISEUP API free service (implemented only on the Electrum plugin). Tor is optional.

Customization is available for the number of participants and the output denomination, currently set to 5 participants and 0.10 BTC respectively.

DoS attack vectors can be mitigated through the use of encrypted Nostr channels for each round and by encouraging the use of paid, private, custom Nostr relays.

Benefits

Joinstr is as censorship-resistant as Nostr, making it the most censorship-resistant of the coordinator-based coinjoin protocols, though the long-term resilience of Nostr is still to be proven.

The coordinator steps are simplified by the introduction of sighash flag ALL|ANYONECANPAY.

The protocol allows for customization in terms of the number of participants and the denominations of the output amounts.

It is built on top of proven and well-known wallets such as Electrum Wallet (Desktop) and Bitcoin Core, with Electrum allowing users to connect to their own node through the middleware of an Electrum server.

It avoids Tor dependency by planning to use the riseupVPN API for network communication to avoid leaking the participants' IP addresses.

There are no coordinator fees, and each user contributes the same amount for mining fees, estimated to be about 10000 sats using the 50 sat/vbyte fee rate. The mempool.space API is used to estimate fees.

There are no non-private toxic change outputs produced by Joinstr coinjoin transactions, as users must prepare their outputs according to the pool they wish to be a part of. The Electrum plugin allows manual selection of output addresses.

Joinstr's DoS attack vector protection incentivizes the use of paid, private, and custom Nostr relays.

Unlike Joinmarket, Joinstr doesn’t require fidelity bonds, as it relies on Nostr relays for coinjoin coordination instead of being a peer-to-peer marketplace of takers and makers.

Trade Offs

It is currently not available on the Bitcoin mainnet network, and using it with real money is strongly discouraged, with many features still under development such as the Riseup VPN implementation.

Without real money usage, it hasn't been stress tested for Sybil, DoS, liquidity, blockchain deanonymization, and network privacy attack vectors.

The web and CLI applications require deploying a Bitcoin Core node, which consumes hundreds of GB of bandwidth, disk space (though pruning is possible), and time.

There is no anonymity rating or other method to quantify the privacy value of a Joinstr coinjoin transaction.

Users must create outputs of a specific denomination in advance, which may generate non-private toxic change outputs. However, these toxic change outputs can be used to open lightning network channels directly from Electrum.

Extra Details

Release Date
Proof of Concept: August 20, 2022
Platform
Web, CLI and Electrum Desktop Plugin
Code
Python
Address Type
Segwit Native (bc1)

Let’s Compare Bitcoin Wallets with Coinjoins

It is obviously not a walk in the park to compare each bitcoin wallet but we will try to present them with different considerations so that you can make up your own mind.
Wasabi Wallet 2.0
JoinMarket
Wasabi Wallet 1.0
BTCPay Server
Trezor Suite
Jam

Have More Questions?

If you have any comments or suggestions, please reach out to coinjoins@protonmail.com or open an issue on the GitHub repository. Thank you!

Intro
Wallets
History
Coinjoins.org