[Quick contemporaneous notes by Ben Edgington; fka "Eth2 Implementers' Call"]
Agenda: https://github.com/ethereum/pm/issues/521
Livestream: https://www.youtube.com/watch?v=nnjeqZK7jgU
There was a Merge testing call on Monday. No need to repeat here.
Mainnet shadow fork #3 was today. TTD was hit around 1pm (UTC?). Participation pre-TTD was 99.8%. Only pre-TTD issue was with Besu–Geth sometimes missing blocks. Post TTD 97.6 % participation since the Besu–Geth issue got worse. Now being triaged. Later some intermittent issue with Prysm–Nethermind. Being fixed.
Almost bugless this time! Not seeing any late blocks. All clients are in sync.
An additional syncing through the Merge test was carried out on this shadow fork. Some issues, still analysing.
As decided at ACD call last Friday, intention is not to proactively defuse the difficulty bomb yet. Further monitoring and decision making to be done during May on forking testnets and resetting the bomb if required.
Ropsten, Sepolia, and Goerli are planned to transition to the Merge.
To do Ropsten, we need to make a Ropsten beacon chain (and same for Sepolia), at least a couple of weeks in advance. Is the plan to maintain Ropsten post-Merge? Client devs would prefer not to have to maintain Ropsten for much longer.
Any views on: Low/high validator counts? Permissioned/unpermissioned? Permissioned makes it easier to test chaotic states, and stuff we'd rather not do on "production" testnets. Large operators/individuals could still participate by request.
Expectation that client teams would help run validators.
Danny to open issues in the repo to describe the plans for Ropsten and Sepolia beacon chains.
Should try to launch the beacon chains in the next 2-3 weeks to allow for forks in June. Ropsten first, then Sepolia a little later (if it's bigger) makes sense.
Mikhail has opened a PR around invalid terminal block that he'd like to merge asap. Also fixes a hole in the spec.
Several other PRs are open that should be merged soon: 216, and some error code things. Will be bundled into a release.
Lodestar
Released v35 with lots of improvements (esp. networking). Enabled proposer bost on Mainnet.
Lighthouse
Issue around running fork choice before making block proposals. Some pressure from the community to implement IPv6 - interested in feedback from other teams. Will it cause issues (partition the network)?
Nimbus
Focused on shadow forks. Nimbus can now work with Web3Signer - is able to connect to multiple remote signers and combine the signatures. Useful to protect against rogue employees - no employee has access to a full validator key. Could be possible to extend the key manager API to support this configuration.
Prysm
v2.1.1 released with Merge support and Web3Signer support and some other nice bits.
Teku
Some optimisations around the epoch transition. Implementing the Builder API (MEV Boost). Minor bits and pieces on the Merge.
Grandine
Optimisations. Arm64 support. Web3Signer support - initial functionality is in place.
Makes the mesh more efficient (reduces bandwidth consumption) without changing too much in gossipsub. Modifications to gossipsub are very minor. Not yet in use in Filecoin or elsewhere yet, though (gossipsub is doing OK there).
Sigma Prime is looking for a Go dev to make an implementation of this.
The episub spec is not very useful - we really only need to add a single extra control message to gossipsub.
[Lighclient] Discussed the Builder API on ACD last week. How important is it for validators to control the gas limit of blocks? Overwhelming desire was yes, it's important. Thus spec updated to add this parameter in the signed data.
Builder API PR has received a lot of feedback. Teams implementing it felt there was a lot of work going into reworking the serialisation - prefer to pivot to HTTP REST API. Lightclient is rewriting the API in REST format (no significant logic changes). Would like feedback when the draft is done.
All this currently lives in the execution API repo. Should we move it to its own repo? [Danny] Yes, this is not core, so makes sense to be separate.
There is a pending PR that's been sitting around for a week and a half: how to get that moving? (206). Danny to review.
Can client teams get implementations done in the next couple of weeks?
There is no way to compare blocks received externally vs my local execution client's block. We should have some heuristic to check whether we locally have better blocks than the relays give us. Can we use the eth_api to get some info? The blocks would need to be executed to compare them. This will introduce delays. [Mikhail] Suggest a get_payload_v2 API as discussed at Devconnect, can be done post-Merge if we trust the relays a little meanwhile. [Terence] what sort of time-out should we give relays? Something like 1s.
Plan a release of the REST API spec version in the next week.
[Micah] We should continue the IPv6 discussion, perhaps on Discord. Seems like a legitimate problem if many nodes can speak only IPv6. Although clients must support IPv4, users' networks may not support this.
[Age] Changes to support IPv6, especially in Discovery, are quite extensive, so we do not plan to do anything on this pre-Merge.
Plan for next shadow fork next week. Pari to announce it later.
Are ipv6 only nodes a thing?
All implementations MUST support the TCP libp2p transport, and it MUST be enabled for both dialing and listening (i.e. outbound and inbound connections). The libp2p TCP transport supports listening on IPv4 and IPv6 addresses (and on multiple simultaneously).
Clients must support listening on at least one of IPv4 or IPv6. Clients that do not have support for listening on IPv4 SHOULD be cognizant of the potential disadvantages in terms of Internet-wide routability/support. Clients MAY choose to listen only on IPv6, but MUST be capable of dialing both IPv4 and IPv6 addresses.
ah, says one or the other in the spec! ha