My 2uBTC on this issue:
Instead of guessing the costs of the network via extrapolation, code in a constant-cost negative feedback mechanism. For example, similar to difficulty adjustments, if mean non-coinbase block reward > 1 BTC, increase max size. If mean block reward < 1 BTC, decrease max size (floor of 1MB).
Here's why I think this is a long term solution. With Bitcoin, "costs" and "value" have a very interesting relationship; currently with mining, the costs to run the network are determined by the exchange value of a bitcoin. Long term, the block size constrains both the cost and value of the network. By "long term", I mean 100 years from now. Long term, there's no more coinbase reward. So miners compete for transaction fees. Limited block size causes transactors to compete for space in the block, driving up the fees. An unlimited block size would, without other costs, tend to drive fees to near-zero, and then there's not enough incentive for miners to bother, and the security of the system is compromised. That's the death spiral idea anyway, which may not actually happen, but it's a legitimate risk, and should be avoided. The value and utility of bitcoin today has a lot to do with the probability that it will have value in 100 years.
Max block sizes doubling every two years makes them pretty much unlimited. Capping after 20 years is also a big guess. That also extrapolates Moore's law for potentially longer than the law keeps going. Gigabit ethernet is what, 15 years old? And that's what every PC has now, I've never seen 10G over copper ethernet. Reliance on everything else becoming awesome is a very fragile strategy.
An issue I have with expoentially increasing block size, or static block size, is there's no feedback, and can't respond to changes in the system. The block size in many ways determines the value of the network. All else being equal, a network that can handle more transactions per day is more useful and more valuable.
I think that similar to the current system of mining costs determined by bitcoin value, block propagation, verification and storage should be determined by how much people are willing to pay. If transaction fees are high, block space is scarce, and will expand. If transaction fees are low, block space is too cheap, and the max block size will expand.
This fixes a cost independent of the mining coinbase reward, allowing for sustainable, predictable mining revenue. The issue is we would have to come up with a number. What should it cost to run the bitcoin network? 1% of M0 per year? That would be 210,000 coins per year in transaction fees to miners. That would be about 3BTC per block.
0.5% M0 annually would be 1.5BTC per block, and so on. This would be a ceiling cost; it could cost less, if people didn't make too many transactions, or most things happened off-blockchain, and the blocks tended back towards the 1MB floor. It would effectively put a ceiling on the maintenance cost of the network, however; if blocks were receiving 6BTC in fees, the size would double at the next difficulty adjustment, which would tend to push total fees down.
If you wanted to get fancy you could have hysteresis and non-linearity and stuff like that but if it were up to me I'd keep it really simple and say that max block size is a linear function of the previous epoch block rewards.
This can be "gamed" in 2 ways. It can be gamed to a limited extent by miners who want to push up the max block size. They can pay a bunch of fees to themselves and push up that average. I can't think of a clean way to get rid of that, but hopefully that's OK; isn't it the miners who want smaller blocks anyway? If miners are competing for larger blocks, why would the non-mining users complain? The only issue is one miner who wants larger blocks, and everyone else wants smaller ones. Maybe use median instead of mean to chop out malicious miners or fat-finger giant transaction fees.
It can also be gamed the other way. Your transaction fee is 0, but you have some off-channel account with my mining group which includes all your txs for a flat monthly rate. This also seems unlikely; if it were more expensive that way, transactors would stop using the off-channel method and just go to the open market for transaction inclusion. If it were cheaper, why would the miner forgo that revenue?
So if I ran this whole Bitcoin thing (which would defeat the point...
, that's what I would do. The question is how much it should cost. 1BTC per block sounds OK, it's nice round number. That's 50K BTC per year for the miners.
I'd welcome comments / criticism of why having such a feedback mechanism is a good or bad idea.