-
Notifications
You must be signed in to change notification settings - Fork 62
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
8 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,26 +2,26 @@ | |
lang: en | ||
ecip: 1109 | ||
title: Spiral EVM and Protocol Upgrades | ||
status: Draft | ||
status: Last Call | ||
type: Meta | ||
author: Christos Ziogas <[email protected]>, Diego López León <[email protected]>, Isaac Ardis <[email protected]> | ||
created: 2023-05-10 | ||
discussions-to: https://github.com/ethereumclassic/ECIPs/discussions/511 | ||
--- | ||
|
||
### Simple Summary | ||
Enable the outstanding Ethereum Foundation **Shangai** network protocol upgrades on the Ethereum Classic network in a hard-fork code-named Spiral to enable maximum compatibility across these networks. | ||
Enable the outstanding Ethereum Foundation **Shanghai** network protocol upgrades on the Ethereum Classic network in a hard-fork code-named Spiral to enable maximum compatibility across these networks. | ||
|
||
### Abstract | ||
Add support for a subset of protocol-impacting changes introduced in the Ethereum Foundation (ETH) network via the _Shangai_ network upgrade. The proposed changes for Ethereum Classic's _Spiral_ upgrade include: | ||
Add support for a subset of protocol-impacting changes introduced in the Ethereum Foundation (ETH) network via the _Shanghai_ network upgrade. The proposed changes for Ethereum Classic's _Spiral_ upgrade include: | ||
|
||
EIP | Description | Status | ||
-- | -- | -- | ||
4399 | Supplant DIFFICULTY opcode with PREVRANDAO | Compatible inclusion | ||
3651 | Warm COINBASE | Include | ||
3855 | PUSH0 instruction | Include | ||
3860 | Limit and meter initcode | Include | ||
6049 | Deprecate SELFDESTRUCT | Include | ||
4399 | Supplant DIFFICULTY opcode with PREVRANDAO | Omit | ||
4895 | Beacon chain push withdrawals as operations | Omit | ||
|
||
Beacon chain withdrawals are omitted at this time as they are not applicable for Ethereum Classic. | ||
|
@@ -32,17 +32,14 @@ Beacon chain withdrawals are omitted at this time as they are not applicable for | |
- EIP 3855 "PUSH0 instruction": Introduces the PUSH0 (0x5f) instruction, which pushes the constant value 0 onto the stack. | ||
- EIP-3860 "Limit and meter initcode": Limits the maximum size of initcode to 49152 bytes and apply extra gas cost of 2 for every 32-byte chunk of initcode | ||
|
||
##### Compatible inclusion | ||
- EIP 4399 "Supplant DIFFICULTY opcode with PREVRANDAO": Historicaly, the DIFFICULTY (0X44) instruction was used as a source of pseudo randomness. With the switch to Proof of Stake, Ethereum removed the work difficulty so, as a replacement, they now expose a [RANDAO](https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/block-proposal/#random-selection) value taken from the beacon chain. Since v0.8.18, Solidity [deprecates](https://docs.soliditylang.org/en/v0.8.18/cheatsheet.html#global-variables) the `block.difficulty` and replaces it with `block.prevrandao` but this syntactic change still compiles to the same EVM opcode, i.e. `0x44`, which in the Ethereum Classic network will continue to work with the aforementioned _block difficulty_. | ||
|
||
##### Omitted | ||
- EIP 4895 "Beacon chain push withdrawals as operations": In Proof of Stake networks, enable validator withdrawals from the beacon chain to the EVM | ||
- Ethereum Classic network only grants rewards through Proof of Work mining on the canonical chain, there are no validators, so this doesn't apply. | ||
- EIP 4399 "Supplant DIFFICULTY opcode with PREVRANDAO": Historically, the DIFFICULTY (0X44) instruction was used as a source of pseudo randomness. With the switch to Proof of Stake, Ethereum removed the work difficulty so, as a replacement, they now expose a [RANDAO](https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/block-proposal/#random-selection) value taken from the beacon chain. Since v0.8.18, Solidity [deprecates](https://docs.soliditylang.org/en/v0.8.18/cheatsheet.html#global-variables) `block.difficulty` and replaces it with `block.prevrandao` but this syntactic change still compiles to the same EVM opcode, i.e. `0x44`, which in the Ethereum Classic network will continue to evaluate as the aforementioned _block difficulty_ value. | ||
- EIP 4895 "Beacon chain push withdrawals as operations": In Proof of Stake networks, enable validator withdrawals from the beacon chain to the EVM. Ethereum Classic network only grants rewards through Proof of Work mining on the canonical chain, there are no validators, so this doesn't apply. | ||
|
||
This document proposes the following blocks at which to implement these changes in the Ethereum Classic networks: | ||
|
||
- `9_000_000` on Mordor Classic testnet (TBD) | ||
- `18_000_000` on Ethereum Classic mainnet (TBD) | ||
- `9_957_000` on Mordor testnet | ||
- `19_250_000` on Ethereum Classic mainnet | ||
|
||
For more information on the opcodes and their respective EIPs and implementations, please see the _Specification_ section of this document. | ||
|
||
|