For many years, there has been a recurring argument against on-chain scaling based on the idea that the blockchain is a “database that must store everything, forever”. This argument is often accepted uncritically, even among some big-blockers who accept the premise, but argue that larger blocks are still feasible even with all nodes “storing everything forever”.
The recent emergence of applications such as Memo (memo.cash) has raised concerns for some Bitcoin Cash proponents [1]. These people want Bitcoin Cash to be the best form of money possible, and the idea of alternate uses using up limited block space is seen as having a negative impact on the primary use-case of money.
In this article, I will argue that the “storing everything forever” argument is flawed, and is a case of the Public Goods fallacy. This fallacy is used as justification for central planning which should be rejected in favor of a market-based approach. With such an approach, we don’t need to worry about block space being crowded out, or that non-monetary uses will detract from Bitcoin Cash as money.

Block Space as a Public Good

Although the concept of a “Public Good” is a flawed economic concept, it is widely accepted by many economists and mainstream publications [2]. In this article, I will not delve into the general theory of Public Goods, there are many good resources elsewhere explaining why the concept is unsound [3]. Instead, this article will focus only on the specific case of blockchains, and the technical and economic reasons Public Goods arguments do not apply.
The idea that blockchains are a type of Public Good rests on two premises:
  1. That blockchains function as an “add-only” database, that grows continually, and where all the nodes on the network must store all the data forever.
  2. That the costs of maintaining, storing, and serving up blockchain data are not borne by those who benefit from those services. Transactors pay an initial fee to miners, but then all nodes on the network must bear the costs in perpetuity.
This conceptual framework leads to attempts to centrally plan the network by implementing technical measures to limit excessive or unwanted uses of the blockchain. Some examples of such measures would be limiting the OP_RETURN size, the Segwit “witness discount” block weight accounting, and the block size limit itself.
A good example of the Public Goods argument was recently articulated by Vlad Zamfir of Ethereum, when he said “I think it’s crazy that the network would bear a cost forever, for a revenue earned once by a single party”. He then goes on to advocate the creation of some sort of network “rent” to mitigate the problem [4].
In the next two sections, I will discuss each of the two premises of the Public Goods argument in more detail.

Blockchain Data Structure

It is natural to conceptualize a blockchain as a large ever-growing database. After all, since blocks are always added in in ever-growing chain, it’s hard to see how it could be otherwise. Current full-node implementations typically store all the blocks in the chain, and anyone who has ever run their own full node knows that the size required to store the blockchain keeps growing year after year.
It is also easy to find examples of well known figures in the cryptocurrency community stating various forms of the “ever-growing database” idea:
Explaining what a blockchain is to lay audiences: "A database that stores everything forever - in other words: the most inefficient database on the planet." - Tuur Demeester [5]
Why you don't want a blockchain - 1. Storage: Everyone has to store everything 2. Bandwidth: Everything has to be broadcast to everyone 3. CPU: Everyone has to validate everything 4. Development: Everything is 10x harder 5. Control: Everyone collectively has control, not you - Jimmy Song [6]
To understand the problem with these statements, we need to zoom in a bit and look at the blockchain data structure in more detail.
The blockchain contains data that is cryptographically linked together in various ways: block headers are linked together in linear chain, transactions are linked to the block headers in Merkle trees, and transactions are linked to each other in a Directed Acyclic Graph (DAG) linking transaction inputs to previous outputs. Let’s think about why the blockchain is structured this way. If it were to be a giant database that required everyone to store all the data, then these structures would be overkill. For example, why build a Merkle tree instead of just hashing all the transactions directly together? The reason is that a Merkle tree allows us to prove things about a subset of all the transactions: we can prove that a transaction is included in a block without knowing all the other transactions in that block. In fact, this is what allows SPV wallets to function without downloading the whole blockchain.
Similarly, the blockchain data structure can be used to prove various other things without needing to possess the entire blockchain: that a transaction input exists, or that a particular output has been spent. Other facts about blockchain data may take more information to prove. For example, proving that a transaction is absent from a block currently requires checking all the transactions in the block. However, these proofs could be made efficient in the future with improvements to the protocol such as canonical transaction ordering [7].
As long as one node saves a copy of a transaction and a Merkle proof, they can prove to all others on the network that the transaction was in a block. This provides a mechanism whereby everyone does not need to store all the data forever; only those who value the data need store it, and they can prove its validity later. Similarly, other types of information are also provable with subsets of the blockchain data, and more can be made possible with future developments. Those who value proving certain facts about data in the blockchain will be able, and have the incentive, to save the necessary data without storing the entire blockchain.

