I’ve loosely followed cryptocurrency for almost a decade. In 2011, I briefly mined Bitcoin (and Litecoin, when it became clear that GPU mining BTC was unlikely to net me much of a reward). Bitcoin’s proof-of-work algorithm to create a trustless ledger was a true innovation in decentralized systems, and Ethereum’s expansion of it into a general compute platform was another giant leap. But looking at the state of the world right now, neither seems poised for the level of success that is evangelized.
I am bullish on cryptocurrency in general. Our existing monetary system already operates on a digital ledger, and reducing institutional trust is a good thing. Moving money and tracking ownership is too important to leave in the custody of private institutions that have a long history of looking out for number one. Yet both Bitcoin and Ethereum strike me as being an imperfect fit for mainstream financial products. Some problems I see:
- Block discovery is too long to be used for payments.
- High volatility limits use as a method of payment.
- Smart contracts are too unreliable for institutions.
These problems are substantial hurdles that Bitcoin and Ethereum will have to face in the coming years.
I'm going to assume the reader is familiar with how cryptocurrencies operate, at least at a high level. The YouTube channel 3Brown1Blue has a fantastic explanation of the proof-of-work algorithm, and Coinbase has decent simple explanations of common cryptocurrencies and related topics.
Long block discovery
Bitcoin has notoriously long transaction times, taking up to an hour to fully settle on the network. This isn’t an inherent property of Bitcoin. The core developers have chosen to keep block discovery times averaging about 10 minutes and the amount of data per block low, which limit transaction latency and throughput respectively. Because proof-of-work requires several blocks to be found before a transaction settles, the transaction time is a multiple of Bitcoin’s 10-minute block time. Ethereum’s block time is 15 seconds, for a point of comparison.
The transaction time is a multiple of Bitcoin’s 10-minute block time.
This puts Bitcoin transactions at a speed somewhere between an ACH transfer and a credit card. It’s not fast enough to use at the corner store, but it could work for some sort of payments app; a slow Venmo or Square Cash. Ethereum is much better, but its 15 second block time means transactions usually settle in about 3 minutes. This is suitable (if a little slow) for a payments app, but far too long a wait if you’re checking out with a line.
There are serious efforts to address this. The lightning network is way for two parties to confidently settle numerous transactions off-chain, only bringing it back onto the chain once they've completed their transactions with each other. With enough individuals maintaining these payment channels, a payment could occur between 2 parties without a direct connection by making multiple "hops" where connections exist. The lightning network is currently operating in a limited capacity, and in the future it could extend to cross-chain payments—acting as a compatibility layer between different protocols.
Price volatility and new currencies
Volatility causes fewer direct problems than slow transactions, but it makes it difficult to use as a means of transfer. The long transaction times and volatility exacerbate market risk, the potential that the currency’s value will decrease by the time the recipient is able to sell what they’ve been given. Steam stopped accepting it in late 2017 for exactly this reason.
Those paying suffer the same market risk in the other direction. The currency might increase in value, encouraging you to hold onto it rather than spend it. If you were paid with Bitcoin last week, you don’t know how much purchasing power it will hold next week. The macro-scale impact of this volatility is visible in the decline of BTC as a payment option and the rise of the “hodlers.”
If you were paid with Bitcoin last week, you don’t know how much > purchasing power it will hold next week.
This price volatility has some organizations attempting to hybridize fiat currency with cryptocurrency, leading to a rise in “stablecoins”—digital assets anchored to real-world currencies. A notable example of this is Tether, USDT, a representation of the US dollar on the blockchain. These introduce new risks: Tether has had major delays fulfilling withdrawal requests, and is accused of not having adequate balances to fulfill its obligations.
The driving force behind the volatility is that cryptocurrencies are treated as stock in the projects that issue them. Cryptocurrency enthusiasts behave like speculators, hoping to buy low and sell high. The price fluctuates significantly based on project news and the cryptocurrency market overall, which has the Securities and Exchange Commission keeping a close eye on the space.
Smart contracts aren’t reliable
Bitcoin doesn’t have a concept of “smart contracts” in its protocol, but it’s a core innovation of Ethereum. Ethereum provides guarantees about execution and integrity of data for smart contracts, but they’re still arbitrary computer programs. While this opens up the fascinating world of decentralized apps, it’s not ideal for applications that require a high level of security. It's bad if CryptoKitties has a bug allowing attackers to steal your unique cat, but it’s life altering if attackers steal all of your money.
Many of the potential applications of smart contracts demand such high security. Vitalik has tweeted about non-financial applications, but verifying college degrees would be similarly catastrophic if something were to go wrong.
As arbitrary computer programs, Ethereum’s smart contracts provide no guarantees that they will execute correctly. This relates to the idea of “correctness” in computer science: How do you prove, without executing the code, that it will do what you expect? In the world of Ethereum, your only option is a careful review of the code, with some limited assistance from auditing software. This is hardly compelling to major institutions that already operate systems with a high level of confidence.
Ethereum’s smart contracts provide no guarantees that they will > execute correctly.
Major bugs in high-profile projects shows how difficult smart contracts are to get right. Even Coinbase, arguably the most trusted name in cryptocurrency, had a bug allowing users to credit their account with unlimited Ethereum. The most infamous is the DAO hack, which was reverted by a hard fork of the Ethereum chain and lead to the Ethereum/Ethereum Classic split. Parity, a wallet written as a smart contract, is described as having been “audited by the Ethereum Foundation’s DEV team, Parity and others from the community.” Yet it suffered multiple hacks and bugs.
Because the Ethereum protocol acts as a runtime for smart contracts, even smart contracts that are well implemented are vulnerable to bugs introduced at a protocol level. A recent protocol upgrade, codenamed Constantinople, was delayed after ChainSecurity discovered it would make previously secure smart contracts vulnerable to a “reentrancy attack.” It’s difficult for me to imagine any such institution making a significant investment into a technology that has a consistent track record of security vulnerabilities and hacks.
What does this mean for Bitcoin and Ethereum?
Bitcoin’s flaws are not inherent to the protocol, but politics within its development means that it’s unlikely to change. The entrenched community of miners and supporters may make it impossible to include the large changes needed to make it competitive with more modern blockchain technologies.
Ethereum’s problems are perhaps more fundamental and might be harder to fix. The premise of the technology is that anyone can write code for a global computer, but I struggle to see use cases that aren’t better served by a centralized system. This has borne out in the projects that have been built on Ethereum; the most widely successful smart contracts (excluding ERC20 tokens) are for trading or games. These products are popular with cryptocurrency enthusiasts, but only serve those who are already actively interested in the space.
Cryptocurrencies have become self-serving, insular communities. Far from what was proselytized—a global equalizer, a means of transfer unrestricted by any one party—they have become just another type of investment for those with wealth to invest in. Neither Bitcoin or Ethereum have demonstrated that they’re well-suited to solve any of the world’s problems. I don’t believe that either of them fill a real need in the world in their current state, and their ecosystems and communities work now only to fill their own needs.
Top comments (8)
Couple of points.
1) Blockchains don't have to be proof of work based. I'm using Stellar, which is proof of stake based. You can clear transactions in about 4 seconds with throughputs of hundreds per second. And they are super cheap. Bitcoin and ethereum are essentially legacy, first generation blockchains: they are not the final answer of what is possible. Ethereum has been meaning to get to proof of stake and sharding for several years now. I consider it a proof of concept alpha product at best in its current form. It's not actually fit for production unless your usecase tolerates having only a handful of transactions per day that each take minutes to hours to clear. This is not the case for most real world applications which is why ethereum is used exclusively for stuff that doesn't matter to real users. Like doing ICOs, gambling apps, scams, and mostly speculative trading on bullshit coins by people who have no clue about technology or any appreciation of it. It's a greed driven ecosystem.
2) Stellar and other proof of stake systems out-compete the existing financial system on cost. The whole point of the existing system is that banks operate artificial control points where they can tap into the international money streams. Their whole premise is that you have to do that via them. This means certain transactions are just impossible currently. Any globally available database is a workaround to that. Proof of stake means parties can coordinate via a trusted data base where none of the stake holders has the ability to cheat. That's basically what banking historically try to do: coordinate transactions in a tamper proof somewhat secure way. Turns out that a block chain database is cheaper than sending some dude with paper & signature by horse across europe. And modern transactions in banks are surprisingly not that much more sophisticated. Yes they use computers and (non blockchain) ledgers but most of that stuff is ancient technology.
3) Stellar does not actually do smart contracts and instead has native features that you can use as primitives to do much of the same things that people try to do with smart contracts. This is easier, more fool proof, and gets the job done. You can create and launch a token in minutes if you know what you are doing. ERC20 is very risky. Programmers make mistakes. Mistakes in financial contracts are expensive. Stellar side steps that by having a more limited but good enough system of primitive operations aimed to facilitate asset tracking, trading, time limited transactions, etc.
4) Stellar, Ripple, and several less fashionable but usable (i.e right now) blockchains are already being used by many financial players. This stuff is creeping into the existing system and becoming a part of it. There's a quite a bit of R&D money floating around in this space and there is rapid progress in this space. I predict this will take a few more years after which there will be a bit of consolidation.
IMHO blockchains as such are just jointly operated databases. The crypto eutopian BS is just that: BS. But having a solution to coordinate transactions between parties that fundamentally can't trust each other is a useful innovation. Historically banks have charged us for the privilege of operating as a trusted intermediary. Cutting them out of the equation can save a lot of money and also enables doing transactions in much larger volume and smaller scale. Doing international micro transactions via bank transfers is not a thing. It's too tedious and expensive. Doing that via payment channels on top of a blockchain is super easy to implement and dirt cheap to do. I can do a hundred thousand transactions on stellar for about 10 dollar cents (or whatever the XLM is doing these days). I can't do even a single transaction in the current financial system for that.
1) I don't understand potential implications of proof of stake well enough to discuss it, which is why I left it out. I might have brought it up at the end as a potential solution to Ethereum's speed problems, but since my biggest concern with Eth is the threats faced by smart contracts, I didn't want to distract.
2) Stellar isn't proof of stake actually! It's plain old consensus, similar to regular distributed systems tools like Raft, with the biggest difference being that each node defined which other nodes in the network it trusts. The concensus algorithm is called "federated byzantine agreement," which is a novel algorithm produced by members of SDF.
3/4) Stellar and Ripple are two currencies that I think have a high potential to do good things in the world--I actually recently started working for SDF, so I didn't want to shill too hard while bashing Btc/Eth :) Stellar is really exciting to me, the asset issuance and smart contract models it has feel really clever, and it's consensus algorithm is a big improvement for decentralization over what Ripple uses.
Nice write up. Thanks for introducing Stellar to me!
One thing though, I don't see banks being cut away as trusted intermediaries in the foreseeable future. Not even by blockchains. Banks do provide one vital feature that cryptocurrencies currently do not - guarantee against fraud. You wrote it yourself - "Programmers make mistakes". If your bank account gets hacked, there are rules established on what happens next. If your crypto wallet gets hacked, well ...tough luck.
Yup agreed. One of the big issues I see with the usability of cryptocurrencies as payment platforms is the complete absence of tools to fight fraud or theft. One interesting thing (imo) about Stellar is that it models the trust you place in a token issuer explicitly--in order to hold any given token, you have to open a "trust line" with the issuer.
I agree, it all boils down to trust and whom you trust. However, the presence of a tamper proof medium to exchange information about exactly which transactions did or did not take place is highly relevant.
Currently, people rely on banks and other financial institutions to secure them against fraud, theft, etc. Key management is the equivalent of keeping your cash in a box under your bed. It kind of works until the place burns down or you get robbed (at gun point or otherwise). Probably a bad idea to store millions $ worth of value like that, even if you live in the equivalent of fort Knox.
It's much smarter to outsource that kind of risk to somebody that knows how to keep those keys properly and insures you against the inevitable risks. So yes, bank like institutions do have a role. However their role is going to be more limited than in the past where their role also extended to the information transfer across the globe, the speed at which this happened, and control over the channels over which this happened.
With a blockchain, once you've signed a transaction and it's record has become part of the blockchain, it is an immutable fact that anyone can verify. Banks don't add a lot of value here other than agreeing that yes this thing happened exactly as recorded on the block chain. It's the steps before that where they add value and indeed securing the potential abuse of keys under their control.
With a proper blockchain, the cost of doing such transactions is extremely low. If you get mining out of the equation, it is ballpark similarish to any good old database transaction because that is literally all it is. So it all boils down to preventing cheating, delegating trust, and keeping transaction cost low.
I'm excited about blockchains precisely because of the low cost. It enables a whole lot of new usecases where currently most people can't be bothered to transact at all and where banks flat out refuse to help you do the business because their cost outweighs the profit or is too insignificant to bother to support you. There's this huge long tail of transactions that happen outside of the financial system because the transactions are just too small or insignificant to bother doing the accounting. "Here's my 2 $cents" is a famous expression of an opinion without much value. Yet, it is some value and it is hard to capture that value using existing tools when transaction costs are vastly more expensive than the actual transaction.
Transaction time on Bitcoin is an issue as long as you're willing to ignore the Lightning Network, which has become the go-to fix. While it's not used at scale yet, and needs some time to mature and grow, it solves the problem of slow transaction times, without giving up the trust that Blockchain provides.
Price/Value volatility is also not an issue worth thinking about. While Bitcoin and its competitors are incredibly volatile at the moment, it would be shortsighted to think that won't change as adoption increases and regulations become available, volatility will seize to be an issue.
On the topic of Smart Contracts, there's a lot you're ignoring too. While the current design of Smart Contracts might be sub optimal, that doesn't mean there isn't a solution or design that solves those issues. The tech is incredibly young and proper standards have yet to find their way into that market.
I fundamentally disagree with the way you're coming at some of these issues, as I think you're looking at them in a "nothing will change" kind of view. Crypto is incredibly young and underdeveloped. If there wasn't so much money to be made from it, it wouldn't be a technology most of us would've heard about yet. It's going to need years to develop and be regulated before it becomes something we use every day. Most of the issues plaguing the Crypto market today will become irrelevant in the next couple years and some of them have been fixed already. Consensus just needs to be reached on which solutions we want to use and which will fall by the wayside.
That's fair, omitting the work being done on the lightning network is a big hole. I'm aware of it, but it didn't come to mind while I was writing this. I'll add a mention of it since that's a serious effort to address this problem.
I agree volatility will decrease as a usage increases, but to me, it's a chicken-and-egg problem: volatility is a major impediment to increased adoption. I'm sure it will settle down once some of the bad actors are removed via regulation and once some of the pending investigations settle down, but I also think there will be a major downswing associated with those events.
The tech is very young, but standards are insufficient to address the problems I see with Solidity as a language. ERC20 is a standard, but there are still poorly implemented tokens. I see it as the same reason you wouldn't want to write, e.g., aircraft control software in JS—you can't verify the code in advance due to language limitations. Formal verification is an area of research in language design, and it's definitely possible for Eth/other smart contract platforms to improve in that area, but it'd be a drastic change and I don't see it being a priority any time soon.
It is young, and I expect it will stick around in some form, I just don't anticipate that these two examples will be the technology that remains at the forefront.
Thanks for this article
Some comments may only be visible to logged-in visitors. Sign in to view all comments.