We wrapped up #AllCoreDevs no. 115 a few hours ago.

Agenda: github.com/ethereum/pm/is…
Stream:

Overview of the call below πŸ‘‡πŸ»
We started with a lot of action as @mhswende identified an issue in EIP-1559 yesterday where the new fields introduced in transactions (maxFee & maxPriorityFee) did not have an explicit cap. This meant that an attacker could create arbitrarily large transactions.
Prior to 1559, this is not possible because if you want to create a transaction with a huge gas price, you actually _need_ to have that amount of ETH, and if your txn is included, you will _pay_ that amount.
Because the fields in 1559 are maximums, you could abuse this, not actually pay those huge gas values, and spam the network.
Alongside this, some clients already had checks to prevent these fields from being larger than 2^256, but because this was not in the spec explicitly, not all of them did. This meant that one of those bad blocks could not only DoS the mempool, but also split the chain.
Luckily, the fix for this is quite simple, as suggested by Martin here: github.com/ethereum/pm/is… Image
Basically, we add four checks to EIP-1559: the first two check that the maxFee and maxPriorityFee are < 2^256. This is what some of the clients already did.
The third checks that the maxFee is larger or equal than the maxPriorityFee. This intuitively makes sense: the total fee paid should be larger or equal than the portion of it that goes to the miner. Again, some clients already implicitly checked this.
Lastly, we check that a transaction sender's balace is larger than their maxFee times their gas used. This ensure that an account actually has the funds to pay for its worst-case maxFee.
We had a lot of back and forth on the call about which of these should be included in the consensus rules explicitly, as only the two first "< 2^256" ones are strictly necessary, but we decided to include all four for clarity and caution.
The fourth was the most contentious as there may be some weird edge-cases where you could want to set a maxFee higher than your balance if you think the address' balance will somehow be incremented before the txn is executed.
After some discussion, we ultimately decided it was safer to put it in now, and if someone has a strong rationale for not having this check, we could remove it in a future network upgrade quite easily.
While this change is simple, it does mean we will need to perform some more testing once clients have implemented it.
At first, we thought we could maybe keep using Baikal (if no one had triggered that specific edge case), but it seems that while load-testing the network, some transactions did break the new checks.
This means we'll need to spin up a new devnet, Calaveras πŸ’€, on which we'll deploy the newest changes to 1559. The spec is available here: github.com/ethereum/eth1.…

