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

<blockquote>
  <p>It can be phased in, like:</p>
  
  <p>if (blocknumber > 115000)
      maxblocksize = largerlimit</p>
  
  <p>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.</p>
  
  <p>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.</p>
</blockquote>

<p>Source: <a href="https://bitcointalk.org/index.php?topic=1347.msg15366#msg15366" rel="nofollow">https://bitcointalk.org/index.php?topic=1347.msg15366#msg15366</a></p>

CC BY-SA 3.0
2015-06-20T16:42:49.437Z
2016-08-06T18:56:26.227Z
2016-08-06T18:56:26.227Z
Midnight Engineer
<blockquote>
  <p>Why is this limit present?</p>
</blockquote>

<h2>1. To Maintain Consensus</h2>

<p>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. </p>

<p>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. </p>

<h2>2. To Avoid (further) Centralization of Pools</h2>

<p>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." </p>

<p>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.</p>

<h2>3. To Make Full Nodes Feasible</h2>

<p>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. </p>

<p>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.</p>

<p>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.</p>

<hr>

<blockquote>
  <p>When was it added?</p>
</blockquote>

<p><a href="https://github.com/bitcoin/bitcoin/commit/a30b56ebe76ffff9f9cc8a6667186179413c6349" rel="noreferrer">This commit</a>, from July 2010, shows the actual commit that added the <code>MAX_BLOCK_SIZE</code> 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.</p>

CC BY-SA 3.0
2015-06-20T18:43:30.643Z
It is worth noting that there was a limit of 32MB prior to this, implied by the maximum network message size.
Claris
CC BY-SA 3.0
2015-06-20T18:48:22.110Z
@Bitcoin Isn't it actually 32 MiB?
morsecoder
CC BY-SA 3.0
2015-06-20T20:54:45.047Z
Right, 32 mebibytes.
Claris
CC BY-SA 3.0
2015-05-08T17:12:32.817Z
2015-12-16T17:26:04.403Z
2015-12-16T17:26:04.403Z
morsecoder
<p>Bitcoin has a maximum of <a href="https://bitcoin.stackexchange.com/questions/1747/bitcoin-block-size-what-are-the-rules">1 MB of transaction data</a> in each block. </p>

<ul>
<li>Why is this limit present?</li>
<li>When was it added?</li>
<li>Was it intended to be temporary?</li>
</ul>

CC BY-SA 3.0
2015-05-07T23:30:01.720Z
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
CC BY-SA 3.0
2015-05-08T09:58:12.697Z
related: [Bitcoin Block Size - What are the rules?](http://bitcoin.stackexchange.com/q/1747/5406)
Murch
CC BY-SA 3.0
2015-06-19T13:49:12.917Z
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
CC BY-SA 3.0
2015-06-21T02:01:28.637Z
@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
CC BY-SA 3.0
2015-06-25T20:51:25.587Z
related: http://bitcoin.stackexchange.com/questions/36085/what-are-the-arguments-for-and-against-the-increase-of-the-block-size-limit
Nick ODell
<block><block-size-increase>
What's the purpose of a maximum block size?
Nick ODell
# What's the purpose of a maximum block size?

(Asked by: username_0 on 2015-05-07)

Bitcoin has a maximum of [1 MB of transaction data](https://bitcoin.stackexchange.com/questions/1747/bitcoin-block-size-what-are-the-rules) in each block.

* Why is this limit present?
* When was it added?
* Was it intended to be temporary?

**Tags:** block, block-size-increase

> **Comments:**
> **username_1**: 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?  
> **username_2**: related: [Bitcoin Block Size - What are the rules?](http://bitcoin.stackexchange.com/q/1747/5406)  
> **username_3**: 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  
> **username_1**: @username_3: 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.  
> **username_0**: related: http://bitcoin.stackexchange.com/questions/36085/what-are-the-arguments-for-and-against-the-increase-of-the-block-size-limit  

---

## 2 answers

### Answer by username_5 on 2015-05-08. Score: 21 | Accepted answer

> 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](https://github.com/bitcoin/bitcoin/commit/a30b56ebe76ffff9f9cc8a6667186179413c6349), 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.

> **Comments:**
> **username_6**: It is worth noting that there was a limit of 32MB prior to this, implied by the maximum network message size.  
> **username_5**: @Bitcoin Isn't it actually 32 MiB?  
> **username_6**: Right, 32 mebibytes.  

---

### Answer by username_4 on 2015-06-20. Score: 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>


---

