-
-
Published
Linked with GitHub
# Shanghai "Prototype" Devnets
On the [EOF breakout](https://notes.ethereum.org/@timbeiko/eof-breakout), we discussed how to best implement devnets with EIPs that _could_ be included in Shanghai but yet haven't been confirmed.
There are two ways EL clients can do this: either by bundling [Shanghai Included EIPs](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md#included-eips) with potential additions in a single fork, or by separating them and having a "Shanghai Core" fork first activate, followed by another fork activating the EIPs pending inclusion.
A few things we would like to optimize for:
* Having the lowest possible friction for client teams to implement & test EIPs formally included in Shanghai
* Maintaining the ability to easily add/remove candidate EIPs to Shanghai depending on what is decided
* Interop with CL clients
Taking what's been included in Shanghai so far, and EOF & EIP-4844 as examples, this is what it would look like with each option. Any future EIP that officially get included would be added to the "Shanghai Core" bucket.
## Activate candidate EIPs after 'Shanghai Core'
### EIPs part of devnets
* **Shanghai Core**:
* EIP-3651: Warm COINBASE
* EIP-3855: PUSH0 instruction
* EIP-3860: Limit and meter initcode
* EIP-4895: Beacon chain push withdrawals as operations
* **Shandong v2**:
* EIP-3540: EVM Object Format (EOF) v1
* EIP-3670: EOF - Code Validation
* EIP-4200: Static relative jumps
* EIP-4750: EOF - Functions
* **ProtoDanksharding devnet**:
* EIP-4844: Shard Blob Transactions
### Fork activation schedule
**Shanghai Core**
- Fork 0: Mainnet Genesis
- ...
- Fork N: Paris
- Fork N+1: Shanghai Core
**Shangdong v2**
- Fork 0: Mainnet Genesis
- ...
- Fork N: Paris
- Fork N+1: Shanghai Core
- Fork N+2: Shangdong v2
> Note: this "breaks" the current Shangdong spec, which bundles Shanghai Core (except 4895) with EIP-3540 and 3670.
**ProtoDanksharding devnet**
- Fork 0: Mainnet Genesis
- ...
- Fork N: Paris
- Fork N+1: Shanghai Core
- Fork N+2: ProtoDanksharding
## Bundle everything together
### EIPs part of devnets
* **Shanghai Core**:
* EIP-3651: Warm COINBASE
* EIP-3855: PUSH0 instruction
* EIP-3860: Limit and meter initcode
* EIP-4895: Beacon chain push withdrawals as operations
* **Shangdong v2**:
* [*unclear whether to include EIP-4895*]
* EIP-3651: Warm COINBASE [*in Shandong v1*]
* EIP-3855: PUSH0 instruction [*in Shandong v1*]
* EIP-3860: Limit and meter initcode [*in Shandong v1*]
* EIP-3540: EVM Object Format (EOF) v1 [*in Shandong v1*]
* EIP-3670: EOF - Code Validation [*in Shandong v1*]
* EIP-4200: Static relative jumps
* EIP-4750: EOF - Functions
* **ProtoDanksharding devnet**
* [*unclear whether to include EIP-4895*]
* EIP-3651: Warm COINBASE
* EIP-3855: PUSH0 instruction
* EIP-3860: Limit and meter initcode
* EIP-4844: Shard Blob Transactions
### Fork activation schedule
**Shanghai Core**
- Fork 0: Mainnet Genesis
- ...
- Fork N: Paris
- Fork N+1: Shanghai Core
**Shangdong v2**
- Fork 0: Mainnet Genesis
- ...
- Fork N: Paris
- Fork N+1: Shangdong v2
> Note: this "breaks" the current Shangdong spec, which bundles Shanghai Core (except 4895) with EIP-3540 and 3670.
**EIP-4844 devnet**
- Fork 0: Mainnet Genesis
- ...
- Fork N: Paris
- Fork N+1: ProtoDanksharding