EIP-1559: Fee market change for ETH 1.0 chain

Making things better for full nodes should be addressed other ways. the purpose of the gas price is not to make things easier on full node operators, a different mechanism should be used.

look for champions soon (hopefully)

For the existing proof-of-work system it may actually make more sense, instead of just burning everything collected in BASEFEE, to put some or all of it in a fee pool to be distributed equally among the miners of the following x blocks. That way you preserve the current incentive structure for miners as a collective where they want total fees collected to be high, and you should be able to also keep the current system where miner voting controls the network’s capacity.

If you burn all the base fees, the next step seems to be to say, “OK, we can’t trust miners to control this so we need to replace the miner voting mechanism”, and you end up potentially shaving a lot of yaks unrelated to the original fee market improvements.

1 Like

The only comment I have on this magical idea: call it the Ether Bonfire

1 Like

I should probably post this in here, shouldn’t I :sweat_smile:

Cross-posted from here:

If we imagine a large backlog of transactions whose submitters have widely varying preferences of the highest price they would pay, then I think it should be simple to prove that:

Under 1779:

  • The very highest bidders’ transactions may wait a number of blocks until the BASEFEE increases to a level that excludes other transactions, making the tip a sort of single-price auction within each block that reproduces all the problems of the current market but with the additional complexity of this one.
  • Once the price has increased to a point where the highest price transactions are cleared, and the BASEFEE is going to lower again, the lower-priced transactions remaining will need to wait additional blocks for the price to fall to be eligible for inclusion.

Under the Escalator algorithm:

  • The highest bidders’ transactions would be cleared as quickly as possible, and then the lower-priced transactions would be processed. No block lag to discover price, no unfull-blocks-with-pending-transactions, and only one or two parameters would need to ever be shown to the user (cap and max_duration).

I would like to see time-to-return-to-normal-fee mapped against volume-of-tratsient-congestion-spike to get a better idea of whether this is something I would care about.

I suppose it depends on how long the congestion lasts (how long does the system have to increase the fee rate)… does that mean we need a 3 dimensional graph?

A huge spike of transactions of size k*L (assuming gaslimit L) in non-EIP-1559 land would last k blocks. In EIP 1559 land, there would be a “full blocks and increasing fee” phase that lasts k/2 blocks (assuming max_gas/target_gas = 2) and then a “decreasing fee” phase that lasts another k/2 blocks because the decrease would be the same as the increase. The difference though is that in EIP 1559 land, during the decreasing fee phase transactions willing to pay a temporarily increased fee would be able to immediately get in, whereas currently they would still have to compete with the transaction spike. If max_gas/target_gas > 2, then things are even more favorable for the EIP 1559 case, though that could lead to unacceptably high burst load for clients in the network.

2 Likes

Just looking back over this thread I noticed that quite an important aspect hasn’t really been discussed, namely: Does paying fees to miners (beyond the minimal amount they’d get in tips) help secure the network?

I guess this isn’t attracting a lot of attention right now because fees are pretty low compared to the block reward (something like 3% on average) so any contribution they’re making is fairly insignificant and hardly worth wasting pixels over.

However, already there are some times when fees become significant - the recent case was when ETH crashed and there was a spike in defi activity. It strikes me that times like this are currently the security worst-case for Ethereum: Security spend is abruptly dropping (because ETH crashed) but at the same time the value transacted on-chain is very high. High value transacted on-chain makes attacks - whether rolling back the chain to change transaction order or censoring transactions - more profitable, so we need more security spend to disincentivize them. If there was nothing of value being transacted then there would be nothing to gain by messing with the transaction history, but if there’s a lot of value being transacted then there’s a lot of money to be made.

If this is right then fees paid to miners act as a kind of automatic stabilizer where the security requirement is (at least somewhat) correlated with value transacted, and value transacted is (at least somewhat) correlated with fees paid.

You can then look at this from either end: Either we hold our desired level of security constant and think about the block reward we’d need to get that amount of security, or we look at the amount we’re spending and try to work out how much security we’re getting. If we hold the block reward constant, we’re looking at a loss of least the 3% or so that is currently going to miners, but also some amount potentially much greater than 3% in the low-ETH-value high-transacted-value worst-case. Or if we hold the desired security level constant, we need to raise the block reward not only by the 3% or so that covers the average fees, but also by some additional margin to cover the worst-case. This seems particularly relevant as this EIP is being sold in other venues (not here) as something that will reduce net ETH issuance and thus benefit holders, when in fact it seems to do the opposite.

