A Bitcoin developer just resurrected a dormant privacy protocol that could be the silver bullet for Bitcoin’s anonymity issue. And it can be put into action without changing Bitcoin’s source code.
Chris Belcher, a UK-based developer with hundreds of commits across various Bitcoin projects like Electrum and JoinMarket, this week released an implementation proposal for CoinSwap, a seven-year-old privacy protocol he believes will “massively [improve] Bitcoin privacy and fungibility.”
With CoinSwap transactions, though it might look like a user sends funds from address A to address B, “in reality her coins end up in address Z, which is entirely unconnected to either A or B,” Belcher wrote.
CoinSwap was originally conjured up in 2013 by Greg Maxwell, co-founder of Blockstream and the creator of CoinJoin, CoinSwap’s spiritual predecessor. But Maxwell’s idea was too technically challenging to implement and was left to gather dust.
Belcher’s proposal, however, uses the same smart contract trick that makes Bitcoin’s Lightning Network tick, making it easier to implement. Belcher told Decrypt the protocol could be ready for testing in six to eight months, and Maxwell has praised Belcher’s implementation as an “extensive and well written high level design.”
This could solve Bitcoin’s major anonymity issue. Since Bitcoin’s addresses are public and pseudonymous, it’s fairly easy for blockchain analytics companies to trace Bitcoin addresses to IP addresses. Anonymity protocols, such as CoinJoin, already exist, but they can be difficult to navigate and only work when strict instructions are followed.
How CoinSwap improves privacy
With CoinJoin—CoinSwaps’s predecessor—groups of users send equal amounts of Bitcoin together (for example, five users each send one BTC), which the protocol then processes in batches to obscure the origin of transactions. Because transactions are grouped together in batches, they all have a shared history and all look identical.
One of the nuisances with CoinJoining is that each user must input an equal amount of Bitcoin into the batched transaction for it to work properly. If you joined a server for a one BTC CoinJoin and you accidentally sent two, then the privacy of your input (and whoever interacts with it in the CoinJoin) would be compromised.
CoinSwap solves this problem by eliminating the need for like-amount payments. Instead of jumbling a bunch of coins together, CoinSwap (as its name suggests) lets users swap coins by sending them to an intermediate wallet first.
Should Alice and Bob want to CoinSwap, Alice would kick things off by sending Bitcoin to a multi-signature address (i.e., an address they both hold keys to). At the same time, Bob sends Bitcoin to another multi-signature address. Since both Alice and Bob have keys to both wallets, they can then withdraw the coins to their own wallets.
A cryptographic trick used in atomic swaps and the Lightning Network, called…