EIP-1559 Update & Breakdown

A couple of months ago, I wrote an article about the EIP-1559 proposal, and what it means for the Ethereum network & community. I'm extremely proud, and humbled to say that the article was retweeted by Vitalik himself, and seemed a good introduction to 1559, and its implementation thus far.

Since I wrote that article, there have been numerous updates from both implementation and planning perspectives.

Recap – What is EIP-1559?

If implemented, Ethereum Improvement Proposal (EIP) 1559 will be the largest change to how users bid for blockspace in any of the major blockchains.

TLDR:   Basically; EIP-1559 will help make transaction fees more predictable on the network, and ensure ETH’s economic value is enshrined at the protocol level.

EIP-1559 is one of the most highly anticipated upgrades for the Ethereum network and has been debated & argued about for a few months. Essentially, the proposal to change the Ethereum fee market is based around these 2 key changes:

  • The current gas limit of 10 million is replaced by two values: a “long-term average target” (10 million), and a “hard per-block cap” (20 million)
  • There is a BASEFEE (which is burned) which transactions are required to pay, which gets adjusted on a block-by-block basis with the goal of targeting a value so that average block gas usage remains around 10 million.

Currently, miners select transactions ranked by the highest fees which results in many users grossly overpaying. The new proposed solution is to start with a BASEFEE amount which is adjusted up and down by the protocol, based on how congested the network is.

To accommodate this system, the network capacity would be increased to 16 million gas, so that 50% utilisation matches up with our current 8 million gas limit. Then, when the network is at >50% capacity, the BASEFEE increments up slightly, and when capacity is at <50%, it decreases slightly. Because these increments are constrained, the maximum difference in BASEFEE from block to block is predictable.

This then allows wallets to auto-set the gas fees for users in a highly reliable fashion. It is expected that most users will not have to manually adjust gas fees, even in periods of high network activity. For most users, the BASEFEE will be automatically set by their wallet, along with the addition of a small fixed amount, called a ‘tip’, to compensate miners (e.g. 0.5 gwei).

The biggest source of frustration with the current fee system, stems primarily from Ethereum’s attempt to price fees using a simple auction mechanism. Known as a first price auction, this system works by having everyone submit their bid (gas price) for how much they’re willing to pay to have their transaction picked up by a miner.

This fee mechanism frequently leads to fee over-payment to miners and it’s very difficult for users and wallets to estimate what fees should be paid per transaction.

Now then, with that re-covered, let's dive on in!

Implementers' Call #4

Late last week (Friday 28th Aug), I sat in on the 4th instalment of the EIP-1559 implementer calls. The overall agenda for the meeting included:

  • A general update from both implementers and researchers,
  • An update on the roll-out plan / timeline,
  • Implementing the new Typed Transaction Envelope as discussed in the Ethereum Improvement Proposal EIP-2718,
  • The addition of resources to speed-up development.

Research & Implementation Updates

As of last week, two Ethereum clients have EIP-1559 implementations – Vulcanize's Geth fork and Besu. Both are running early Testnets to clear-up specifications, and iron out any implementation issues.

Alongside the above in the core Eth client space, Filecoin are also testing a 1559 implementation, and all seems to be going well on that front.

Jeromy Johnson, a software engineer at Filecoin stated:

"The EIP code appears to be doing its job"

-- With regards to an ongoing test on the network.

Regarding both Geth and Besu, it seems that while there have been minor bug fixes implemented; there are no major updates. Both Ian from Vulcanize, and Abdel from Consensys (working on Besu implementation), have been running performance tests and keeping their respective clients aligned with the latest 1559 specification.

Tomasz from Nethermind also stated that connecting to Besu Geth testnet for EIP-1559 within the next 2-3 weeks is a very reasonable prediction.

All in all, I'm happy to be able to report that progress remains sure and steady, and my thanks goes out to all of those involved with both research, and Testnet implementations.

EIP-2718

As Tim B mentioned on Twitter; to address the RLP encoding issue of Besu, one solution would be to use EIP-2718 which introduces typed transactions.

To summarise 2718:

rlp([TransactionType, Payload]) will become a valid transaction and rlp([TransactionType, Payload]) will become a valid transaction receipt, where TransactionType is a number identifying the format of the transaction, and payload is the transaction/receipt contents – whose definition is defined in future EIPs.

There was quite a lot of discussion about EIP-2718 throughout the implementers call, but the outcome was that 2718 should be worked on in parallel to 1559 as much as possible, so it is ready if there is a need to add it to client implementations in the near future.

Additional Development Resources → Speed-up

There was a few different topics discussed, with regards to project funding, and development resource allocation.

One of the ideas put forth in the call was that a good opportunity for community members to contribute funding in a meaningful way; would be to provide funds to help clients implement 1559, namely Nethermind, and OpenEthereum.

When it comes to funding, and transparency of public spending; towards the end of the call, Pooja Ranjan stated:

"In the beginning of the call, we were discussing about having the transparency on the funds. I have just created this sheet for reference and we would be sharing it with people who are interested. All kind[s] of outgoing transactions will be recorded here."

Lastly, with regards to funding; James Hancock raised (as I see it), one of the most important points of the call. His exact words:

"Funding the community outreach stuff so that there is a group of people that are ready to go out and make sure people are adopting"

Coming from a Developer Relations background, community outreach is always top of my priority list. It may seem obvious to some that this is an area to which funds should be directed, but I don't think we can stress enough the importance of this point.

From a development-resources stand point; there is some fantastic news:

The Decentralization Foundation has entered into an agreement with Tim Roughgarden for 225 hours of work by him on the Ethereum transaction price mechanism, including EIP-1559.

Tim is a professor of Computer Science and member of the Data Science Institute at Columbia University, and has been awarded the ACM Grace Murray Hopper Award and the Gödel Prize, amongst others. I think I can speak for everyone when I say that we're always very fortunate to have fellow Devs like Tim on board!

Roll Out Plan / Timeline

As Tim Beiko put it on Twitter:

"There are a few challenges (i.e. even if we raised a ton of money, 1559 may still not work!) and it's hard to commit to timelines (both known unknowns and unknown unknowns)."

Ever since the first announcement of 1559, there has been an overall pervading feeling that the concreting of a roll-out timeline would be a very difficult challenge. Between that, and the fact that there are other EIP's interlaced with 1559; there still isn't a definitive 'completion' date.

Tim Beiko mentioned that he believe[s] that there was a Miner on the public Discord chat, who said that they would be willing to supply hash power, if it was a Proof of Work Testnet.

As the present Testnet that Besu and Geth have working is a Clique Testnet, so [I] think also testing the proof of work testnet is [an] important part of this.

The discussion around the roll-out plan, is here in the call, beginning at 14:30:

The transcript of which; can also be found here.

The next step would seem to be getting the implementers, researchers, clients, etc. together to discuss how [we] can make this happen and what resources are needed. A rough number thrown around for client teams was ~1 dev for ~6 months, per team.

Conclusion

A community fund was set up for this EIP on Gitcoin, and has already raised a very respectable amount. These funds will go a long way to making sure this EIP gets the love it deserves; so that it can be safely included in the Ethereum protocol. You can donate to the grant here.

In a similar conclusion to my last article on 1559, I find myself very excited about the improvement overall, and once again; my absolute love, thanks, and adoration goes out to all of those contributing to the cause! 💚

For those interested in past transcripts and recordings, you can find them all here.

I would love to hear your opinions on EIP-1559, and I encourage you send me any comments & opinions you may possess on the subject. You can do so here!

- @rbin