So if somebody is just after the 50 BTC and does not care about the network, would he get a (maybe very small) advantage to just ignore transactions altogether? Like:
* If I learn about a transaction, just ignore it (saves me memory, and if I do not tell others about it, bandwith)
* If I learn about a new block, I try to build a new block on it with just the 50 BTC transaction
I guess, this optimization is small. But it would reduce the complexity (LOC) of my client, which may be useful for further optimizing it.
Would a minimum block size or a minimum required number of transactions per block be useful?
yes the optimisation is small, but you could do that if you wanted, but if your client caught on and everyone started using it, then no transactions would be being verified and the network would collapse. The only cost is the extra complexity of the client, it's no extra real cost to include transactions and you are getting the fees.
There is no minimum block size or number of transactions because the rate at which blocks are generated is determined by the difficulty and nothing else (in order to get around 6 blocks an hour) - having a minimum size would have broken bitcoin early on when there weren't many transactions going around. Also, there is no way of knowing if the next block will be solved in 0.00001 seconds after the previous one (e.g. someone is very lucky) and we wouldn't want the protocol to break just because of edge cases like this.
Will