There is a belief Bitcoin’s and blockchain’s poor performance can be ‘solved’ if enough smart people devote themselves to it.
This is just wishful thinking because as Scottie says, “Ya canna change the lays of physics”. Consensus takes time. You can play around with that but you can’t escape it.
The obsession with scaling blockchain to compete with VISA or other high-volume transaction networks means we’re wasting time trying to solve problems that are not a good fit for the technology – while at the same time – ignoring more productive, but more prosaic, areas of inquiry.
One school of thought is that Moore’s Law will allow us to keep increasing Blockchain’s capacity indefinitely.
However, Blockchain’s performance is determined by network performance, as it is the network that limits the number of transactions in a block (block size) and the time between blocks (dwell time). Networks don’t obey Moore’s law nor will their throughput increase exponentially. Bitcoin has also reached its current performance limits at around 1/10,000th of VISA’s transaction volume. Reaching VISA’s current volume involves creating a gigabyte-sized block every minute, which is clearly unattainable. And you still need to consider that VISA’s volume is a moving target.
Another approach is to reduce the size of transactions, packing more transactions into each block. This is one of the features of the recent Segregated Witness proposal. However, there is a lower limit to transaction size.
Playing with parameters by increasing block size, or decreasing transaction size or dwell time can provide a significant one-time boost and optimise blockchain for today’s network, but it won’t deliver the open-ended growth required for blockchain to supplant VISA or other high volume exchanges.
Another thing to try is to off-load work from the main blockchain.
One approach is to create a new blockchain, a side-chain and use Bitcoin minted on the main blockchain to create private money on the side-chain. Do this 10,000 times and it’s all good. However, we need to fund all these side-chains, possibly at US$650k per side-chain, to create the private money they require. And then all we’ve done is recreate free banking with its attendant high transaction costs due to the need to transfer value between side-chains and maintain them.
Another approach is to bundle transactions, with one or two Bitcoin transactions representing a bundle. The usual metaphor is a bar tab: you create a special transaction to open the tab, collect the tab-transactions, and then close the tab. Most micropayment proposals work in this manner.
This approach is limited by the exposure that counter parties will tolerate, and assumes that there will be many repeat purchases. The Lightening Network proposal alleviates this somewhat by enabling payments between networks of open bar tabs, but it’s prediction of each account only requiring two transactions a year is wildly unrealistic.
Cryptocurrencies are poor stores of value, and it’s unlikely that many people will want to stash a significant amount of their cash in a cryptocurrency based payments network. Even if these networks carry other currencies, employees are often paid monthly while firms manage cashflow weekly, and they’re unlikely to leave a payment channel open for longer than that.
Off-loading work adds complexity to a solution that many already find to be overly complex, and while there’s a payoff, practical considerations will severely limit the benefits.
You cannot break the laws of physics
Finally, we might ignore the fact that that if we want the guarantees blockchain provides, then we need to push all transactions through the narrow funnel that is the consensus process.
Tree chains, for example, replace the chain of blocks with a tree of blocks. This enables miners to work in parallel as they can mine the tree’s leaves separately. At first glance, a tree chain with 10,000 leaves would seem to be 10,000 times faster.
However, to ensure that transactions are globally unique (and avoid the double-spend problem) we need to create ‘propagation’ blocks to propagate state between the leaves. What we have then is a matrix, rather than a tree. We’ve improved the block creation rate at the expense of creating a lot of new propagation blocks which also need to be mined.
We’ve also increased the amount of noise on the chain. Rather than needing to wait for 2-3 blocks to be comfortable that our transaction was accepted, we now need to wait until our transaction has been propagated to a super majority of the other leaves. This propagation time increases with the number of leaves. It also costs money, since the miners creating the propagation blocks will want to be paid. The best we can hope for is a sub-linear improvement in performance.
A similar approach is blockchain sharding, breaking up the working set so that multiple blocks can be created in parallel. The challenge is how you slice up the working set, as you need to group related transactions to avoid double spending.
The solution is to create a team of super-peers who collect global state and then validate and bundle the transactions, passing bundles to groups of miners. What we’ve created is a chain of trees, with the trees rooted in the blockchain. The super-peers work on the blockchain and the miners work on groups of transactions attached to each leaf.
Sharding’s performance is still determined by the dwell time and the number of transactions considered by the super-peers, so we have the same transaction throughput. If we measure performance in terms of transaction throughput then we haven’t done much.
Both of these approaches ignore the fact that the requirement for global consistency is constraining performance, not the mining activity itself.
What to do
A lot of smart people have been working on the Byzantine problem (which blockchain is a partial solution to) for over 20 years and it’s well understood. We know the shape of what is possible, and current focus is on incremental improvement and niche applications where we can relax a constraint.
If you want the guarantees of consistency provided by blockchain then ultimately everything must pass through a single consensus processes. This is not a programming thing, it’s the laws of physics. We’ve known this for nearly a couple of decades, but unfortunately folk keep proposing perpetual motion machines.
We can easily do a lot better than Bitcoin’s few transactions per second, but the only parameters we have to play with are dwell time, block size and the strength of the consistency guarantee. Assuming that some smart person is just going to walk in and solve this problem is hubris.
Blockchain performance might always suck, but that’s not a problem
The sweet spot for blockchain – and distributed ledgers – is low volume, high-value exchanges. There’s a lot of interesting problems to solve in this space, from tracking diamond provenance through contract attestation and so on. It’s just that the pie in the sky, blockchain-taking-over-the- entire-financial-system predictions are likely wrong.
There are a lot of interesting problems that blockchain can solve and a lot of value to be realised. Some organisations will find the technology disruptive, particularly traditional intermediaries who will be disintermediated. Others, not so much.
What is clear though is that blockchain’s performance is not a problem that needs to be ‘solved,’ as the technology’s future lies elsewhere.
. Private money is where a private institution uses an asset to back the creation of a new, private, currency.
. Assuming that Bitcoin’s current market capitalisation is simply evenly distributed over the 10,000 side-chains.
. Free banking denotes a regulatory environment where banks are not subject to any special regulations, allowing them to issue their own paper currency. As these currencies are issued privately, without government involvement, there is no lender of last resort nor is there any government insurance for banknotes or deposits.
. We note that mining volume is an additional constraint for Ethereum, as serialising mining as Bitcoin does limits the number of computations per block. Sharding an Ethereum chain might improve its performance as it would enable smart contracts to be processed in parallel.