We expect it to be live late this weekend or early next week.
When discussing Baikal, we also went over some issues that teams have encountered in the transaction pool during the stress test for the network. Geth, Nethermind and Erigon are still working on some tweaks to the transaction pool management.
Given this, we agreed that it would be unsafe to fork the testnets in ~10 days. We will use the next two weeks to update tests, stand up and load-test Calaveras and finalize the txn pool implementations.
On the next ACD, assuming all this went well, we'll look at setting new testnet fork blocks.
Client teams said they should be able to get a release out with the testnet blocks a couple days after ACD, and we want to give ~1 week heads up before forking, so realistically the first testnet could fork ~10 days after the next ACD. Again, this is assuming nothing goes wrong!
Once we fork on the testnet, we will also try and have a stress test on it. Thanks to @hudsonjameson I now have the Ropsten ETH to fund it 🐳 Image
Assuming the testnet forks smoothly, we'll then set a fork block for mainnet.
Lastly, after some feedback on the 1559 Wallets call this week, @trent_vanepps has organized another call next week to discuss the impact on gas price oracles (e.g. EthGasStation, GasNow, etc.). It is next Friday, 14:00 UTC, agenda here: github.com/ethereum/pm/is…
Outside of London, we also had two discussion topics. First was an idea by @realLedgerwatch to better deal with worst-case transactions w.r.t. gas execution. See his full post here: ethresear.ch/t/a-third-way-…
(To be clear, Alexey's post is his comment, not the top-level EthResearch post!)
In short, Alexey explained on the call that right now our gas limit is mostly set to avoid "execution bombs", i.e. transactions that, when executed, will consume much more computation than their relative gas price, which can lead to blocks taking too long to execute.
This problem was the motivation behind raising the gas costs in Berlin with EIP-2929.
Alexey's proposal is that we could perhaps separate the transaction pool from the clients further and have it try to "diffuse" those execution bombs before sending them to the client.
If we had that sort of "guard", then perhaps we could increase the gas limit given that we would now be optimizing for the ~average case rather than the worst case.
There was some pushback on his idea (I recommend the livestream for details!), but people agreed this could be a promising area of research. We will create a discord channel in the Eth R&D server to discuss further.
Lastly, @pipermerriam and a co-author (can't find the handle!) came on the call to introduce EIP-3584 (github.com/ethereum/EIPs/…). The idea of the EIP would be to add access lists to blocks, similarly to how EIP-2930 introduced them for transactions.
Doing so could enable optimizations in how blocks are processed, and would be a good building block for stateless execution further down the line. Image
Even though the access lists proposed here serve a similar function to the 2930 ones, there are some difference which complicate things a bit. These subtleties were discussed on the call, up until we ran out of time.
We'll be continuing these discussions in the Eth R&D channel, and under the ethresearch post associated to the EIP: ethresear.ch/t/block-access…
And that was it! The next two weeks are (hopefully!) the last big push we need to get the London testnets ready.

If you are a project who will be affected by 1559, gas refunds, or other changes included, now is the time to review the spec and reach out!
Next call is scheduled for June 11th, 14:00 UTC. Agenda is up here: github.com/ethereum/pm/is…
Some questions in my mentions! Will try and answer a few by QT-ing them below πŸ‘‡πŸ»
This is a pretty critical issue, given it could lead to a chainsplit, but luckily it has a very simple fix (4 checks), which at least half of the clients already implemented.
The fix basically makes explicit some behavior that was "intuitively right" in the spec. This means that now the issue could not be exploited accidentally or maliciously to cause a chain split.
We don't have a date for the testnets yet, but I suspect that yes, the first testnet could fork around June 20-something. *If* we choose the blocks on the next ACD, I think these could be good candidates: docs.google.com/spreadsheets/d…

This is just my opinion, though, definitely not official!
Again, that would be my guess and it works with what I have in the spreadsheet above, but it is no guarantee.

For example, if we found another bug, we would obviously prefer delaying another 2 weeks than risk forking mainnet.

It is worth noting though that the difficulty bomb puts an upper bound on how much we can delay things. Some time in August, IIRC, we will start to see it go off.
First, we want to wait until London to do any further changes because we'll already get a 2x bump in worst-case gas limit after 1559.

As for increasing it further once things are stable, the concerns are basically the same as right now. Vitalik had summarized them well here: notes.ethereum.org/@vbuterin/eip_…
This is the relevant section: Image
There are two ways we can fundamentally address these: better client architecture (e.g. what @ErigonEth is working on, what Geth introduced with snapshots, etc.), or having sustainable state management approaches, which Vitalik also wrote about recently: vitalik.ca/general/2021/0…

β€’ β€’ β€’

Missing some Tweet in this thread? You can try to force a refresh
γ€€

Keep Current with Tim Beiko | timbeiko.eth

Tim Beiko | timbeiko.eth Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @TimBeiko

14 May
We just wrapped up #AllCoreDevs 113 😁

Agenda: github.com/ethereum/pm/is…
Recording:

Recap below πŸ‘‡πŸ»
The bulk of the call was focused on ironing out the final details for the London upgrade πŸ‡¬πŸ‡§
First up, we discussed the status of Baikal, our London devnet. @nethermindeth, @go_ethereum, @turbogeth, and @ConsenSysQuorum's Besu are all syncing to it πŸŽ‰
@OpenEthereumOrg is still working on merging the final EIPs before joining the network.
Read 30 tweets
23 Apr
This week's off-schedule @ethereum #AllCoreDevs call just wrapped up (early, for the first time in months!) 😁

Agenda: github.com/ethereum/pm/is…
Stream:
Summary below 🧡
First up, I gave a summary of my conversation with the various client teams over the past week. I had pasted a text version in the agenda as well:
TL;DR: client teams prefer a tighter-scoped London upgrade, London in July would be best, and if we keep London small + the Merge work goes according to plan, we should be able to do another feature fork this fall without delaying the merge.
Read 31 tweets
2 Apr
.@ethereum #AllCoreDevs starting in ~15 minutes

Agenda: github.com/ethereum/pm/is…
Stream:

Lots to cover, and I'll be back here after the call for a summary 😁

One note: Berlin is happening on mainnet soon πŸ‡©πŸ‡ͺ If you haven't updated your node, do it now 😁
Ok here we go!
First up on the call was Berlin updates πŸ‡©πŸ‡ͺ The Rinkeby fork went well, nothing to report. The mainnet fork block is going to happen on April 14/15, see a countdown here: goto.etherscan.com/block/countdow…
Read 50 tweets
31 Mar
.@gladstein thanks for engaging! These are all good questions. The answers may not all be tweet-sized, so here's a thread to go through them 🧡
You can see the current numbers for yourself here: beaconcha.in/pools. One important thing to note is that Ethereum's PoS algorithm uses penalties that are correlated with how many other people do something wrong along with you.

This means that while we can't stop people from staking on AWS, or using the most popular client, etc. we can give them an economic incentive to setup their staking node in a way where their failures are uncorrelated from the rest of the network.
Read 20 tweets
5 Mar
.@ethereum #AllCoreDevs starting in ~5 minutes with a PACKED agenda (doubt we get through it all πŸ˜…)

Last minute Berlin changes πŸ‡©πŸ‡ͺ, and a slew of potential London EIPs πŸ‡¬πŸ‡§, including EIP-1559 πŸ”₯

Agenda: github.com/ethereum/pm#ac…
Stream:

πŸ”œπŸ”œπŸ”œ
First up, @hudsonjameson announces this is the last call he'll be facilitating. Starting next call, I'll be facilitating them πŸ‘‹πŸ»

Hudson will still be available to help out, and will be working on other initiatives at the EF πŸ¦„
Next, is a discussion about whether we should keep EIP-2315 in Berlin, which was kicked off by a tweet from earlier this week:

@lightclients opened an issue questioning whether we should keep it in based on that feedback: github.com/ethereum/pm/is…
Read 39 tweets
26 Feb
.@EthCatHerders EIP-1559 community call happening in ~10 minutes πŸ”₯⛏

Stream:
Announcement/agenda: medium.com/ethereum-cat-h…

We'll be discussing 1559 with miners, researchers and implementers. I'll live-tweet as much as possible 😁 Panelists include πŸ‘‡πŸ»
.@poojaranjan19 & @hudsonjameson to moderate the whole thing, @barnabemonnot, @gakonst @hasufl on the research side, @tkstanczak @AFDudley0 as implementers, @f2pool_official, @BitsBeTrippin & @Inno_Miner on the mining side, @iamDCinvestor representing "ETH is Money", ...
and finally @JHancock @trent_vanepps and myself who have helped with various bits of coordination along the way!

Tune in πŸ‘€
Read 79 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!

:(