@ethereum@christine_dkim While the mainnet shadow fork was a "success", in that it managed to finalize valid blocks post-merge, several clients ran into issues during it. We covered some of these on the call.
@ethereum@christine_dkim First, @nethermindeth had some sync issues around the transition. These weren't new, they had been discovered during the Goerli fork, but the team wanted to make sure they didn't miss a single test run so ran with it despite not having fully patched the issue yet.
@ethereum@christine_dkim@nethermindeth Then, @HyperledgerBesu also hit a few issues. The first was a simple config issue which was quickly solved. The second had to do with fast sync: when the pivot block moved from a pre to post-merge block, the post-merge rules weren't automatically applied. That's being fixed too.
@ethereum@christine_dkim@nethermindeth@HyperledgerBesu The third issue, which they still haven't found the root cause of, was caused a few blocks after the merge, where the client hit a receipt root mismatch, meaning that it came to a different end state after executing a transaction. They are still investigating what went wrong here
@ethereum@christine_dkim@nethermindeth@HyperledgerBesu@go_ethereum, like Nethermind, ran through the fork with an old issue still unresolved. Some nodes during the goerli shadow fork ended up with a corrupted state snapshot, and the team still hasn't found the root cause.
@ethereum@christine_dkim@nethermindeth@HyperledgerBesu@go_ethereum@ErigonEth On the CL side, Prysm was on the call. They found a few edge cases during the mainnet fork, none of which were consensus-breaking. Beyond these fixes, another thing they are working on is improving the UX of running Prysm along with an EL.
@ethereum@christine_dkim@nethermindeth@HyperledgerBesu@go_ethereum@ErigonEth@mkalinin2 People still need to digest this, but over the next two weeks we'll look at how easy a mitigation is to implement across clients, and exactly how much stake would be required to cause this, and whether at that stake amount more serious attacks are already possible.
@ethereum@christine_dkim@nethermindeth@HyperledgerBesu@go_ethereum@ErigonEth@mkalinin2 If worse things are already possible at that % of stake and it's non-trivial for clients to implement a fix for, it may not be worth it to patch this. That said, if one of those things isn't true, we'll want to make sure we are safe against these scenarios and have test for them.
1. Make sure that all clients only serve the Engine API over an authenticated JSON RPC port. We want to force users to have to configure this before the Ropsten fork.
1. More Shadow Forks, which don't result in client issues, and where client teams control a large % of validators π» 2. Fork Ropsten: give folks plenty of heads up to configure their node correctly, hope they do it rightπ€π»
@ethereum First, quick shout out to @christine_dkim who has been writing recaps as well over the past few calls. I encourage folks to read her thread too for an additional perspective π
@ethereum@christine_dkim As for the call itself, the first thing we covered was the set of recent shadow forks of Goerli. TL;DR: shadow forks allow us to run The Merge on a minority of nodes on the network, but still receive transactions going to the main chain.
First up on the call, @parithosh_j gave an overview of the Kiln launch. The PoW chain went live last Wednesday, and the Beacon Chain on Friday.
@parithosh_j We were hoping to merge mid-week this week, but there was an unexpected increase in hashrate in the network. This forced us to use the override feature we built into client to set a new terminal total difficulty value. This worked perfectly! All clients merged at the new TTD!
@ethereum First on the call, we discussed the latest updates to Kiln: our upcoming merge testnet. @vdWijden has been trying to get all client combinations working and to put together a doc with instructions about how to pair them π
@ethereum@vdWijden One thing that wasn't fully aligned yet was client authentication between the EL + CL nodes. We had rough agreement on the call about how to proceed, and will make sure all clients behave similarly. In short, all calls on the auth'd port will require a token.
Wrapped up another @ethereum#AllCoreDevs today. Covered the Goerli outage, Kiln updates, merge testing, beacon chain withdrawals and a few more misc. items π
@ethereum Re: the stream, apologies but due to a zoom config issue, the first part of the discussion is missing the audio from everyone except me π The notes will have a full transcript for that part of the call too.
@ethereum First on the call, we discussed the Goerli issue from overnight: a number of validators were down and the alterting software didn't catch it. On the call, the root cause of the issue hand't been found yet, but several teams were investigating.
Another @ethereum#AllCoreDevs wrapped up this morning. Deep dives into The Merge & Shanghai, one of my favorite calls in a while π Def recommend the full recording as the signal/noise ratio was very high. If you don't have 90 mins, here's a recap!
We've covered these issues on previous calls, and fixed them in the latest spec, Kiln, but the report gives a great overview of what happened and the impacts it had π
@ethereum First on the call, @mkalinin2 presented an upgrade to the Engine API spec to address some issues we've seen on Kintsugi w.r.t. re-orgs. Full link here: github.com/ethereum/execuβ¦
@ethereum@mkalinin2 In short, the PR makes it optional for EL clients to actually execute a payload when receiving an executePayload call (and hence renames that call to newPayload for clarity).