Wasabi Wallet

Wasabi Wallet's avatar
Wasabi Wallet
npub167hm...schc
Open-source, non-custodial Bitcoin Wallet with built-in coinjoin for desktop.
Bitcoin transactions reveal the origin and destination addresses of every unit spent. Bitcoin’s privacy problem can be solved by a special type of transaction called a “coinjoin” which includes coins from multiple users that are reorganized into matching amounts. All Bitcoin transactions show where the coins that are being spent came from (known as inputs) and where the coins are being sent to (known as outputs). Each input and output has an address, and an amount. When a payment creates two outputs, the receiver can track the leftover change that belongs to the sender when it is spent in a future transaction. When a payment consumes more than one input, an observer can link multiple payment addresses used by the sender together. These kinds of transactions are easy to trace, revealing a chain of information about a wallet’s balance and transaction history to anyone who looks for it. Coinjoin transactions are different: There are more than two outputs and the inputs are consumed by multiple senders. Coinjoins allow you to privately shift your coins from the original addresses known by previous senders or receivers into new addresses that are not deterministically linked to your previous transactions, even if you are not making an immediate payment. In order to organize all the inputs and outputs into a coinjoin transaction, a central coordinator is used to relay all the transaction information to participants. This process is non custodial, so the coordinator and the other participants cannot steal your funds. A minimum of 150 inputs is required for the coinjoin to proceed, but up to 400 inputs are allowed in a single round. Once enough inputs are ready, users choose outputs that are the exact same size as other users, creating a crowd of identical matches to hide in. A new unique Tor identity is used any time an input is registered or an output is claimed by a client so that the coordinator is not able to link any coins together by matching the IP address to the same owner. Each consecutive coinjoin your coins participate in increases the size of the crowd they are hiding in, allowing users to boost their privacy as much as they want before sending or storing their coins.
A unique feature of the new BTCPay coinjoin plugin is payment batching in coinjoins. How does it work and why is it important? A thread 🧵👇 ---------------------- Sending payments directly within a coinjoin provides better privacy and lower fees than sending payments using outputs you received from a coinjoin. When users make a regular payment, a change output is created unless the sender can add up the exact amount they are trying to pay using the inputs in their wallet. Wasabi Wallet makes this calculation easy by suggesting to pay slightly more or less to avoid creating change. This potential waste can be eliminated if a user is willing to wait for a coinjoin round to be coordinated when making a payment. Batching cuts out the extra step, revealing even less information about their balance to the recipient while saving transaction fees. By making a payment within a WabiSabi coinjoin, any change amount returned to the sender that would ordinarily be trackable gets broken down into private amounts that match other users in the coinjoin instead. This prevent recipients from knowing that the sender has any additional coins left in their wallet. Single participant transactions can only match this privacy property if their tx doesn’t create any change at all, which requires some amount of luck. Payments within coinjoins also reduce the total amount of blockspace required for the coins to reach their final destinations, reducing the amount of transaction fees paid. No intermediate outputs are created just to be immediately spent to a new recipient. Simply having the capability to make payments in a coinjoin improves the privacy for all coinjoin participants, even if the coinjoin doesn’t actually contain any payments. This is because observers trying to track the addresses of users can’t be certain that the outputs belong to the original coinjoin creators, since an output can potentially be sent to a non-participant. Learn more about the BTCPay coinjoin plugin: https://blog.wasabiwallet.io/wasabiwalletxbtcpayserver/