# Amphora Client Milestone Tracker *→ [Amphora Merge High-Level Technical Plans](https://notes.ethereum.org/@djrtwo/f2f-tech-plans)* #### Milestone tracker *Please link to your primary tracking issue against the name of your client (first column).* |M0|M1|M2|M3|M4|M5|Docs| |--|--|--|--|--|--|--| [Besu][Besu-Link] |✅|✅Lodestar<br>✅Lighthouse<br>✅Teku<br>✅Nimbus|✅Lodestar<br>✅Lighthouse<br>✅Teku<br>✅Nimbus|✅Teku<br>✅Lodestar<br>✅Lighthouse<br>✅Nimbus|✅|[interop instructions](https://github.com/hyperledger/besu/issues/2830) Erigon | [EthereumJS](https://github.com/ethereumjs/ethereumjs-monorepo/issues/1511) |✅|✅Lighthouse<br>✅[Lodestar][EthereumJS-Lodestar-M2-link]<br>✅Nimbus<br>✅Teku|✅Lighthouse<br>✅[Lodestar][EthereumJS-Lodestar-M3-link]<br>✅Teku|||[transition instructions](https://hackmd.io/@ralxz/HkQHW9t4F)<br>[Hacknet v2](https://hackmd.io/@ralxz/HkQHW9t4F#Hacknet-v2) [Geth][Geth-Link] |✅|✅Prysm<br> ✅[Lighthouse][lh-m2-geth]<br>✅Lodestar<br>✅[Nimbus][nimbus-m2-geth]<br>✅Teku|✅[Lighthouse][lh-m3-geth]<br>✅Lodestar<br>✅Teku<br>✅Nimbus|✅Lighthouse<br>✅Lodestar<br>✅Nimbus<br>✅Teku |✅ | [transition instructions][geth-instruction]<br>[hacknet instructions][geth-hacknet] [Nethermind][Neth-notes-link] |✅|✅[Lighthouse][Neth-Lighthouse-link]<br>✅[Lodestar][Neth-Lodestar-link]<br> ✅[Nimbus][Neth-Nimbus-link]<br> ✅[Teku][Neth-Teku-link]|✅[Lighthouse][Neth-Lighthouse-link-m3]<br> ✅[Lodestar][Neth-Lodestar-link-m3]<br> ✅Nimbus<br> ✅[Teku][Neth-Teku-link-m3]|✅Lighthouse<br> ✅Lodestar<br>✅Nimbus<br> ✅Teku<br>|✅|[docs][Nethermind-docs-link] [Nimbus][Nimbus-Link] |✅|✅[Geth][nimbus-m2-geth]<br> ✅[Nethermind][Neth-Nimbus-link]<br>✅EthereumJS<br>✅Besu|✅Besu<br>✅[Geth][nimbus-m3-geth]<br>✅Nethermind|✅[Geth][nimbus-m4-geth]<br>✅Nethermind<br>✅Besu|✅|[Docs](https://github.com/status-im/nimbus-eth2/blob/amphora-merge-interop/docs/interop_merge.md) [Lighthouse][Lighthouse-link] |✅|✅Besu<br>✅[Geth][lh-m2-geth]<br>✅[Nethermind][lh-m2-neth]<br>✅EthereumJS|✅EthereumJS<br>✅[Geth][lh-m3-geth]<br>✅Besu<br>✅Nethermind|✅Geth<br>✅Lodestar<br>✅Besu<br>✅Nethermind|✅|[Installation][Lighthouse-link], [Testnet Scripts][lh-milestones] [Lodestar][Lodestar-link] |✅|✅Besu<br>✅[EthereumJS][EthereumJS-Lodestar-M2-link]<br>✅Geth <br> ✅[Nethermind][Neth-Lodestar-link]|✅Geth <br> ✅[EthereumJS][EthereumJS-Lodestar-M3-link] <br> ✅Besu <br> ✅Nethermind|<br>✅Besu <br>✅Geth<br>✅Nethermind|✅|[Testnet Instructions](https://github.com/ChainSafe/lodestar/tree/merge-interop/amphora) <br> [Hacknet V1](https://github.com/ChainSafe/lodestar/tree/merge-interop/amphora/v1) <br> [Hacknet V2](https://github.com/ChainSafe/lodestar/tree/merge-interop/amphora/v2) [Prysm][Prysm-Branch] |✅|✅Geth<br>|✅Geth<br>|✅Geth<br>|✅|[M2][Prysm-M2]<br>[M3][Prysm-M3]<br> [Teku][Teku-Link] |✅|✅Geth<br> ✅[Nethermind][Neth-Teku-link]<br>✅Besu<br>✅EthereumJS|✅Geth<br>✅Besu<br>✅EthereumJS<br>✅Nethermind|✅[Geth][GeBeKuHouse-link]<br>✅[Besu][GeBeKuHouse-link]<br>✅[Lighthouse][GeBeKuHouse-link]<br>✅Nethermind|✅| [Umbrella issue](https://github.com/ConsenSys/teku/issues/4226),<br>[generic M3](https://gist.github.com/tbenr/48758e83d7d154b2c97e757ccbba3103),<br>[hacknet V2](https://github.com/karalabe/hacknet/blob/main/v2/README-Consensus-Teku.md) [EthereumJS-Lodestar-M2-link]: https://hackmd.io/B1nMKhIiRBWRtgP4-d5KHw?both#EthereumJS-lt-gt-Lodestar-M2 [EthereumJS-Lodestar-M3-link]: https://hackmd.io/B1nMKhIiRBWRtgP4-d5KHw?both#EthereumJS-lt-gt-Lodestar-M3 [Nethermind-docs-link]: https://github.com/NethermindEth/nethermind/tree/themerge/amphora [Neth-notes-link]: https://github.com/NethermindEth/nethermind/issues/3461 [Neth-Lighthouse-link]:https://github.com/NethermindEth/nethermind/blob/themerge/amphora/neth-lighthouse.md [Neth-Lighthouse-link-m3]:https://github.com/NethermindEth/nethermind/blob/themerge/amphora/neth-lighthouse-m3.md [Neth-Nimbus-link]:https://github.com/NethermindEth/nethermind/blob/themerge/amphora/neth-nimbus.md [Neth-Lodestar-link]:https://github.com/NethermindEth/nethermind/blob/themerge/amphora/neth-lodestar.md [Neth-Lodestar-link-m3]:https://github.com/NethermindEth/nethermind/blob/themerge/amphora/neth-lodestar-m3.md [Neth-Teku-link]:https://github.com/NethermindEth/nethermind/blob/themerge/amphora/neth-teku.md [Neth-Teku-link-m3]:https://github.com/NethermindEth/nethermind/blob/themerge/amphora/neth-teku-m3.md [Nimbus-Link]: https://github.com/status-im/nimbus-eth2/issues/2859 [Lighthouse-Link]: https://github.com/sigp/lighthouse/pull/2620 [Geth-Link]: https://github.com/ethereum/go-ethereum/pull/23607 [geth-instruction]: https://notes.ethereum.org/_UH57VUPRrC-re3ubtmo2w [geth-hacknet]: https://github.com/karalabe/hacknet [geth-engine-vectors]: https://notes.ethereum.org/@9AeMAlpyQYaAAyuj47BzRw/rkwW3ceVY [Lodestar-Link]: https://github.com/ChainSafe/lodestar/issues/3275 [Prysm-Branch]: https://github.com/prysmaticlabs/prysm/pull/9754 [Prysm-M2]: https://hackmd.io/9eAvjn7ETdS-XZPFT7d6Tg?view [Prysm-M3]: https://hackmd.io/rQyrCXHfSyyGk5mqWK4G2w?view [lh-m2-geth]: https://github.com/sigp/lighthouse-merge-f2f/tree/master/m2_geth [lh-m2-neth]: https://github.com/sigp/lighthouse-merge-f2f/tree/master/m2_nethermind#terminal-1-nethermind [lh-m3-geth]: https://github.com/sigp/lighthouse-merge-f2f/tree/master/m3_geth [nimbus-m3-geth]: https://github.com/status-im/nimbus-eth2/blob/amphora-merge-interop/docs/interop_merge_m3_geth.md [nimbus-m4-geth]: https://github.com/karalabe/hacknet/blob/main/v2/README-Consensus-Nimbus.md [lh-milestones]: https://github.com/sigp/lighthouse-merge-f2f [nimbus-m2-geth]: https://github.com/status-im/nimbus-eth2/blob/amphora-merge-interop/docs/interop_merge.md [Teku-link]: https://github.com/ConsenSys/teku/tree/merge-interop [Besu-Link]: (https://github.com/hyperledger/besu/issues/2830) [nimbus-m4-geth]: https://github.com/karalabe/hacknet/blob/main/v2/README-Consensus-Nimbus.md [GeBeKuHouse-link]: https://github.com/ajsutton/merge-scripts/tree/main/localnet To track progress across all 10 clients (5 execution, 5 consensus), we suggest creating an Amphora tracking issue in your repo. We'll link to those issues here as well as track high-level milestones at a glance. 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 **M1** and **M2**. We aim to provide more pre-interop testing to accompany **M1** as we approach the event. Keep your eyes peeled :eyes: Note: In parallel to these client team milestones, some of the group will be working on merge testnet automation tools throughout the week. --- [toc] ### Milestones - **M0**: *Implementation started* - Signify that implementation has started by creating a tracking issue and linking in the above table - **Docs**: *Core Documentation* - EL/CL: detailed documentation on how to run your merge client - Link under "Docs" in milestone table - **M1**: *Spec Implemented* - EL/CL: pass all released consensus test vectors - Geth sanity engine vectors - CL: run through [engine test vectors][geth-engine-vectors] calling against geth - EL: initialize client with same genesis and run through [engine vectors][geth-engine-vectors] - More advanced vectors and mocked communications - Other testing tools are in progress. Will update as soon as available - EL/CL (*Experimental*): run against [mergemock](https://github.com/protolambda/mergemock) - **M2**: *1-to-1 Interop (no transition)* -- One EL and one CL team pair off for basic interop testing - Perform the following with at least two separate teams: - run 1:1 devnet without transition (`TTD == 0`) - Record teams interop'd with alongside ✅ in milestone table -- e.g. "✅ lodestar, teku" - **M3**: *1-to-1 Interop (with transition)* -- One EL and one CL team pair off for full interop testing - Perform the following with at least two separate teams: - run 1:1 devnet with transition (`TTD > 10`) *[[note on clique vs pow](#Clique-vs-PoW)]* - Record teams interop'd with alongside ✅ in milestone table -- e.g. "✅ nethermind, besu" - **M4**: *Many-to-Many Interop* -- 2 or more EL and CL teams perform interop testing - Run many:many devnet with transition (`TTD > 50`) - Record teams and devnet config/results in separate issue - **M5**: *All-to-All persistent devnet* -- All ready EL and CL teams create a long-lived devnet - Run many:many devnet with transition (`TTD > 100`) - Keep the devnet up for continuous testing and fun - Create basic README for the public to connect #### Clique vs PoW We suggest using clique as the eth1 network for *initial* merge transition interop testing. Fortunately, clique uses total-difficulty fork choice so has a fairly straightforward mapping to a real PoW network. For rapid iteration and easy cooridination, clique is great. As we ramp up testing, we'll eventually transition to utilize PoW nets.