ECIP 1086: SLOAD Gas Patch for the Classic Testnets Source

AuthorTalha Cross
Discussions-Tohttps://github.com/ethereumclassic/ECIPs/issues/262
StatusRejected
TypeStandards Track
CategoryCore
Created2020-02-18

Simple Summary

Issues with the Aztlán protocol upgrades were identified and sufficiently patched with the Phoenix protocol upgrades. However, the subsequent activation of these upgrades on the Kotti and Mordor testnets revealed inconsistencies between client implementations. This document proposes a patch for the aforementioned testnets.

Abstract

The EIP-2200 defines structured definitions of net-gas metering for the SSTORE opcode. This EIP was activated in a bundle called EIP-1679 “Istanbul” on the Ethereum Foundation network and ECIP-1061 “Aztlán” on the Ethereum Classic network.

Notably, the difference here is that Istanbul contained EIP-1884 which repriced various opcodes for trie-size dependent operations, whereas Aztlán did not.

Both EIP-1884 and EIP-2200 propose the SLOAD_GAS to be increased from 200 to 800 but not all clients correctly implemented this change for both EIPs leaving networks configured with a pick-and-mix EIP configuration such as Aztlán with an incompatible configuration as compared to clients who correctly implemented the specifications.

Motivation

This specification seeks to validate the incomplete configuration in favor of retaining the Kotti and Mordor testnets in consensus. This ECIP shall not be considered on mainnet. It’s sole purpose is to allow avoiding a rollback on the testnets and having a proper documentation on the cause for the gas mismatch and providing instructions for client developers how to circumvent this.

Specification

At BLOCK_NUMBER maintain a consistent SLOAD_GAS cost of 200.

This applies only under the condition:

A subsequent protocol upgrade disabling EIP-2200 (such as ECIP-1078 Phoenix) makes this gas pricing configuration obsolete if it’s activated at the same BLOCK_NUMBER.

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

  • 778_507 on Mordor Classic PoW-testnet (Jan 30th, 2020)
  • 2_058_191 on Kotti Classic PoA-testnet (Feb 12th, 2020)

Rationale

The inconsistency was discovered in a consensus issue on the Mordor Classic testnet between Hyperledger Besu, ETC Core Multi-Geth, and Parity Technologies Parity Ethereum.

It turned out that Besu correctly implemented EIP-2200 whereas Parity and Geth chose a sloppy implementation under the assumption of having this gas change already included with EIP-1884.

The following code changes to the clients are relevant for this ECIP:

Note, that accepting and merging these pull requests would either require to roll back the Kotti and Mordor testnets or to accept this ECIP-1086 to patch the SLOAD gas to 200. As author of this proposal I will champion for a patch in favor of a rollback.

Implementation

Adoption of the content of this ECIP requires a configuration for all clients to allow for configuring SLOAD_GAS as per ECIP-1086. The implementation cost is considered low.

An implementation is available for:

Copyright and related rights waived via CC0.