Why We Chose Bitcoin Cash Over Litecoin
We are long-time supporters of Bitcoin. We spent almost a year and a half of our lives building routed payment channel technology for Bitcoin in order to make micropayments on Yours possible. Our technology is similar to the Lightning Network, but does not depend on segwit. We were the first group to demonstrate a routed micropayment on Bitcoin.
Unfortunately, in early 2017, fees on Bitcoin got so high (at about $3 per transaction) that even with payment channels we couldn't get fees low enough for micropayments. The cost of opening a channel was about $5, which is a lower bound cost for onboarding a user. That is far too high for a social network. That doesn't even include the funding of the channel itself, which would have to be at least $50 to make the fees economical. See this review of the economics of payment channels for more information.
We realized that Bitcoin no longer made sense for our use-case, so we went shopping for an alternative. Ethereum was the next largest candidate, but it was so technically different from Bitcoin it would have taken too long to pivot our infrastructure.
Litecoin was the largest Bitcoin-like blockchain which meant pivoting our infrastructure would be simple. Furthermore, Litecoin had an extensive economic infrastructure including vast support from wallets, exchanges and merchants meaning it would be very friendly for our users. In May we announced we were switching to Litecoin, and then we launched our alpha shortly thereafter. Charles Lee, the inventor of Litecoin, became one of our first users.
However, the alpha was just an alpha, and we had a lot of work to do to make our payment channel technology work well for users. We have now been through three iterations of the payment channel system in order to make it work as intended: Be able to cash in, be able to send payments with one click, and be able to cash out.
There are several technical properties of payment channels that make them challenging for user-friendliness:
- Opening a channel cannot happen instantly. You must wait for the funding transaction to confirm before being able to use the channel in order to have strong security. We worked around this by indicating to the sender that the payment had succeeded even though it had only just started. In about 50% of these cases, the recipient never received their funds due to being offline.
- Closing a channel cannot happen instantly. You must wait for the CSV delay to be able access your funds after closing a channel. For security reasons this must be a long time, such as many days or weeks, which are painful for users who want to access their funds immediately. We chose to set this to 30 minutes, which was about as low as we could possibly justify from a security point of view, but it was still irritating to users.
- The user must be online to receive a payment. This is an unrealistic assumption for a social media app, so we invested enormous effort into our protocol and infrastructure to make this matter less, but it is not possible to fully allow recipients to be offline while preserving the economic advantages of payment channels.
- The user must continuously be online in order to monitor for the broadcasting of old commitment transactions. (This can be solved by moving some of the monitor logic to a server, but that was a technical challenge that we never got around to due to the abundance of other issues that had higher priority).
- Payment channels can be in weird states where payments are not possible for reasons than seem obscure for the user. For instance, users could not make micropayments as the first payment across a channel or the value would be below dust and thus the channel could not be closed. Another common case was that the number of outputs could increase greatly due to too many recipients being offline, increasing fees beyond the point where payment channels made economic sense.
- Payment channels require much more state than a normal bitcoin wallet, which has to be backed up somehow and synced across devices. We never fully implemented backup or sync during our alpha due to the technical complexity of doing so, which meant that the user's wallet could not be accessed on other devices and funds would be lost if their browser database were cleared. (This problem can be solved with a greater investment in backup and sync).
- Payment channels are at least 10 times more complicated than a normal Bitcoin wallet and require at least 10 times as much code. Although this would theoretically not lead to problems for end-users, in reality in meant we had many hard-to-fix bugs in our web of complicated code that lead to many minor problems for users. The result was that our payment system was only about 50% reliable. We estimated it would have taken another six months of full-time effort to fix all of the subtle issues to improve reliability to 99%.
- Web browsers have the technical capability to do client-side payment channels, but we had to use unusual advanced web technologies in order to make this possible, such as service workers. Due to legacy issues on the web, these advanced technologies have unusual APIs which lead to complicated and buggy code that was very hard to understand for those of us who wrote it, and virtually a complete mystery to anyone looking at the code for the first time. This is a unique problem for web technologies, but the only work-around would be to use native apps, which introduces a requirement that our users would have to download an app, which is a usability barrier we were doing everything to avoid. Furthermore, many of these web technologies (service workers in particular) do not work on all browsers, leading to a poor experience for most users.
The most important takeaway is that although we had payment channels working, there was still an enormous challenge in front of us to make them work well. This meant that our product all but stagnated while we spent at least 90% of our time fixing payment channel edge cases and usability problems.
We watched the launch of Bitcoin Cash with great interest, because the commitment of the Bitcoin Cash community to on-chain scaling was music to our ears. Theoretically, with sufficient on-chain capacity, fees for on-chain transactions would be low enough to not need payment channels at all.
When it became clear that Bitcoin Cash was viable and could not die due to the EDA, we announced we were switching to Bitcoin Cash. We swallowed our pride and archived 10,000 lines of payment channel code and started using on-chain Bitcoin Cash transactions. This immediately improved our payment reliability to 100%, and relieved us of so much development burden that we have been able to move about 10 times faster iterating our product. We called the new product our beta and began adding features as quickly as possible, such as voting, paid comments, editing, a new UI, and a lot more.
The primary difference between Bitcoin Cash and Litecoin is that Bitcoin Cash has fees for on-chain transactions that are about 0.15 cents most of the time. That is 0.0015 USD. Litecoin has fees of about 5 cents. Although Litecoin's fees are low by most payment system standards, they are not low enough to support native micropayments. Litecoin still needs payment channels for micropayments, which means the cost to our company is enormous to continue to develop and maintain the payment channel technology.
Furthermore, the Litecoin community has a philosophical overlap with Bitcoin and is not committed to on-chain scaling. The Bitcoin Cash community, by contrast, is fully committed to on-chain scaling and intends to increase the block size as needed in order to ensure that fees remain low. This is a critical difference. By switching to Bitcoin Cash, we know we can rely on low fee transactions indefinitely without the need for payment channels. But with Litecoin, it was possible we would end up in the same situation we are today with Bitcoin, which is with fees so high that even with payment channels they are cost prohibitive for micropayments.
We consider ourselves blockchain agnostic and will use whatever technology gets the job done best for our users, which means reliable payments, low fees, and easy onboarding and offboarding. Bitcoin Cash is the best choice for Yours.
The argument for Bitcoin Cash is severalfold:
- Fully p2p payments between users, where our users hold their keys and our company does not, meaning Yours Inc. is not a custodian of user funds. This gives our users sovereignty over their funds and means that our business has a substantially lighter regulatory burden saving us millions of dollars in legal fees and hassle.
- The wallet works on every device, including iPhone and Android, with no need to download an app.
- The wallet is backed up and synced across devices (after encrypting it with a hash of the user's password). This is trivial for a Bitcoin Cash wallet because the wallet is just a mnemonic and has no state. This means the user can access their funds simultaneously on many devices.
- Fees that are so low they are all but unnoticeable to end users and work for all human-scale transactions all the way down to 1 cent and even lower. (Payment channels may still be necessary for streaming payments and other payments that are so small they are below the human threshold).
- A community committed to on-chain scaling which ensures (or at least makes it very likely) that the blockchain will continue to function as promised indefinitely.
- A rapidly growing economic infrastructure that is only slightly behind Litecoin. That means most wallets and exchanges support Bitcoin Cash for easy onboarding and offboarding. The economic infrastructure is continuing to grow rapidly and we expect it to achieve parity with Litecoin by early next year, including eagerly anticipated support from Coinbase.
Litecoin is our second favorite cryptocurrency after Bitcoin Cash. We currently use Litecoin to enable credit card onboarding via Coinbase by automatically Shapeshifting Litecoin to Bitcoin Cash. We also support direct Litecoin onboarding via Shapeshift. If we ever add additional cryptocurrency support to Yours, Litecoin would probably be the first, albeit only useful for larger payments as we would rather defer work on the payment channel system and focus on simple on-chain transactions. We expect Bitcoin Cash to continue to be useful for payments as low as 1 cent indefinitely.
See behind the pay wall for the other reasons why we chose Bitcoin Cash.
38 of 40 reviewers say it's worth paying for
2 of 40 reviewers say it's not worth paying for