Alignment of Costs and Benefits

We have established that it is possible for people to use blockchain without storing the entire history of data (SPV wallets do it everyday), but what about the incentive problem of “free riding” on those who serve up the needed data? We see this currently with SPV wallets: they rely on full nodes to store the needed data and provide it to them when needed. This puts a burden on full nodes for which they are not remunerated. If the number of SPV wallets grows faster than the number of full nodes, this imbalance will only grow greater.
One possible approach to this problem is to design limits to the system such that the cost of running a full node is capped. These limits can apply to block space, Sigops, UTXO creation, or any other parameter that results in a cost to node operation. This approach is often taken by designers of a system, as can be seen in Vlad Zamfir’s “rent” proposal, or Bitcoin Core’s block size limit.
It soon becomes obvious, however, that if demand to use the system grows, and becomes constrained by these limits, that they act as economic quotas. As with all quotas they cause loss of value and perverse outcomes.
Markets are the alternative to quotas. We just need to think of ways to enable and facilitate markets. This article will not go into great detail on market mechanisms, but the general principle is to design mechanisms that make it possible to pay for services when they are provided. Kristov Atlas recently wrote an article that gives a more comprehensive description of this approach, and previously Justus Ranvier has written on this topic [8, 9, 10].
An important aspect of these approaches is that they do not seek to predict or dictate what resources should be restricted, or what the relative costs should be. They just provide mechanisms that allow markets to develop if and when they are needed. Currently nodes provide data to SPV wallets for free. If they continue to do so, there is no need to force SPV wallets to pay for this service. This could be sustainable if serving SPV wallets remains a very low-cost activity, or if businesses choose to provide this service as a loss-leader. But it is also possible that the market will evolve such that wallets pay small fees for blockchain data services, for more reliable service, or to subscribe to fraud alert services. Designers of the system should not try to predict the exact shape of this market, they should simply facilitate mechanisms that make markets possible if needed.

Future vision

Let’s consider Memo as an example. What if it grows to be similar in size to Twitter? Recently an analysis of this scenario was published on Yours.org [11]. This article was a very interesting thought experiment about what could happen if an application such as Memo were wildly successful. The conclusion was that if it reached Twitter scale, Memo could generate enough data to fill 1GB, or even Terabyte-size blocks. It’s not unreasonable to be concerned with this finding. Bitcoin Cash holds out the promise to be global sound money, and it would be a shame if this aspiration were displaced by other uses.
We should not simply extrapolate directly from current memo.cash implementation to a Twitter-scale Memo. If it does achieve Twitter-scale, other changes and improvements would also take place. Let’s imagine for a minute what this could look like.
Imagine several dozen competing Memo apps that people can use on their smartphones or computers. These apps would connect to specialized Memo servers that provide them with the necessary data. There would be hundreds or thousands of these servers, and competing software server implementations. Some of these servers could support the memo apps in exchange for small micropayments. Hobbyists could run Memo servers for free, and others could be funded with advertising (inserting “promoted” memos similar to Twitter). These Memo servers could connect to each other through a Memo-specific network dedicated to memo.cash transactions. Non-Memo wallets could basically ignore the memo-cash transactions if they so chose.
For miners, Memo transactions would be treated the same as any other fee-paying transactions. If the network is able to do sharding, perhaps Memo-specific shards could be validated separately, with proofs that monetary properties of the shard are valid. Miners could prune old Memo transactions so that they do not need to store the entire Memo record. For new Memos that need old data to be validated, the miners could receive the needed data from Memo servers. Perhaps these transactions would need a higher fee to provide compensation for the extra effort needed to validate them.
Other applications could also similarly leverage the blockchain without crowding out the sound money use case. Perhaps hundreds or thousands of different applications and services could coexist using the Bitcoin Cash blockchain as a secure censorship-resistant base.
The scenario I paint here is just one possibility. The shape that the network takes will be determined through future economic and technical developments. By avoiding prescriptive planning, and embracing a market-based approach, it’s likely Bitcoin Cash will evolve capabilities and uses that we can’t currently predict or even imagine.

Conclusion

Lots of work remains to be done, but by following market principles and embracing growth, there is no obvious scale limit. Using market principles, the costs of different use-cases can be borne by those users. Various uses of the blockchain should be able to coexist in harmony, without crowding each other out. Bitcoin Cash can be used to power hundreds or thousands of useful services, and at the same time become the best money the world has ever seen.

“It never really hits a scale ceiling.” - Satoshi Nakamoto [12]


References

[2] Wikipedia Public Goods article: https://en.wikipedia.org/wiki/Public_good
[7] Presentation on Transaction Order in Blocks: https://youtu.be/j9vlTmhyeUo
[8] Kristov Atlas. Bitcoin: Calculation Problems: https://www.kristovatlas.com/bitcoin-calculation-problems/
[9] Justus Ranvier. Economic Fallacies and the Block Size Limit, part 1: Scarcity https://archive.is/Nq4V5
[10] Justus Ranvier. Economic Fallacies and the Block Size Limit, part 2: Price Discovery https://archive.is/BE4J6
 

$12.50
$35.20
Comments
  earned 40.0¢
There is also the possibility that in the future, with utxo commitments, some old blocks will be completely lost, and so also some memo.cash messages.
Is this a problem? I think not, because Bitcoin Cash is mainly a payment network, cash, and not a social network.
Will be there enough incentives to save all the blocks and so memo.cash will survive with all messages? Maybe, so good for it and everyone! :)
In both cases it will be ok, this until the Bitcoin Cash payment network will continue to work and being accessible to anyone, even “poor” people.
50.0¢
   8mo ago
25.0¢ 10.0¢ 25.0¢
  earned 15.0¢
Great post. I think there are two main drivers behind the concerns regarding block size from the many many posts I have read.
  1. People can't imagine how it is possible to scale onchain because no one is going to be able to host it. I think this driven comes from the personalization of their own understanding of the blockchain as permanent and the limitations on their own home computer. Most people don't realize that as computer developments become more specializations, they led to larger centralization in terms of data centers and servers. I.E. Similar to how there used to be power generators on every block, now there is massive power plants that connect to every block within miles. I imagine that within fifteen years when many of these scaling concerns will be legitimate, no one will have anything more than a dummy terminal at home.
  2. People don't internalize the cost of an offchain solution. Just because it is 'offchain' doesn't meant that it isn't just another network with its own storage, its own validation, and its own processing power. Splitting the network up into one thousand pieces makes the whole system weaker not stronger.

Ultimately BCH needs to take a "show not tell" approach to scaling. We have tried for years to convince BTC not to go down this road so if we want to make it successful then we will have to show them why they are wrong but becoming the success they fear most.

25.0¢
   8mo ago
10.0¢ 25.0¢
  earned 91.0¢
Blocks will increase in size. So will available storage space and internet bandwidth.
The cost of TX will be dependent upon availability of resources (block size, storage, bandwdith).
When TX count blows up to a point a chain can't handle you get what we see in BTC any time they experience roughly over 250k TXs/day. Their 1mb blocks can't handle the load and we see mempool back-logs resulting in fees going up.
In short, *if* micro TXs could "fill up all the blocks" at a faster pace than technology could keep up to consume them then the price of TXs would rise until tech expanded to accommodate the volume.
It is that simple.
:)
$1.01
   8mo ago
1.0¢ 10.0¢ 25.0¢ 25.0¢ 25.0¢ 25.0¢
  earned 40.0¢
Outstanding article! I'm so happy to see it. Once again, the League of Central Planning Proposals crawls out of the shadows to advance non-solutions to non-problems. Thankfully, gratefully, there are those such as yourself who are ready and able to put that nonsense down. :)
50.0¢
   8mo ago
10.0¢ 25.0¢ 25.0¢
  spent 10.0¢
Could Memo.cash cause another split & controversy in the Bitcoin Cash community later?
0.0¢
   8mo ago
10.0¢
  spent 10.0¢
You raise an excellent point about sharding. Sometimes sharding seems like a very difficult nut to crack. But when you paint the problem this way:
  • Shard off the Memo.cash network from the rest of the payments network I care about
Suddenly things seem much more do-able.
As long as users of the existing system are not encumbered, and users of the add-on system must shoulder the hosting burden, then this seems entirely equitable.
0.0¢
   5mo ago
10.0¢