--- tags: edelweiss --- # Edelweiss πŸ”οΈ Interop Workshop [toc] ## Workshop Overview & High Level Goals **The main purpose of Edelweiss πŸ”οΈ is for client teams to work together on Shanghai/Capella & EIP-4844 interop.** Edelweiss πŸ”οΈ is _not_ a conference or workshop with predefined talks or breakout rooms. The goal of the event is to bring implementation, testing, and research teams together to resolve cross-client or complicated spec issues, similar to [Amphora](https://hackmd.io/@tvanepps/amphora-milestones) and the Beacon Chain launch interop events. More specifically, there are two high-level goals we'd like to achieve by the end of the workshop: 1. *Production-grade* and flawless Shanghai/Capella Mainnet Shadow Fork πŸ‘» 2. *Feature complete*, spec-frozen EIP-4844 devnet, with all client teams ❄️ To hit these goals and take advantage of this high-bandwidth setting, **client teams are expected to have Shanghai/Capella implementations running on multi-client devents and feature complete / (relatively) stable EIP-4844 implementations prior to the start of the event.** To quote the Amphora event prep document 🏺: > This event will be 10x more successful if most teams tackle the core of their implementations before our time together. This will ensure that: > * everyone has grok’d the difficult problems at hand to allow for a deep level of in-person discourse > * we can hit the ground running on the engineering goals > If you do not have core implementations ready to interop with other teams on day 1, you’ll likely be hacking alone in a corner for the first few days, and the fomo of not being on a group devnet will be massive. With the benefit of hindsight, Amphora _was_ a very successful event, in large part because of the amount of preparation by teams (as well as their intense participation during the workshop)! ## Preparations The items listed below should be completed **before** the start of Edelweiss, i.e. between now and Jan 20. Please track your [4844 progress here](https://notes.ethereum.org/@djrtwo/edelweiss-4844-tracker) and your [Shanghai progress here](https://notes.ethereum.org/@djrtwo/edelweiss-shapella-tracker) ### Shanghai/Capella With withdrawals already hitting devnets and the scope for Shanghai finalized, teams should arrive to the workshop with Shanghai/Capella implementations which pass all test vectors, have been tested on devnets, and likely on a shadow fork or two. Our goal is to end the workshop with a Production-Grade, Flawless MSF. This would put us in a position to fork testnets shortly after the workshop and, therefore, hit our March mainnet target. #### Spec Goals * CL: - [x] [Capella specs](https://github.com/ethereum/consensus-specs/releases/tag/v1.3.0-rc.0) are frozen (`v1.3.0-rc.0`) * EL: - [ ] All [Shanghai Included EIPs](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md#included-eips) are frozen - [ ] **TODO**: agree on commitment scheme for withdrawal roots (or [pass current root in the CL](https://github.com/ethereum/consensus-specs/pull/3078)) - [ ] Timestamp forking specified - [ ] **WIP:** https://github.com/ethereum/EIPs/pull/6122 * Engine API - [ ] Spec Frozen - **TODO:** finalize & merge these PRs: - [ ] [PR#314 - `engine_getPayloadV2`](https://github.com/ethereum/execution-apis/pull/314) - [ ] [PR#337 - Unify failure mode for mismatched structure versions](https://github.com/ethereum/execution-apis/pull/337) - [ ] [PR#338 - Misc. cleanups](https://github.com/ethereum/execution-apis/pull/338) #### Engineering Goals - [ ] Production-grade implementation of Shanghai/Capella in every client team - [ ] Full test converage for Shanghai/Capella on the EL and CL - [x] CL Spec tests - [x] ethereum/tests - [x] EL python tests - [ ] Hive - [ ] All client teams pass both static and integration (Hive) test suites - [ ] [Stretch Goal] Smooth interop between all 20 EL <> CL combinations ### EIP-4844 Shanghai/Capella should be in the finishing stages of implementation in January, thus it is expected that the majority of the workshop will be spent on EIP-4844 interop. By then the spec should be finalized, with teams' implementations passing all test vectors. #### Spec Goals - [ ] Spec freeze 10 days before Edelweiss - [x] All spec-related items in [4844 readiness checklist](https://github.com/ethereum/pm/blob/master/Breakout-Room/4844-readiness-checklist.md) resolved - [x] Consensus-critical design/functionality freeze in the EL, CL and Engine API - [ ] All dependencies on Shanghai/Capella resolved - [ ] Full test coverage across the EL & CL - [ ] Static EL & CL test suites - [ ] Hive tests with EL/CL mock - [ ] Networking & blob/block count informed by results of mainnet big block spam tests & devnet full blob testing #### Engineering Goals - [x] All client-related items in [4844 readiness checklist](https://github.com/ethereum/pm/blob/master/Breakout-Room/4844-readiness-checklist.md#client-level-open-issues) resolved - [ ] Full implementation in each client * KZG library * Passes all static and Hive tests * Single-client local interop * Nice to have: robust sync, transaction pool and gossip implementations - [x] Multi-client devnet with >50% of client teams - [ ] KZG Ceremony launched and accepting contributions ## Workshop Milestones **🚧 WIP: expect refinements in this section as we get closer to the start of the workshop 🚧** The high level goals for the workshop are discussed below. ### Flawless Shanghai/Capella Mainnet Shadow Fork πŸ‘» #### [β†’ Shapella Milestones Tracker](https://notes.ethereum.org/@djrtwo/edelweiss-shapella-tracker) #### Spec Goals * All spec issues for Shanghai/Capella should be resolved prior to the start of the workshop #### Engineering Goals * Bug-free, production-grade mainnet shadow fork with all 20 EL <> combinations * Confidence by all teams that the software used for the MSF could be used for testnet forks * Bonus: documentation, including `0x00` -> `0x01` credential change ### Spec-frozen EIP-4844 devnet, with all client teams ❄️ #### [β†’ 4844 Milestones Tracker](https://notes.ethereum.org/@djrtwo/edelweiss-4844-tracker) #### Spec Goals * Everything frozen, down to the last constant! #### Engineering Goals * Smooth interop between all 20 EL <> CL combinations * Validator and non-validator nodes * Pre-sync'ed nodes & nodes joining post-upgrade, incl. shutdown/restart * Failure recovery * Stress-testing of clients with blob spamming, data deletion, etc. * Metrics on node performance, bandwidth usage, etc. across all clients ---