Why has the chain capacity increased by ~9% after London? Three answers…
Looking at the daily gas used chart, we see that average gas used per day has increased from ~92B to ~100B: a 9% increase. Why did this happen? I think that the effect is roughly evenly split between three different causes: (1) ice age delay, (2) pre-London blocks being not full, and (3) imperfections in the basefee adjustment formula. Ice age delayThe London fork delayed the ice age, which had just barely started to take effect when the London fork began. Pre-London, average block times were ~13.5s, and post-London average block times are back down to their long-run normal level of ~13.1s: This is a ~3% difference in block speed, which explains 3% out of the 9% increase in on-chain gas usage. Target 15M vs maximum 15MPre-London, the maximum block gasused was 15M. But not all blocks used the entire 15M: even the most well-functioning block producers would leave 0-20999 gas unused because there's too little remaining space to fit a single transaction, and on top of that there are always the occasional block producers who make empty blocks. An analysis from April suggests that ~2% of blocks were empty. Altogether, we might suppose a pre-London unused space of ~2-3%. Post-London, however, 15M is not the maximum, it's the target. This means that if average gas used, including the empty blocks, is below 15M, the basefee will decrease until the average is back to 15M. So this accounts for another ~2-3%. Mathematical imperfections in basefee adjustmentThe EIP 1559 formulas is not quite perfect in targeting 50%. This is because of the complex relationship between arithmetic and geometric means. A 0% full block decreases the basefee by 12.5% (multiplies it by 7/8). A 100% full block increases the basefee by 12.5% (multiplies it by 9/8). So what happens if you have a 0% full block followed by a 100% full block? The basefee is multiplied by 63/64. Hence, for the basefee to remain constant, you actually need the average usage to be slightly above 50%. How far above depends on what the variance is. The theoretical minimum volatility bias is zero: if every block is exactly 50% full, so the basefee remains constant in each block. The theoretical maximum volatility bias is the case where 53.13% of blocks are 100% full and 46.87% of blocks are empty (the ratio of full to empty being 1.133, the same as the ratio -log(7/8) / log(9/8)); in that case, the basefee would remain constant with blocks being on average 53.13% full. Actual usage seems to be right in the middle of these two extremes: taking data from one recent observed timespan, average blocks were 51.5% full (so, ~3% above the "intended" fullness). A recent data analysis roughly confirms both of the last two numbers (look carefully at the pre-London and post-London blue line, and the horizontal 15M line on the chart): One possible fix to this mathematical oddity is to make the basefee adjustment mechanic more explicitly exponential: https://ethresear.ch/t/make-eip-1559-more-like-an-amm-curve/9082. This would establish a hard invariant where the basefee can be computed as a direct function of the total "excess" gas usage (so for any level of excess gas usage to continue forever, the basefee would have to eventually shoot toward infinity). But for now, Ethereum users can rejoice in the unintentionally 6% increased capacity that London brought (and client devs need to keep working hard on statelessness / state expiry to make sure we can handle the increased state growth safely). submitted by /u/vbuterin |