📢 A proposal for Multidimensional Gas Metering in Ethereum L1 Allows to increase block capacity, without changing the block gas limit and without complicating UX. + it can easily be extended to user-friendly multidimensional pricing (endgame 1559!). 👇 tl;dr & links below
We realized that there is no reason why gas metering and transaction pricing must be coupled. We can have simple unidimensional pricing of one resource, the good old Ethereum gas, while in the background during transaction execution the gas used is metered into separate per-resource buckets (compute, memory, state, access, bandwidth, ...). We define a new variable block gas metered as the gas consumed by the most utilized resource. For example, if in a compute-heavy block the gas consumed along each dimension is (18, 9, 9, 6, 3) megagas, then the block gas metered would be 18m. (Note that this block would be invalid today because the gas consumed is 45m > 36m.) We replace the current block gas used variable with block gas metered in the block validity condition (block gas metered < LIMIT) and in the EIP-1559 update rule. This enables to fill the block closer to each resource capacity, while still being within safety limit for each resource. Everything at the transaction level remains the same as today.
Thanks to @adietrichs, @VitalikButerin, @soispoke, @_julianma for their comments and review on the proposal. And thanks to @nero_eth, @kevaundray, @vdWijden, @M25Marek for many discussions at the Ethereum R&D interop. Read the full proposal here:
11,21K