ECIP 1086: SLOAD Gas Patch for the Classic Testnets
Author | Talha Cross |
---|---|
Discussions-To | https://github.com/ethereumclassic/ECIPs/issues/262 |
Status | Rejected |
Type | Standards Track |
Category | Core |
Created | 2020-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:
- that ECIP-1061 Aztlán was activated without ECIP-1078 Phoenix,
- OR that EIP-2200 was activated without EIP-1884.
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:
- Foundation Geth: ethereum/go-ethereum#20646
- Parity Ethereum: paritytech/parity-ethereum#11474
- Multi-Geth: etclabscore/multi-geth#144
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:
- Hyperledger Besu: hyperledger/besu#382
- Parity Ethereum:
N/A
- Multi-Geth: etclabscore/multi-geth#151
Copyright
Copyright and related rights waived via CC0.