Skip to content

Instantly share code, notes, and snippets.

@christroutner
Last active October 21, 2022 00:39
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save christroutner/98ce8034613f80d71a5276dff450560a to your computer and use it in GitHub Desktop.
Collaborative Coinjoin Flipstarter Rough Draft

Overview

Users of Bitcoin Cash value their financial privacy. The community has built a powerful tool in the form of CashFusion, which coordinates CoinJoin transactions, in order to restore financial privacy. But over the last few months, the following problems have arisen with CashFusion:

  • Many users are reporting a lack of fusion transactions. They are doing everything right, but the transaction formation is consistently failing. Despite many brilliant minds discussing it, there appears to be no clear solution.

  • The protocol is complex. Despite many brilliant and well funded people making the attempt, it's only been incorporated into two wallets: Electron Cash and Pokket. And Pokket is no longer maintained.

  • There is only a single server for coordinating fusions. More than one server is undesirable because that creates liquidity issues. And server hosting, in light of the recent OFAC listing of Tornado Cash, has caused the older server host to stop hosting it. A new server has been created, but the legal liability of hosting a coordination server is still problematic.

This Flipstarter campaign is not intended to criticize CashFusion. CashFusion is a valuable tool that will continue to provide value to the Bitcoin Cash community for the foreseeable future. This Flipstarter campaign seeks to compliment CashFusion by creating a second app for participating in CoinJoin transactions. It's bad for the utility of BCH if there is only a single tool for restoring financial privacy, and there is no alternative when that single tool has issues. The app funded by this Flipstarter can take some of the pressure off the CashFusion team.

The Ask

$12,000 USD in Bitcoin Cash is sought to fund the initial development of a desktop app. This desktop app will run on Windows, Mac, and Linux. It will be a Bitcoin Cash wallet that will coordinate CoinJoin transactions, similar to CashFusion in Electron Cash. It's advantages are:

  • No coordination server is used. The coordination happens peer-to-peer.

  • The JavaScript libraries it uses can be easily exported to mobile wallets, web wallets, and other BCH apps.

  • This protocol can easily be adapted to work with SLP tokens (or the new CashTokens protocol hitting mainnet in May 2023).

  • Your privacy increases with the more rounds you participate in. Want more privacy? Send your UTXOs through more rounds.

  • It's based on IPFS and the Bitcoin Cash blockchain, both of which are highly censorship resistant.

Campaign Details

This campaign is only seeking $12,000 USD in Bitcoin Cash. This is enough to fund the following 'core' goals:

The timeline for achieving these goals is three months.

The point is to only create a minimum viable product (MVP), to simply nail down the most basic features. Once these core goals have been achieved, there will be a lot more information for the developers and the wider BCH community to consider. We'll collectively be in a much better position to understand any limitations and additional features (like making it work with tokens). Funding improvements and new features can be done through future Flipstarter campaigns. Developers will be able to fork the software and innovate.

In this first iteration, the security of the CoinJoin protocol is not expected to stand up to State or Corporate actors, but simply to prevent a merchant from beign able to find your crypto stash through a block explorer. It will be usefully secure, and be in a position to iterate and improve.

A Telegram channel will be created for developers and early adopters to solicit feedback and obtain assistance.

Who I Am

My name is Chris Troutner. I've been an active developer in the Bitcoin Cash community since 2018. Most people in the space know me, and I'm active on Twitter. A few highlights about my career in Bitcoin Cash:

  • I previously had a Flipstarter campaign of $16,000 USD funded by the BCH community to build the psf-slp-indexer. This indexer is currently running a significant amount of the SLP infrastructure on the Bitcoin Cash blockchain. It's used by companies such as Bitfinex (Tether) and Sweet.io.

  • My team won the grand prize at the 2020 CoinParty Hackathon.

  • I worked at Bitcoin.com from 2018 through 2020, helping them build out several tools for software developers who wish to incorporate Bitcoin Cash into their projects. After I left Bitcoin.com, I started two organizations:

    • FullStack.cash sells infrastructure and freelance development to businesses building apps for Bitcoin Cash.

    • The Permissionless Software Foundation is a collective of JavaScript developers. Our mission is to develop, promote, and maintain software that makes it easy for individuals to protect their privacy, circumvent censorship, and engage in economic activity.

Criticisms

I presented the content of this Flipstarter to the CashFusion Telegram channel to get feedback before launching it. I received the following criticisms, which I want to address here:

One criticism is that the Collaborative CoinJoin protocol is 'trusted'. By that, they mean that the one user who initiates a CoinJoin transaction learns about the other participants inputs and outputs. So you're 'trusting' that the user is not a bad actor. There are two responses to this criticism:

  • Only one user learns about the inputs and outputs for that one round. Their ability to track the outputs ends when those UTXOs enter a new round (where they did not initiate the new round). Sending your UTXOs through more rounds ensure more privacy.

  • This Flipstarer is only building an MVP. More important than the CoinJoin protocol is the packaging (a desktop app that runs on the major OSs) and the ability to coordinate wallets. It may be decided to replace Collaborative CoinJoin with CashShuffle, or we may find improvements to Collaborative CoinJoin and update the protocol. The point: along the way, we will inevitably find ways to improve the user experience and any security issues. This first iteration focuses more on building a modular architecture for future iteration, and less on achieving perfect security on the first try.

A second criticism received was that the CashFusion team is working on a peer-to-peer (p2p) protocol for removing the need for the central server in CashFusion. It is really up to the BCH community and those who donate to this Flipstarter to answer that criticism. Here is my thought process:

Electron Cash is written in Python, and time has shown that only a handful of people contribute consistently to it. This new CoinJoin wallet will be written in JavaScript, and the development will be done completely in parallel to the Electron Cash and CashFusion teams. I think it would be a healthy move for the BCH community to fund parallel development teams, so that they are not too dependent on either one. I'll know if other people in the BCH ecosystem echo this attitude, if this Flipstarter gets funded.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment