What Does Blockchain Bloat Mean?
Blockchain bloat, also called state bloat or chain bloat, is a situation that can occur when a blockchain has grown so large that the peer-to-peer (P2P) network nodes that support the distributed ledger can no longer store, process, and share the ledger’s data efficiently.
In general, bloat refers to any type of excessive growth or expansion that can lead to inefficiency, sluggishness, or unwieldiness.
How Blockchain Works
Blockchains are decentralized, distributed ledgers that record transactions in a sequential, permanent manner. Transactions are grouped in storage blocks, and the blocks are linked together in a chain.
Each block contains a set of transactions, a timestamp, a reference to the previous block, and other metadata. Before a block is added to the chain, it goes through a consensus process that requires network nodes to programmatically agree upon the new block’s contents and validity. The specifics of this process can differ depending on the type of blockchain and its underlying consensus mechanism.
Once a block is added to the blockchain, its contents are considered immutable. While it’s technically possible to alter the contents of a block, it is computationally expensive and practically infeasible to do so because each block in the blockchain is linked to the previous one through a cryptographic hash.
Any change to a block’s content will change its hash and break the link with subsequent blocks.
Blockchain Scalability Issues
As a blockchain gets used and more transactions are added to the distributed ledger, it takes more resources and more time for network nodes to process, store, and validate the chain’s entire history each time a new block is added to the chain. This scalability issue can be aggravated by the additional accumulation of microtransactions, low-value dust transactions, and the inclusion of empty or near-empty blocks.
The continuous growth caused bloat, which can make it difficult for individual users or small-scale participants to afford the storage and computational resources necessary to maintain full nodes and keep up with processing new blocks and transactions.
An additional problem is that bloat not only creates a poor user experience, it also creates a digital divide in the blockchain ecosystem. When participation is limited to only those who can afford to use the network, it centralizes network activity and undermines the principles of decentralization and inclusivity.
This issue can be aggravated in blockchains where the order of transactions being carried out can be influenced by fee rates. Even what seems like a small increase in fees (in terms of USD or other major currencies) can be significant for users in regions with lower purchasing power, effectively pricing some participants out of the network.
Blockchain Scalability Solutions
The blockchain community is aware of these concerns, and various solutions have been proposed to mitigate blockchain bloat and its implications. They include:
Blockchain pruning: Pruning involves trimming down the data stored on the blockchain to reduce long-term storage requirements. Pruned nodes only keep the data necessary to validate new transactions and maintain the blockchain’s current state. Many of the proposed solutions for reducing bloat involve some type of pruning strategy.
Rollups: Rollups involve processing multiple transactions off-chain and then combining (rolling up) the transactions into a single transaction or proof that’s posted to the main chain. Many of the proposed solutions for reducing bloat involve some type of rollup strategy.
Sidechains: A sidechain is a separate, parallel blockchain to the main blockchain (mainchain). It operates independently but can communicate with the mainchain to allow assets to be transferred between them. Sidechains can have their own consensus mechanisms and can be tailored for specific uses. Many of the proposed solutions for reducing bloat involve some type of sidechain.
Sharding: Sharding involves breaking the blockchain into smaller pieces, each of which is capable of processing its own transactions and smart contracts. This approach improves parallel processing by allowing each shard to handle a subset of transactions independently. Many of the proposed solutions for reducing bloat involve some type of sharding strategy that processes multiple transactions on different shards concurrently.
State channels: A state channel is a two-party or multi-party Layer 2 communication channel that allows participants to conduct an unlimited number of transactions without committing every single one of them to the Layer 1 blockchain. Typically, two parties lock up funds in a smart contract and then transact amongst themselves by signing transactions that reference this locked-up amount. When the parties finish transacting, the final state of their transactions is committed to the blockchain. The Lightning Network for Bitcoin and the Raiden Network for Ethereum are examples of state channels designed to reduce bloat.
Merkle trees: Merkle trees can structure blockchain data into a tree in which every leaf node contains a hash of a data block, and every non-leaf node contains a hash of its children. Only the Merkle root (the hash of all the hashes of all the individual transactions in a block) needs to be stored by every participant.
Delegated Systems: Delegated proof-of-stake (DPoS) systems allow a small number of trusted validators to produce blocks. Reducing the number of validators can streamline block production and, in theory, improve blockchain scalability. The trade-off, however, is that this strategy can also introduce a level of centralization.
Differential Storage: Instead of repeatedly storing entire blocks, differential storage techniques only store the differences between them. This approach to reducing bloat is controversial because if it becomes necessary, reconstructing the original data can introduce significant computational overhead.
Zero-Knowledge Proofs (ZKPs): Zero-knowledge proof systems like zk-STARKs allow transactions to be verified without revealing their details. This is another solution for mitigating bloat that involves reducing the amount of data that needs to be stored on-chain.
Segregated Witness (SegWit): Segregated Witness allows more transactions to fit into a block by separating the witness data (the signature data) from the main part of a transaction. This effectively increases each block’s capacity without increasing the traditional block size.
Increasing block size: Over the years, the idea of increasing the size of storage blocks to improve scalability and reduce bloat has been the source of a lot of controversy within the cryptocurrency community. In theory, if each block was larger, it could potentially allow a blockchain to handle a greater volume of transactions within the same timeframe, decrease the pending transaction queue (mempool), and shorten wait durations.
Blockchain Bloat and Bitcoin Cash
In 2013, as Bitcoin gained public awareness, the 1MB block size limit began to lead to congestion, causing delays in confirmation times and transaction fees to rise. Two primary viewpoints emerged as the need for scalability became more apparent.
One point of view was to simply increase and allow more transactions per block by increasing block size. The other point of view was to optimize the existing block structure by handling some transactions off the main blockchain.
The two viewpoints could not be reconciled, and in 2017, the faction of the community that wanted to adopt a larger block size broke away. The resulting hard fork is called Bitcoin Cash.