# Edelweiss 🏔️ Shapella Client Milestone Tracker *→ [Edelweiss High-Level Technical Plans](https://notes.ethereum.org/@timbeiko/edelweiss-milestones)* *→ [EIP-4844 Milestones](https://notes.ethereum.org/@djrtwo/edelweiss-4844-tracker)* ## Milestone tracker ### Execution Layer |Client|M0|M1|M2|M3|M4|M5|Docs| |--|--|--|--|--|--|--|--| |Besu|[Issue][besuM0] | [Latest PR (main)][besuM1] |Erigon| |EthereumJS|[Issue][EthJSM0] |[master][Ejsmaster] | | | | | [Docs][EthJSDocs] |Geth|[PR][gethPR]| [PR][gethPR] |Nethermind|[PR][nethermindM0]|[master][nethermindM1]| | | | | | [EthJSM0]: https://github.com/ethereumjs/ethereumjs-monorepo/issues/2491 [EjsMaster]: https://github.com/ethereumjs/ethereumjs-monorepo [EthJSDocs]: https://github.com/ethereumjs/ethereumjs-monorepo/issues/2491 [besuM0]: https://github.com/hyperledger/besu/issues/4746 [besuM1]: https://github.com/hyperledger/besu/pull/4968 [nethermindM0]: https://github.com/NethermindEth/nethermind/pull/4731 [nethermindM1]: https://github.com/NethermindEth/nethermind/tree/master [gethPR]: https://github.com/lightclient/go-ethereum/tree/withdrawals-timestamp ### Consensus Layer |Client|M0|M1|M2|M3|M4|M5|Docs| |--|--|--|--|--|--|--|--| |Lighthouse | | | | |Lodestar| [Issue](https://github.com/ChainSafe/lodestar/issues/5016) |Nimbus| |Prysm| |Teku| [Issue](https://github.com/ConsenSys/teku/issues/6723) | [master](https://github.com/ConsenSys/teku) | | | | | [Docs PR](https://github.com/ConsenSys/doc.teku/pull/412) | To track progress across all 10 clients (5 execution, 5 consensus), please create an **Edelweiss Shapella tracking issue** in your repo. We’ll link to those issues here as well as track high-level milestones at a glance. Please also link to any interop docs/notes under “Docs”. Note, the milestones below aim ground our hands-on work during our time together. Although the strategy and plan will certainly evolve throughout the week, the progressive milestones below are designed to parallelize our efforts and to avoid wasting other teams’ valuable time before you are ready – this is especially true of **M0** and **M1**. **If you don’t complete M0 and M1 prior to arrival, expect to sit alone in a corner feeling intense fomo as your friends build sweet devnets.** --- ## Milestones * **Docs:** Core Documentation * EL/CL documentation on how to run your Shapella client * CL: documentation on performing `0x00` -> `0x01` credential changes * **M0:** 1:1 Shapella Devnet Support & Tracking Issue * Run on [EF Devops Withdawals devnet](https://forkmon.withdrawalsdevnet1.ethpandaops.io/) with 1+ other client * Have a tracking issue for Edelweiss Shapella and link it in the M0 column * **M1:** All:all Shapella Devnet Support * Run on EF Devops Shapella devnet with all other production clients (i.e. a single EL running with all CLs or vice-versa) * Link to PR/branch with latest implementation for client * Pass all EL/CL test vectors, on specs, ethereum/tests and Hive * **⭐️ Challenge ⭐️: complete prior to Edelweiss** * **M2:** Stable Performance During Devnet Stress Test * Run as the devnet is being stress-tested with: * Validator & non-validator nodes for each client * Nodes being brought offline and back online * Nodes joining the network pre and post fork * Node database being dropped * `MAX_BLS_TO_EXECUTION_CHANGES`, `MAX_WITHDRAWALS_PER_PAYLOAD` & `MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP` being processed consistently * Non-finality * Failure recovery * Bonus: performance metrics while processing this * **M3:** Clean Goerli Shadow Fork * Bug-free Goerli shadow fork with all EL:CL client combinations * Record teams interop’d with seamlessly ✅ in milestone table – e.g. “✅ lodestar, teku” * **M4:** Clean Mainnet Shadow Fork * Bug-free Mainnet shadow fork with all EL:CL client combinations * Record teams interop’d with seamlessly ✅ in milestone table – e.g. “✅ lodestar, teku” * Stress tests * evil prysm * evil geth * finality break (turn off 50% validators for > 10 epochs) * **M5:** Production Grade Shapella Implementation * Stable client implementation, ready for a public testnet release * Includes documentation, especially validator credential changes * *Stretch goal*: support for [`engine_getPayloadBodiesByRangeV1`](https://github.com/ethereum/execution-apis/pull/218)