If we want to keep the proposed fee market mechanism without this effect on network security (or inflation, as you prefer) the alternative would be to put basefees into a fee pool, where they’re spread among all miners mining blocks at about the same time, rather than paying them all to the miner who mines that particular block.

Figured I should post this here: we are having a 1559 implementers’ call this week. https://github.com/ethereum/pm/issues/167

Great to see the fee market instability being addressed. This proposal is strictly better than the current first price fee mechanism being used in Ethereum today.

However, this proposal does not maximize social welfare. Additionally, this proposal is missing formal proofs for the nonmanipulation claims. In practical terms, while we don’t know of a concrete attack on this mechanism right now, such miner manipulation attacks may exist and would be discovered in production.

These issues were brought up and addressed in StableFees, an alternate auction mechanism that maximizes social welfare and has provable non-manipulation guarantees. In a nutshell, StableFees starts with a generalized second price auction and then adds a few rules to provably deter misbehaviors that occur in the decentralized setting that do not occur in traditional auctions.

If you are curious to learn more, a more detailed overview of StableFees is given in this blog post: https://hackingdistributed.com/2019/01/22/doing-fees-right/. For more gory details and proofs, the full paper can be found here: https://arxiv.org/pdf/1901.06830.pdf. Note that StableFees does not rule out colluding behaviors.

Currently, EIP-1559 changes the block sizing strategy from miner-voted to core-dev-asserted. While this change may be reasonable in its own right, I believe it should be discussed on its own merits and included in a separate EIP. For that reason, I have submitted https://github.com/ethereum/EIPs/pull/2635 which removes the core-dev-asserted block sizing and updates EIP-1559 to retain miner-voted block sizing.

If the authors believe that miner-voted block sizing is bad and should be removed, I support submitting an EIP to do that and including arguments as to why it should be done. :slight_smile:

IIUC, the current planned strategy is to enable a slow migration from legacy gas pool to EIP-1559 gas pool to allow dapps time to update to the new model. I think this is a good idea, but we need to consider the fact that during this transition, the max transaction size will be significantly reduced from block-size to about half of block size at the start of the transition. This may cause some contracts that depend on large transactions to break until the migration is far enough along that they can once again issue their large transactions.

As an example, some Augur transactions can get pretty hefty, as well as some 0x transactions (batch fills though, which may be splittable).

At the least, I think this should be mentioned in the backward compatibility section of the EIP.

3 Likes

I half agree with you. Rather, in the abstract I completely agree with your logic, but my practical experience in working with this EIP leads me to believe that separating it out along the lines you’re suggesting would do both of the EIPs a disservice. I don’t see a good way of navigating the politics, the current EIP is difficult enough :slight_smile:

Can you elaborate on the problems you see with the PR I submitted? To me, it seemed pretty simple to disconnect the change in block sizing from 1559. The only impacted section was the slow migration from old gas pool to new gas pool, but that ended up not being very hard to modify to achieve the goal of no change to miner-voted block sizing.

2 Likes

I have published a new EIP for Typed Transaction Envelope (https://eips.ethereum.org/EIPS/eip-2718) which enables us to add new transaction types to Ethereum without having to carefully tip-toe around backward compatibility. If that EIP finalizes before this one, then I recommend updating this to use it.

Transaction Type 0 will be a wrapper for legacy transactions, and EIP-2711 is tentatively going to be using type 1, so we can make this type 2 (we can choose any number, though < 55 saves us some bytes on the wire due to the nature of RLP encoding).

2 Likes

Can someone tell me why miners would include transactions without a tip if the fee gets burned and larger blocks will just slightly up orphans? It looks to me like most miners wouldnt need to actually put transactions into blocks and would only do ones with tips. If enough miners do this then most transactions would just be prioritised by gas price and as usage goes up the fee market will just be the same as now as only tip transactions get pushed.

Answered in Discord, but for continuity answering here as well:
Miners won’t accept transactions without a tip (at least not profit seeking rational ones that aren’t getting paid some other way).

1 Like

My issue is just that it slows down the process. If you want to break EIP-1559 into smaller chunks, that’s great, but given the current political climate that seems like it would slow the deployment. I would be elated if I was proven wrong about this by someone else trying it out. :slight_smile:

Usually splitting things up into smaller more manageable chunks facilitates moving things through more quickly because people can focus their efforts on the pieces they care about, and you don’t end up with one contentious piece holding everything else up. Do you believe that isn’t the case for Ethereum hard fork inclusion stuff? If not, do you have any idea why that isn’t the case?