Privacy solution is at the heart of cryptography, its very root. For many enthusiasts, cryptocurrency as cash needs to have paper money’s perhaps lone advantage, anonymity. CoinSpice sat down with Clifford Mack, developer for CashShuffle, a privacy/fungibility protocol for Bitcoin Cash (BCH). CoinSpicers get an inside look at its roadmap, wallet integrations, and how they’re addressing lessening wait times.
More Spice: Porn Pays You to Watch: Meet xHoneyBadger
Bitcoin Cash and CashShuffle Return to a Goal of Privacy
🌶CoinSpice: For those who aren’t familiar with it, what’s CashShuffle?
Clifford Mack of CashShuffle: CashShuffle is a privacy/fungibility protocol for Bitcoin Cash. It provides a way for users to combine their transactions with other users in such a way that no one can tell which transaction inputs correspond to which transaction outputs.
The basic idea of combining the inputs and outputs of different users into a single transaction is not new. It was first proposed by Greg Maxwell in 2013. Then, the CoinShuffle paper was published in 2014 by Tim Ruffing and others. This takes the concept further by adding a “decentralized mixing protocol”, or a way for users to participate in CoinJoin transactions without revealing to each other their output addresses.
CashShuffle takes this protocol even further by providing a means by which users can find each other and organize themselves into little groups for each transaction. The original CoinShuffle protocol was missing this important piece.
Also, the CashShuffle project isn’t just a protocol. It also has created a workable implementation using a GoLang based server and a plugin for the Electron Cash wallet.
🌶: So the protocol uses a client-server model?
For now, yes. So because of that, you can say that there’s an aspect of CashShuffle which is centralized. But the server cannot steal funds from users. It also can’t tell which inputs correspond with which outputs. It’s sort of like a blind, dumb relay mechanism.
Over time, we plan to make CashShuffle completely decentralized. This can begin with a mechanism for multiple servers to share information about matching participants, which means more and more servers can be added without diluting the “liquidity” those participants. After that, we can implement the server protocol as a part of Bitcoin Cash nodes; for example, Bitcoin Unlimited nodes.
Or there might be a way to bypass the server layer entirely and make the whole thing its own p2p network.
But it’s too early to say. It’s not always practical to plan everything in advance. Sometimes as developers of a new protocol, we have to try things and see how well they actually work in practice, both technologically and from a usability standpoint.
🌶: We heard talk of a “new roadmap”, can you tell us about it?
Yes. There’s two big developments here. The first is that we finally got the nod of approval from the Electron Cash team to start preparing to integrate CashShuffle natively into the wallet instead of a separate plugin. Plugins are a great way to experiment but CashShuffle will see a lot more usage if it’s just part of the wallet for everyone. This is really the whole point of the project. We want this integrated into wallets.
The second thing is an awesome idea that comes from Josh Ellithorpe (who coded the GoLang server component), and that idea is to have the wallet shuffle all the coins in the background automatically so that when the user wants to send money, his coins are already shuffled. That means the user doesn’t have to wait.
If the user has to wait too long, he’ll probably quit. That’s been the whole problem all along. How do you get enough people using this thing at the same time so the user has others to join transactions with? Well, if your wallet is doing this in the background then it doesn’t matter if its waiting for hours. The user won’t be waiting.
And the 2 things (native wallet integration plus background shuffling) should have a synergistic effect and hopefully finally make this thing usable in everyday practice.
🌶: How will the wallet prevent the user from accidentally mixing shuffled coins back into their usual funds?
Each time you get change back from a transaction, it will be reshuffled. We also will raise the dust threshold so that tiny change amounts (that are too small to shuffle) never get created to begin with. It might not be perfect but we can improve this aspect of it over time.
🌶: Why has it taken so long to develop CashShuffle?
It could have been developed faster if we had the right strategy in the beginning. I mean shuffling coins in the background. But this is only clear in hindsight. It takes time and going through the process to even discover what the problems are, before you can start solving them.
Initially, we developed the plugin and found out that it’s hard to start a party because no one wants to be the first one on the dance floor. Then we developed liquidity bots to try to help this problem. Then we tried to make the bots run in the background. Finally we came across the pre-shuffling idea.
🌶: How soon will the wallet be ready?
We’re hoping to get a prototype out in the next 2 weeks. After that, there will need to be a very thorough code review and security audit before Electron Cash will publish an official release that supports CashShuffle.
🌶: What’s next after Electron Cash?
More wallets! A team we really want to help is the Bitcoin.com wallet. But we are open to helping any wallet integrate CashShuffle. The goal is to have everyone using it.
Imagine in the Future 100 Inputs and Outputs in a Transaction
🌶: How much privacy will CashShuffle give?
CashShuffle is both a privacy and a fungibility solution. They are related but are two different things. If CashShuffle transactions are widespread, it will make Bitcoin Cash very fungible. Suppose that some illegal acts were associated to a Bitcoin Cash transaction and you, for whatever reason, owned coins that were “linked” to it. If those coins are then blacklisted, it not only hurts you, it hurts the entire system.
With CashShuffle, everyone’s coins are being constantly tainted with everyone else’s coins. Blacklisting becomes totally impractical because even if you come up with some definition for a blacklisted coins, the coins can just be reshuffled again and now more and more people share the taint. You can’t ban all the coins. The plausible deniability is greatly magnified and that’s what we want: every coin is the same as every other.
The more CashShuffle is used, the greater the fungibility and privacy. With more transactions, we can get to bigger “ring” sizes. Imagine in the future 100 inputs and outputs in a transaction!
🌶: How is development being funded?
CashShuffle began with volunteer efforts. We received some funding earlier this year from CoinGeek to get us to a certain point and we appreciate that. We did request additional funds from them, but they haven’t decided to continue participating.
Since then, we have gotten some other funding from a few private donations. We also accept help from the community. It’s a good thing to support if you value privacy and fungibility in Bitcoin Cash.
CashShuffle team donation address: bitcoincash:qzlfr2xd35mk8nez9pla5065cu5udrrtfv8cy2c0ed
CONTINUE THE SPICE and check out our piping hot YouTube channel. Our podcast, Milk, might help sooth that crypto burn. Follow CoinSpice on Twitter. Join our Telegram feed to make sure you never miss a post. Drop some BCH at the merch shop — we’ve got some spicy shirts for men and women. Don’t forget to help spread the word about CoinSpice on social media.