This is the Ethereum Classic Improvement Proposals project in That World and Ethoxy. Please feel free to contribute new specifications. You can join discussions about ECIPs at #ecips:matrix.org.
We collect specifications for APIs, file formats, protocols, processes and compositions of them. We welcome and encourage Ethereum-compatible blockchain developers to contribute specifications for wider community to review.
Goals
- Shared innovation: it wastes review efforts to duplicate specifications between EIPs and ECIPs. Sharing innovations across teams and blockchains can be more effective.
- Focus on standardization: Sepcifications should be less political. Arguments won't be on whether a certain technology should happen, but how it would happen.
Process
We currently use an informal IETF-like process, following RFC 2026. Every specification has its maturity level:
- A new specification is sent in a pull request. The editor checks and
helps the author to move the specification into an acceptable
quality. After that, the specification is merged in Raw maturity
level. In this process, the specification gets its RFC number in the
format of
$number-$feature
. - When at least one implementation is done for a particular specification, it is moved to Draft maturity level.
- When significant implementations and successful operational experiences have been obtained, the specification is moved to Stable maturity level.
- Specifications can be moved to Deprecated, Retired or Deleted status based on various conditions.
The current editor is Wei Tang <hi@that.world>
.
Technically this process also support non-standards track, but currently we assume all submitted specifications are on the standards track.
Core
-
22-EVMJETS
Jets in Ethereum Virtual Machine
Jets are optimization marks. Using jets, users can place optmization marks in an EVM program. An EVM interpreter will then verify the optimization mark claim, and if the verification passes, execute a native code version of the program that is equivalent to the original program.
-
25-DIOP
Disallow Deployment of Unused Opcodes
This proposal disallows deployment of unused opcodes, to avoid unintended behaviors.
-
26-VER
Use Version Byte Prefix for Contract Account Versioning
Provide an alternative scheme for account versioning with the least amount of changes required.
-
27-MINERVOTE
Generalized Version Bits Voting for Consensus Soft and Hard Forks
The following ECIP tries to bring the best practices about how Bitcoin deals with consensus hard fork into Ethereum Classic.
-
28-CARBONVOTE
Combined CarbonVote and MinerVote for Consensus Soft and Hard Forks
The following ECIP tries to combine a enforced version of Ethereum CarbonVote and the best practices about how Bitcoin deals with consensus hard fork into Ethereum Classic using smart contracts.
-
29-CARBONALT
A CarbonVote and MinerVote Contract for Consensus Soft and Hard Forks
This contract provides a way to implement CarbonVote and MinerVote based solely on smart contract.
-
30-UNCLEGHOST
Include Uncles in Total Difficulty Calculation
This proposes to include uncle difficulty in total difficulty calcuation.
-
35-VERALT
Maintain Existing Account Compatibility While Hard Forking
This defines a method of hard forking while maintaining the exact functionality of existing account by allowing multiple versions of the virtual machines to execute in the same block.
-
36-STATEVOTE
State-based Hard Fork Signaling
This ECIP defines a hard fork procedure where rather than hard coding a block number, we fetch the hard fork status from a particular on-chain contract.
Informational
-
24-ECIPURI
URI Marker for Federated Ethereum Classic Improvement Proposals
This specification proposes a solution for a decentralized Ethereum Classic Improvement Proposal via federation, while preserving the current proposal structures and allowing easy aggregator setup.
-
31-SYSTEM
Include Uncles in Total Difficulty Calculation
This gives a standardized view of SYSTEM transactions – transactions that are enforced by block validity rules (i.e. if the transaction is not included, it is considered invalid) but not executed by users.
-
32-READADDR
Readable Address and Transaction Hash
This defines convertion of address and transaction hash in Ethereum Classic network to readable strings, similar to how Urbit handles its ship names.
-
33-MNEMONIC
Mnemonic code for public address
This extends BIP-39 for public addresses on the Ethereum Classic network.
Interface
-
16-EVMJSON
Ethereum Virtual Machine JSON-RPC
This specification describes the JSON-RPC API that should be provided by an EVM implementation.
-
19-EVMFILE
Filesystem Library on Ethereum Virtual Machine
This RFC provides a filesystem specification that can be built on top of the Ethereum Virtual Machine.
-
21-LEASM
Low-level Ethereum Virtual Machine Assembly
This RFC aims to provide an assembly language that closely assembles EVM opcodes.
-
23-RLPMEDIA
Recursive Length Prefix Media Type
Defining a media type for Recursive Length Prefix (RLP) to allow a RESTful HTTP server to return raw RLP information directly.
Other ECIP Repositories
The ECIP process is decentralized, meaning this is only one of the ECIP repositories in the wild. Currently, other known ECIP repositories include:
Below is our best attempt to aggregate all current ECIPs in those locations.
-
ECIP-1000
ECIP Process
-
ECIP-1010
Delay Difficulty Bomb Explosion
-
ECIP-1013
ETC On-Chain Cryptographic Signing and Authentication Protocol
-
ECIP-1015
Long-term gas cost changes for IO-heavy operations to mitigate transaction spam attacks
-
ECIP-1016
ETC Improvement Proposal Management
-
ECIP-1017
Monetary Policy and Final Modification to the Ethereum Classic Emission Schedule
-
ECIP-1018
Monetary Policy and Final Modification to the Ethereum Classic Emission Schedule
-
ECIP-1019
Monetary Policy and Final Modification to the Ethereum Classic Emission Schedule
-
ECIP-1021
Token standard
-
ECIP-1025
Precompiled Contracts for zkSNARK Verification
-
ECIP-1026
Modexp Precompiled Contract
-
ECIP-1027
Scaling ETC with Sidechains
-
ECIP-1028
Private Sidechain checkpoints
-
ECIP-1035
Ethereum Classic Privacy Enhanced Stealth Address Schema
-
ECIP-1036
Fallback Complete Difficulty Bomb Diffusion
-
ECIP-1037
Simple Interactive URI Scheme
-
ECIP-1039
Monetary policy rounding specification
-
ECIP-1041
Remove Difficulty Bomb
-
ECIP-1042
GASPAY opcode
-
ECIP-1043
Fixed DAG limit restriction
-
ECIP-1044
Formalize IPFS hash into ECNS (Ethereum Classic Name Service resolver)
-
ECIP-1045
Support for ETH Byzantium & Constantinople EVM and Protocol Upgrades
-
ECIP-1046
Precompiled contract for verification of Merkle Inclusion Proofs
-
ECIP-1047
Reduce Gas Limit to 1 Million
-
ECIP-1048
Clique proof-of-authority consensus protocol
-
ECIP-1049
Change the ETC Proof of Work Algorithm to Keccak256
-
ECIP-1050
Status Codes
-
ECIP-1051
Ethereum Classic Treasury system
-
ECIP-1052
Smart-contract Security Auditing core
-
ECLIP#2
Byzantium EVM upgrades (and Tx Receipt status)
-
ECLIP#3
OpenRPC