Great question !
Okay okay, before you rush and say "To prevent spam attacks!!", please wait and read this whole thread.
^The above argument is what I hear all the time. However, there is something not quite right about that reasoning. It doesn't make sense.
Let's start with a little background info...
Satoshi implemented the 1 MB blocksize limit without telling anyone; He just did it randomly. There was no discussion beforehand and after he did it, he did not mention it anywhere. People had to look at the code/use it to see the change. The mannerism in which the 1 MB blocksize limit was added is already strange in itself and as soon as it was done, debates/arguments among the community started happening.
Satoshi never told people that the 1 MB limit was to prevent spam - its just what everyone inferred.
Okay... history lesson over.
Now here is why it doesnt make sense:
The process of a transaction getting confirmed and added to the blockchain goes like this:
1) Tx. is broadcast with a custom fee
2) Tx. is added to the mempool
3) Miner collects tx. from the mempool (usually they will pic tx. based on which has the highest fee and work their way down from there)
4) Miner adds tx. to their block
5) Miner calculates the proof of work
6) Miner publishes block to the blockchain
Okay now we have the process outlined we can analyse the miners incentives/behaviour. I'll be using game theory to explain this and here is where it gets interesting.
The miners main goal is to make profit. This is why he adds tx. to his block in the first place (it allows for more fees and thus, more profits). So we can assume that without the blocksize limit, the miners would add infinite tx. to their block right? WRONG!
Allow me to explain:
Look at step 3.. Collecting the tx. from the mempool and adding it to their block takes a set amount of time and the longer that the miner spends collecting the tx. and adding it to their block, the less time they can spend calculating the proof of work - thereby giving their competition (other miners) the edge. The miners would naturally (based on game theory) find a nash equilibrium between collecting as many tx. as possible and finding enough time to calculate the proof of work in order to give them the maximum profitability. Thus, we can assume, that without a blocksize limit (infinite), the block size would stay relatively the same.
This is why an infinite block size limit is not an issue. I honestly cannot understand why he added the 1 MB limit.
Can someone please, please explain? I have been pondering this for over a month now. Thanks.
There are three possible answers:
1) Satoshi didn't completely understand the implications of his random choice, which seemed reasonable at the time to him.
2) Satoshi knew very well what he was doing, was an evil mind, and he was lying through his teeth all the time, to trick us into his nonsense.
3) Satoshi was a true god and genius, and even though we think he might have made a mistake, he was absolutely right in everything he ever did and we are simply too dumb to see it.
There have been a lot of discussions over that issue, and people warned Satoshi that his random decision was recipe to disaster.
The truth is maybe in the 3 things at once. It is obvious that the spam limit is a joke. In fact, it makes spam worse. The excuse was that if a fool mined a single block of 10 GB full of nonsense, the blockchain would be spammed to an incredible size in no time. That was clearly wrong, because in order for that block to be incorporated into the chain, other miners would have to agree with it. There's no reason why honest miners would mine on top of a crazy block. In other words, implicitly, there would be a gross maximum size set by miners and that would grow dynamically.
By putting a hard limit on block size, you actually increase drastically the effect of spam, as we saw. Once the block is full of spam, transactions are hindered. This is an efficient DDOS of bitcoin. If the blocks are elastic, you can spam a lot, that will increase the size to some point, but transactions can go through unhampered, and you'd have to spam like crazy in order to have an efficient DDOS. Hard limits make DDOSsing of bitcoin in fact much easier.
Satoshi was clearly in favour of very large blocks if useful, and he explains that in the beginning, where he tells us that most normal users shouldn't run a full node, "left to specialists with farms of specialized hardware". That was in November 2008.
People explained him that putting a hard limit in the protocol would require a hard fork at a point, which might be problematic. He wavered that away: just changing a constant in the code.
Maybe Satoshi did put a "time bomb" in his bitcoin system because he considered it an experiment from which we have to learn, and it should self-destroy at a certain point in order for us to make a new system with better properties. Maybe Satoshi wanted to put in a trap, so that only if his heirs were smart enough to have good governance, and if they cannot even change a simple parameter, then it is better that this system dies. Maybe Satoshi wanted to develop a whole crypto market, and needed to put something nasty in bitcoin, in order to make it lose its first mover advantage and open up the market.
Maybe Satoshi was designing a reserve currency for big, dark, deep state players, and only needed Joe Sixpack to ramp it up, but needed him to be pushed out of bitcoin once the system was up and running, to leave it to the big boys. Claiming it to be a currency of the people, but at the same time, making its use too expensive for the people, and only allow the big boys on it, was maybe his hidden plan.
But I think that Satoshi simply made a mistake. He made many. Bitcoin is quite ill designed. That doesn't take away the fact that he was a bright mind. We have hindsight he didn't have. But he was wrong on this one, as he was wrong on many choices.