--- tags: nyota --- # Pectra Interop Milestones Useful links: * [Nyota Interop Milestones](/5kHfzDg7SxOYTTdiEKqxNA) * [Verkle Interop Milestones](https://notes.ethereum.org/@gballet/verke_interop_milestones) * [PeerDAS Interop Milestones](https://notes.ethereum.org/@ethpandaops/peerdas-devnet-0) * [Nyota Agenda](https://docs.google.com/spreadsheets/d/1uBxWGHuWipTBdbzV019YPcYAOMJqJDkU1UkAI_Qarrc/edit?usp=sharing) ## Interop Milestone Tracker :::info **All milestones in this document are based on the [pectra-devnet-0](https://notes.ethereum.org/@ethpandaops/pectra-devnet-0) specs.** ::: | Client | M0 | M1 | M2 | M3 | M4 | M✨ | SSZ | |-----|-----|-----|-----|-----|-----|-----|-----| |[Lighthouse](https://github.com/sigp/lighthouse/tree/ef-tests-electra) |:heavy_check_mark: |Nethermind, Besu, Reth | | 🦓 🦍 🐐 🦚 | | |[Teku](https://github.com/Consensys/teku/labels/Epic%20Electra)|:heavy_check_mark:|Nethermind | Nethermind, Besu | 🦓 🦍 🐐 🦚 | | |[Lodestar](https://github.com/ChainSafe/lodestar/issues/6341) |:heavy_check_mark:|Nethermind| | 🦍 🦚 | ||🐼 |[Prysm](https://github.com/prysmaticlabs/prysm/issues/13849)||Nethermind Geth| Nethermind,Geth | 🦚 | |Nimbus | :heavy_check_mark: | | Nethermind, Geth, EthJS | 🦓 🦍 | ||🐼| |Grandine|:heavy_check_mark:|Nethermind Geth| Nethermind,Geth | 🦚 |[Geth](https://github.com/lightclient/go-ethereum/tree/prague-devnet-0)|:heavy_check_mark:|Grandine, Lodestar| | 🦍 🐐 🦚 |[Nethermind](https://github.com/NethermindEth/nethermind/issues/6867) |:heavy_check_mark: | Grandine, Lighthouse, Reth, Teku | Geth, Grandine Besu, Teku| 🦓 🦍 🐐 🦚 | |[Besu](https://github.com/hyperledger/besu/issues/6308) |:heavy_check_mark: |Teku, Lighthouse| Besu, Nethermind, Teku, Geth | 🐐 |Erigon ||||||| 🐼 |[Reth](https://github.com/paradigmxyz/reth/issues/7363)|:heavy_check_mark:|CL: Lighthouse, Grandine, Teku, EL: Nethermind | Lighthouse-Reth & Grandine-Reth, Lighthouse-Reth & Grandine-Nethermind |🦚 | |[EthereumJS](https://github.com/ethereumjs/ethereumjs-monorepo)|:heavy_check_mark:| | | 🦓 🦍 🦚 | *Note: if your team has a Pectra or devnet-0 tracking issue, link it in the **Client** column.* `🦓: Teku, Lighthouse, Nethermind, EthereumJS` `🦍: Lodestar, Teku, Lighthouse, Nethermind, EthereumJS, Geth` `🐐: Besu, Teku, Lighthouse, Nethermind, Geth` `🦚: Lighthouse, Teku, Prysm, Grandine, Lodestar, Nethermind, EthereumJS, Geth, Besu` --- ### M0 --- single client implementation * Full [devnet-0](https://notes.ethereum.org/@ethpandaops/pectra-devnet-0) implementation, passing all static tests. * When complete, add a :heavy_check_mark: in the M0 cell of your client's row. :::warning **Ideally, M0 should be completed before interop!** ::: ### M1 --- 1:1 interop * Run a local devnet with a counterpart client, e.g. an EL client runs with a devnet-0-ready CL, or vice-versa. * When complete, record the counterpart client in the M1 cell of your client's row. * For example, if Teku interops with Nethermind locally, then `Teku[M1]` should read `Nethermind` and `Nethermind[M1]` should read `Teku`. ### M2 --- 2:1 interop * Achieve finalization on a local devnet with another client from each layer. For, e.g. an EL client to achieve M2, at least one other EL client should be running on the same network, even if they both use the same CL.. * When complete, record both other clients in the M2 cell of your client's row. * For example, in a Teku, Nethermind and Besu devnet, `Nethermind[M2]` would read `Teku, Besu`, `Besu[M2]` would read `Nethermind, Teku`, and Teku would remain blank until it interops with another CL. ### M3 --- M:N interop * Achieve finalization on a local devnet with 2+ ELs and 2+ CLs, all with full devnet-0 support * When complete, name the devnet using a Kenya-themed animal emoji (but not 🐘, that's Verkle!), add the emoji-client mapping under the **Interop Milestone Tracker** table, and add the emoji in the M3 cell of each client participating in the devnet. * For example, in a Lodestar, Prysm, Besu and Reth devnet, hypothetically named 🐘 (again, don't use that one :-), each of these clients' M3 cell would have an 🐘 emoji, and under the table, the following reference would be added: `🐘: Lodestar, Prysm, Besu, Reth` ### M4 --- All Client Interop * All clients in the table above are running smoothly together using the `pectra-devnet-0` specs: when done, each team's M4 column will have the Nyota emoji: ✨. * **All teams must be on the devnet for this milestone to be ~~complete~~ M4, otherwise, we'll call it `M(clients interoping/total clients)` --- *LFG!*** ### M✨ --- Relay'd 7002 Finalized Withdrawal * On `devnet-0`, process an externally built block via the relay, in which a 7002 EL withdrawal is triggered. Finalize. If your client makes it through, add a ✨ emoji to its `M✨` column. ### SSZ --- StableContainer implementation * 🐼