Skip to content

Commit 1580c69

Browse files
authored
docs: add op-reth to hardfork checklist (paradigmxyz#15687)
1 parent e8c4c62 commit 1580c69

File tree

1 file changed

+25
-5
lines changed

1 file changed

+25
-5
lines changed

HARDFORK-CHECKLIST.md

+25-5
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,41 @@
11
# Non-exhaustive checklist for integrating new changes for an upcoming hard fork/devnet
22

3-
## Introducing new EIP types or changes to primitive types
3+
## Introducing new EIP types or changes to primitive types
44

55
- Make required changes to primitive data structures on [alloy](https://github.com/alloy-rs/alloy)
66
- All new EIP data structures/constants/helpers etc. go into the `alloy-eips` crate at first.
77
- New transaction types go into `alloy-consensus`
8-
- If there are changes to existing data structures, such as `Header` or `Block`, apply them to the types in `alloy-consensus` (e.g. new `request_hashes` field in Prague)
8+
- If there are changes to existing data structures, such as `Header` or `Block`, apply them to the types in
9+
`alloy-consensus` (e.g. new `request_hashes` field in Prague)
910

1011
## Engine API
1112

12-
- If there are changes to the engine API (e.g. a new `engine_newPayloadVx` and `engine_getPayloadVx` pair) add the new types to the `alloy-rpc-types-engine` crate.
13-
- If there are new parameters to the `engine_newPayloadVx` endpoint, add them to the `ExecutionPayloadSidecar` container type. This types contains all additional parameters that are required to convert an `ExecutionPayload` to an EL block.
13+
- If there are changes to the engine API (e.g. a new `engine_newPayloadVx` and `engine_getPayloadVx` pair) add the new
14+
types to the `alloy-rpc-types-engine` crate.
15+
- If there are new parameters to the `engine_newPayloadVx` endpoint, add them to the `ExecutionPayloadSidecar` container
16+
type. This types contains all additional parameters that are required to convert an `ExecutionPayload` to an EL block.
1417

1518
## Reth changes
1619

1720
### Updates to the engine API
1821

1922
- Add new endpoints to the `EngineApi` trait and implement endpoints.
20-
- Update the `ExecutionPayload` + `ExecutionPayloadSidecar` to `Block` conversion if there are any additional parameters.
23+
- Update the `ExecutionPayload` + `ExecutionPayloadSidecar` to `Block` conversion if there are any additional
24+
parameters.
2125
- Update version specific validation checks in the `EngineValidator` trait.
26+
27+
## Op-Reth changes
28+
29+
### Updates to the engine API
30+
31+
Opstack tries to be as close to the L1 engine API as much as possible. Isthmus (Prague equivalent) introduced the first
32+
deviation from the L1 engine API with an additional field in the `ExecutionPayload`. For this reason the op engine API
33+
has it's own server traits `OpEngineApi`.
34+
Adding a new versioned endpoint requires the same changes as for L1 just for the dedicated OP types.
35+
36+
### Hardforks
37+
38+
Opstack has dedicated hardkfors (e.g. Isthmus), that can be entirely opstack specific (e.g. Holocene) or can be an L1
39+
equivalent hardfork. Since opstack sticks to the L1 header primitive, a new L1 equivalent hardfork also requires new
40+
equivalent consensus checks. For this reason these `OpHardfork` must be mapped to L1 `EthereumHardfork`, for example:
41+
`OpHardfork::Isthmus` corresponds to `EthereumHardfork::Prague`. These mappings must be defined in the `ChainSpec`.

0 commit comments

Comments
 (0)