15

Bitcoin has a maximum of 1 MB of transaction data in each block.

  • Why is this limit present?
  • When was it added?
  • Was it intended to be temporary?
  • 4
    It seems natural that there should be some limit, otherwise any miner could immediately DoS everybody by creating a 20 TB block. Are you asking how 1MB was chosen as the limit? – Nate Eldredge May 7 '15 at 23:30
  • related: Bitcoin Block Size - What are the rules? – Murch May 8 '15 at 9:58
  • Why ? if my miner gets a block above a max size that I will config it will not cause a DoS attack. generating a 20TB block is impossible ? what is stopping a miner from doing it now ? he could change the code and do it – Haddar Macdasi Jun 19 '15 at 13:49
  • @Haddar: a miner could create a 20 TB block now, but since it exceeds the size limit, other nodes will consider it invalid and refuse to relay it. If they did accept and relay it, you can imagine the bandwidth that would be used. – Nate Eldredge Jun 21 '15 at 2:01
  • related: bitcoin.stackexchange.com/questions/36085/… – Nick ODell Jun 25 '15 at 20:51
18

Why is this limit present?

1. To Maintain Consensus

There has to be clearly defined rules about which blocks are valid and which are not for the network to agree. Obviously no node will accept a block that is 10 million terabytes, it would be near impossible to download even if it were valid. So where do you set the limit? And what if one node sets their limit differently than other nodes on the network? If this were to happen, the network would no longer be in consensus about which blocks were valid when a block was broadcasted that met some nodes' size limits and did not meet others.

Setting a network limit on the maximum block size ensures that everyone is in agreement about which blocks are valid and which are not, so that consensus is achieved.

2. To Avoid (further) Centralization of Pools

Suppose we remove the 1 MB cap entirely. A large pool says to itself, "I wish I had a larger percentage of the network hashrate so I could make more profit."

Then they realize that since there's no block size limit, they can make a block that is 4 GB large by filling it with nonsense. They and a few other pools have bandwidth large enough to download a block of this size in a reasonable time, but a smaller pool does not. The tiny pool is then stuck trying to download a block that is too large, and continuing to mine on their previous block until they finish downloading the new block. This means the small pool is now wasting their time mining blocks that are likely never to be accepted even if they were solved, since they wouldn't be in the 'longest' chain. Since their hash power is wasted, the original pool operator now has effectively forced smaller pools out of the network, and simultaneously increased their percentage of the network hashrate.

3. To Make Full Nodes Feasible

Essentially, larger blocks means fewer people that can download and verify the chain, which results fewer people willing to run full nodes and store all of the blockchain data.

If there were no block size limit, malicious persons could artificially bloat the block with nonsense and increase the server costs for everyone running a full node, in addition to making it infeasible for people with just home computers to even keep up with the network.

The goal is to find a block size limit with the right tradeoff between resource restrictions (so that someone on their home computer can still run a full node), and functional requirements (being able to process X number of transactions per second). Eventually, transactions will likely be done off-chain using micropayment channels, but no such solution currently exists.


When was it added?

This commit, from July 2010, shows the actual commit that added the MAX_BLOCK_SIZE parameter. The commit doesn't actually even mention that the max block size was added, strangely enough. I suspect that it was done as part of a release that fixed a critical bug, so Satoshi could be sure that everyone would upgrade.

  • 3
    It is worth noting that there was a limit of 32MB prior to this, implied by the maximum network message size. – Anonymous Jun 20 '15 at 18:43
  • @Bitcoin Isn't it actually 32 MiB? – morsecoder Jun 20 '15 at 18:48
  • Right, 32 mebibytes. – Anonymous Jun 20 '15 at 20:54
5

I think, it is worth to mention what Satoshi said about raising the block size...

It can be phased in, like:

if (blocknumber > 115000) maxblocksize = largerlimit

It can start being in versions way ahead, so by the time it reaches that block number and goes into effect, the older versions that don't have it are already obsolete.

When we're near the cutoff block number, I can put an alert to old versions to make sure they know they have to upgrade.

Source: https://bitcointalk.org/index.php?topic=1347.msg15366#msg15366

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.