Currently Monad uses the max possible gas allowed for each a transaction.
This is painful for app developers and users, since you can either estimate high, and overpay, or estimate low, and pay but not get your transaction executed. You have to find out by trial and error how much to overpay to get the error rate you want.
Now I know why Monad does this - we don’t want people DOSing the chain by taking up a large amount of block gas, but only using a little in reality.
However, maybe there’s a middle ground. What if we always charged 85% of the gas in a transaction, and then charged or didn’t charge the rest as needed. This means that someone trying to DOS the chain with transactions only has a small advantage by using this, and yet app developers can just set reasonably sane gas amounts and call it a day, without burning extra for gas.
(The other objection I can think of is that this reduces the chain’s actual block gas capacity to a worst of 85% of its previous value. I’m guessing this could be solved with base fee, max gas, and base fee block gas target amounts, but I haven’t worked out those details.)