A possible solution to problems caused by unlimited block sizes

Awhile back I wrote a post on Bitcoin Foundation forum on the possible solution to problems caused by unlimited block sizes. If anyone is a registered member, you can check out the original post from 2013 05 14 here.

A quick background on the problem. Each Bitcoin Block has a hard limit of 1MB, meaning that there is a finite amount of Transactions that can be included in each Block. To accommodate for more Transactions, one would need to increase that hard limit. However, at the same time increasing the limit is a short-term solution if we set a new limit (eventually the Bitcoin Network might outgrow that limit as well), while removing the limit entirely can be dangerous to the overall health of the Network.

Without further ado, here is a possible solution to those problems as proposed by me half a year ago:

So a few days ago ago I was discussing some Bitcoin stuff and the topic of block size came up - its expansion and so forth. This got me thinking about the potential implications when the size will be increased.

If we set a block size to any arbitrary limit, we probably will reach it sooner rather than later as Bitcoin adoption picks up. But since the blockchain is a shared resources we shouldn't allow for unlimited block size - it would open up a vulnerability to potential attacks (create a ton of microtransactions, bloat a block to 1GB size, kill the network). To counter that, we should introduce some cost for the miners to create big blocks. Preventing blocks from containing certain transactions (very small ones, very young ones, ones not seen by the client) would probably not go over well. Making the miner pay a part of the coinbase to generate a bigger block would also not work as it would screw with the coin generation schedule and not be sustainable in the long run.

On the other hand, there is a way we can make the miners "pay" for creating large blocks - by having to do more work. We already have the normal means - target adjustment every so often to keep the blocks generating at a steady pace. Building on that, we could require miners creating blocks bigger than 1MB to solve the work for higher difficulty - 2MB would require difficulty x2, 10MB - x10 and so forth. This approach would allow blocks of arbitrary size to be created without the fear of bloating up the blockchain uncontrollably - it would be prohibitively costly for a malicious miner to do so. Honest miners could increase the block size as needed to accommodate lucrative transactions that are coming in to offset the increased size. The downside is that a miner would need to commit to the size of a block before mining - if they find a solution to a normal difficulty, they would not be able to use that to publish the block.

1 comment: