ECIP 1103: Magneto EVM and Protocol Upgrades Source

AuthorAfr Schoe
Discussions-Tohttps://github.com/ethereumclassic/ECIPs/issues/412
StatusAccepted
TypeMeta
Created2021-02-09

Simple Summary

Enable the outstanding Ethereum Foundation Berlin network protocol upgrades on the Ethereum Classic network in a hard-fork code-named Magneto 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 Berlin hardforks. The proposed changes for Ethereum Classic’s Berlin upgrade include:

  • Reprices the gas cost of the ModExp (0x00..05) precompile.
  • Increases gas cost for SLOAD, *CALL, BALANCE, EXT*, and SELFEDESTRUCT when used for the first time in a transaction.
  • Defines a new transaction type that is an envelope for future transaction types.
  • Adds a transaction type which contains an access list, a list of addresses and storage keys that the transaction plans to access.

This document proposes the following blocks at which to implement these changes in the Classic networks:

  • 3_985_893 on Mordor Classic PoW-testnet (June 2nd, 2021)
  • 4_368_634 on Kotti Classic PoA-testnet (June 9th, 2021)
  • 13_189_133 on Ethereum Classic PoW-mainnet (July 21st, 2021)

For more information on the opcodes and their respective EIPs and implementations, please see the Specification section of this document.

Motivation

To enhance the Ethereum Virtual Machine’s (EVM) capabilities, various opcodes shall be added to the Ethereum Classic networks, all of which have been in use on the Ethereum Foundation networks since early 2021.

Specification

Technical specifications for each EIP can be found at those documents respectively:

Rationale

Interoperability: Establishing and maintaining interoperable behavior between Ethereum clients is essential for developers and end-user adoption, yielding benefits for all participating chains (e.g., ETH and ETC, Ropsten and Mordor, Görli and Kotti).

Immutability: None of the introduced new opcodes in the EVM has the potential to change the behavior of existing contracts; in the case where previously an arbitrary invalid bytecode would have been deployed to the network, none of them would be able to modify the state of the Ethereum Classic networks retrospectively. Adding opcodes to the EVM increases its functionality and should be considered a feature upgrade rather than a modification.

Implementation

Adoption of the content of this ECIP requires a hard fork as it introduces changes that are not backward compatible.

The following clients with Ethereum Classic support implement the Berlin features currently and will be able to support the Magneto upgrade:

  • Core-Geth (maintained by ETC Core)
  • Hyperledger Besu (maintained by ConsenSys)

The Mantis client (maintained by IOHK) plans to eventually support the upgrade, but will not so do by the time of the hardfork.

Copyright and related rights waived via CC0.