Skip to content

Commit 496b4dc

Browse files
authored
Create Merge mainnet-readiness.md
1 parent bf262f0 commit 496b4dc

File tree

1 file changed

+107
-0
lines changed

1 file changed

+107
-0
lines changed

Merge/mainnet-readiness.md

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# The Merge Mainnet Readiness Checklist
2+
3+
This document outlines various tasks to work through to make the Merge ready for Mainnet release.
4+
5+
*Note*: The set of items is not final and will be aligned with ongoing R&D and implementation work.
6+
7+
## Specification
8+
9+
### Consensus layer
10+
11+
* [x] Specs feature complete
12+
* [x] Transition process specified [#2462](https://github.com/ethereum/eth2.0-specs/pull/2462)
13+
* [x] Ensure structural conformance with existing specs [#2472](https://github.com/ethereum/eth2.0-specs/pull/2472)
14+
* [ ] Rebase with Altair
15+
* [ ] Rebase with London (update `ExecutionPayload`)
16+
* [ ] P2P spec (primarily just version bumping topics for new types)
17+
* [ ] Upgrade [`eth2.0-apis`](https://github.com/ethereum/eth2.0-apis) to handle new types
18+
* [ ] [BONUS] Annotated specs
19+
20+
### Execution layer
21+
22+
* [x] High level [design doc](https://hackmd.io/@n0ble/ethereum_consensus_upgrade_mainnet_perspective)
23+
* [x] [Rayonism spec](https://github.com/ethereum/rayonism/blob/master/specs/merge.md)
24+
* [ ] EIPs
25+
* [ ] EVM `DIFFICULTY` -> `RANDOM`
26+
* [ ] EVM `BLOCKHASH` [unchanged but weaker randomness documented in PoW -> PoS transition EIP]
27+
* [ ] Transition process
28+
* [ ] Network -- devp2p
29+
* [ ] Block gossip deprecation
30+
* [ ] State sync post-merge
31+
* [ ] Block sync post-merge
32+
* [ ] Discovery
33+
* [ ] Upgrade JSON-RPC ([`eth1.0-apis`](https://github.com/ethereum/eth1.0-apis)) with new methods and deprecations
34+
* [ ] [BONUS] Executable [`eth1.0-specs`](https://github.com/ethereum/eth1.0-specs/pull/219) and testing through the Merge
35+
36+
### Consensus API
37+
38+
* [x] Basic JSON-RPC extension, [link](https://github.com/ethereum/rayonism/blob/master/specs/merge.md#consensus-json-rpc) (used in rayonism)
39+
* [ ] Production refinements
40+
* [ ] Support execution-layer state sync
41+
* [ ] Support async block insert
42+
* [ ] Consider support for `Consensus <-> Execution` consistency (e.g. recover from crash or bad insert on execution layer)
43+
* [ ] Consider bi-directional communication
44+
* [ ] ...
45+
* [ ] Discuss JSON-RPC vs websockets vs restful http
46+
* [ ] Migrate to [eth1.0-specs](https://github.com/ethereum/eth1.0-specs) or other permanent home
47+
* [ ] Test vectors?
48+
49+
### Public facing documents
50+
51+
* [ ] Merge architecture design document
52+
* [ ] Infrastructure provider guide
53+
* [ ] Rename eth1/eth2 to execution/consensus across repos and documentation
54+
* [ ] [BONUS] Consider relationship between execution and consensus spec/API repos and build processes
55+
56+
## Testing
57+
58+
### Unit tests
59+
60+
* [ ] Consensus
61+
* [x] Inherit all prior unit tests and generators
62+
* [ ] [IN [PROGRESS](https://github.com/ethereum/eth2.0-specs/tree/dev/tests/core/pyspec/eth2spec/test/merge)] Merge specific tests with mocked execution-layer
63+
* [ ] Fork and fork-choice tests across merge boundary
64+
* [ ] Execution
65+
* [ ] Reuse existing framework for most prior EVM unit tests
66+
* [ ] New `DIFFICULTY` opcode tests
67+
68+
### Integration tests
69+
70+
* [ ] Transition process tests with fully enabled consensus and execution layer
71+
* [ ] Consensus-layer vectors with fully enabled execution-layer
72+
* [ ] Hive with all client combos
73+
* [ ] Hive or something else for suite of consensus+execution integration tests
74+
75+
### Stress tests
76+
77+
* [ ] Single client load/metrics
78+
* [ ] Network load testing
79+
80+
### Fuzzing
81+
82+
* [ ] Beacon-fuzz applied to merge ready consensus clients
83+
* [ ] Existing EVM fuzzing infra applied to merge ready execution engines
84+
85+
## Testnets
86+
87+
* [ ] Short-lived devnets without transition process
88+
* [ ] Short-lived devnets *with* transition process
89+
* [ ] Long-lived devnets
90+
* [ ] Fork public testnets
91+
92+
## R&D
93+
94+
Most research has been completed. Only listing things still left to dig deeper into
95+
96+
* [ ] Transition process analysis
97+
* [ ] Simulate PoW network partitioning
98+
* [ ] Evaluate precision of TD computation on historic data
99+
* [ ] Execution-layer sync
100+
* [x] Historic block sync (reverse header then forward body)
101+
* [ ] Historic state sync
102+
* [ ] Sync during transition period
103+
* [ ] Discovery [is there actually anything to do here?]
104+
* [ ] Execution-layer proof of custody
105+
* [ ] Further threat analysis
106+
* [ ] Miner attacks
107+
* [ ] Resource exhaustion post-merge

0 commit comments

Comments
 (0)