Code Monkey home page Code Monkey logo

ecips's Introduction

ECIPs

Getting started contributing

The ECIP sample is the best place to start. The sample was updated for Ethereum use by Martin Becze, it was predominantly derived from the Bitcoin improvement proposal based on the Python improvement proposal system. Fork the repository and add your ECIP to it, using the provided ECIP markdown template. Submit by creating a Pull Request to the Ethereum Classic Labs' ECIPs repository.

Contributing

  1. Review ECIP-1.
  2. Fork the repository by clicking "Fork" in the top right.
  3. Add your ECIP to your fork of the repository. There is a template ECIP here.
  4. Submit a Pull Request to Ethereum Classic Labs' ECIPs repository.

Your first PR should be a first draft of the final ECIP. It must meet the formatting criteria enforced by the build (largely, correct metadata in the header). An editor will manually review the first PR for a new ECIP and assign it a number before merging it. Make sure you include a discussions-to header with the URL to a discussion forum or open GitHub issue where people can discuss the ECIP as a whole.

If your ECIP requires images, the image files should be included in a subdirectory of the assets folder for that ECIP as follow: assets/eip-X (for ecip X). When linking to an image in the ECIP, use relative links such as ../assets/ecip-X/image.png.

When you believe your ECIP is mature and ready to progress past the draft phase, you should do one of two things:

  • For a Standards Track ECIP of type Core, ask to have your issue added to the agenda of an upcoming All Dev Team meeting, where it can be discussed for inclusion in a future hard fork. If implementers agree to include it, the ECIP editors will update the state of your ECIP to 'Accepted'.
  • For all other ECIPs, open a PR changing the state of your ECIP to 'Final'. An editor will review your draft and ask if anyone objects to its finalization. If the editor decides there is no rough consensus - for instance, because contributors point out significant issues with the ECIP - they may close the PR and request that you fix the issues in the draft before trying again.

ECIP Status Terms

  • Draft - An ECIP that is undergoing rapid iteration and changes.
  • Last Call - An ECIP that is done with its initial iteration and ready for review by a wider audience.
  • Accepted - An ECIP that has been in Last Call for at least 2 weeks and any technical changes that were requested have been addressed by the author.
  • Final - An ECIP that was accepted, implemented, and no longer can be modified without submitting a new proposal, e.g., it has been released in a hard fork.
  • Deferred - An ECIP that is not being considered for immediate adoption. May be reconsidered in the future for a subsequent hard fork.
  • Replaced - When a Final ECIP is no longer relevant, its status may be changed to Replaced or Obsolete.
  • Rejected - Reasons for rejecting ECIPs include duplication of effort, disregard for formatting rules, unfocused or too broad, being technically unsound, not providing proper motivation, or obvious popular disapproval.
  • Withdrawn - ECIP authors may decide to change the status between Draft, Deferred, or Withdrawn. The ECIP editor may also change the status to Deferred if no progress is being made on the ECIP.

Accepted ECIPs

Number Title Author Type Layer Status / Discussion
ECIP-1010 Delay Difficulty Bomb Explosion Igor Artamonov Standard Consensus (hard-fork) Accepted
ECIP-1017 Monetary Policy and Final Modification to the Ethereum Classic Emission Schedule Matthew Mazur Standard Consensus (hard-fork) Accepted

EIPs that applies to Ethereum Classic network

Number Title Author Type Layer Status / Discussion
EIP-2 Homestead Hard-fork Changes Vitalik Buterin Standard Consensus (hard-fork) Final
EIP-7 DELEGATECALL Vitalik Buterin Standard Consensus (hard-fork) Final
EIP-8 devp2p Forward Compatibility Requirements for Homestead Felix Lange Standard Networking Final
EIP-141 Designated invalid EVM instruction Alex Beregszaszi Standard Consensus Final
EIP-150 Long-term gas cost changes for IO-heavy operations Vitalik Buterin Standard Consensus (hard-fork) Final
EIP-155 Simple replay attack protection Vitalik Buterin Standard Consensus (hard-fork) Final
EIP-160 EXP cost increase Vitalik Buterin Standard Consensus (hard-fork) Final

Ethereum Classic Improvement Proposals (ECIPs), are technical write-ups that describe suggested changes to the Ethereum Protocol. Finalized proposals agreed up by volunteer client developers, and the users of the Ethereum Classic main net blockchain are implemented by Ethereum Classic client developers.

Every pull request will be reviewed and discussed by volunteer Ethereum Classic client developers and any developers on Github willing to contribute their well reasoned opinions. Regardless if there is general agreement you are able to use the information generated from the discussion to create a second draft. This can be done by either updating the pull request or submitting a new pull request. This process can be repeated (See figure 1) until the volunteer developer community agrees to add the pull request.

Figure 1: The cyclic process of proposal and review

Having an ECIP within the folder of the repository does not make it a formally accepted standard until its status becomes Active. For an ECIP to become Active requires the mutual consent of the community. Those proposing changes should consider that ultimately consent may rest with the consensus of the Ethereum Classsic users.

ECIPs grew out of the now hard-forked Ethereum DAO hard-fork (or ETF) repository, at which time no other differences between Ethereum Classic/original main net and Ethereum DAO hard-forked besides the DAO hard-fork. Changes have since been added such as early defusal of the difficulty bomb.

Network split

Pushing changes to the protocol without consensus will cause a network split. The ECIP process should not be skipped, as previously done by Ethereum Foundation developers who unilaterally implemented a rushed hard-fork in the most widely used client thereby creating a network split at block 1920000.

The Ethereum Foundation raised money from the community to work towards the "mission to promote and support research, development and education to bring decentralized protocols", bur failed that goal when shortly after the DAO exploit was used Vitalik Buterin announced using the Ethereum Foundation blog that they had already unilaterally decided on forking. A chat log from an internal chat reveals this decision was made prior to the announcement, and comments like "default behavior of Geth to be pro-fork as per internal discussions" found in DAO hard-fork pull requests and the unwillingness to use their own proposal system show that the narrative in which the Ethereum Foundation followed the will of the community is clearly wrong. What the Ethereum foundation did was the opposite of decentralized decision making.

Decentralized decision making is part of the in-depth security that protects the integrity of the Ethereum Classic blockchain. It is critical for keeping the promise of "applications that run exactly as programmed without any possibility of downtime, censorship, fraud or third party interference."

ecips's People

Contributors

5chdn avatar arvicco avatar beholder0x2a avatar belfordz avatar classiclab avatar cseberino avatar dexaran avatar elaineo avatar ethers avatar holiman avatar meowsbits avatar mikeyb avatar p3c-bot avatar pyskell avatar realcodywburns avatar servis avatar shanejonas avatar snaproii avatar soc1c avatar sorpaas avatar souptacular avatar splix avatar stevanlohja avatar thecrowbill avatar tzdybal avatar vbuterin avatar wanderer avatar whatisgravity avatar whilei avatar zmitton avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

ecips's Issues

Final Call: ECIP-1054 Atlantis Upgrade

ref ethereumclassic/ECIPs#78

ETC Core Devs Call - Atlantis Finalization

When: Thursday, May 30, 2019, 3pm UTC, 60 minutes max.

Where: Ethereum Classic Discord https://discord.gg/jUKJVY #ecips channel. Will use/create a voice channel ad hoc.

Agenda

  • Atlantis (ECIP-1054) is in "last call" state
    • ECIP-1054 needs to be either accepted or updated (or rejected)
    • discuss whether EIP-161 should be included or not @meowsbits @sorpaas
    • discuss any other EIP that might cause uncertainty
    • discuss timeline for the protocol upgrade
      • Morden Classic and Kotti Classic testnet (August?)
      • Ethereum Classic mainnet (September?)
  • Anything else related to Atlantis
  • Outlook: Agharta (ECIP-1056) if time permitts

Please comment to add items to the agenda

add table in readme

It would help ECLIP collaborators and community to see status of ECLIPs from the readme instead of searching through the specs themselves.

Automation Request: Replace reference to EIP and ECIP with links

It's very common for discussion in issues and pull requests for people to refer to an EIP or ECIP by number. I find it very annoying to have to look up the eip everytime I don't remember the number -> topic.

This issue is to suggest a github bot that would:

  1. listen to issue and pull request comments
  2. find references to [eip|ecip][\space|-][number]
  3. edit the comment, replace it with a link to the ecip or eip

The bot should be runnable from anyones account, and since we are able to edit each others comments, it should be fairly straightforward for permissions.

Discussion: ECIP 1053 Add OpenRPC Service Discovery To JSON-RPC Services

Add OpenRPC Service Discovery To JSON-RPC Services

ECIP: 1053
Title: Add OpenRPC Service Discovery To JSON-RPC Services
Author: Shane Jonas, Zachary Belford
Status: DRAFT
Type: Interface
Created: 2019-02-25

Abstract

What is this?

This is a proposal to add OpenRPC support to existing and future JSON-RPC services by adding the method rpc.discover to the projects JSON-RPC APIs, enabling automation and tooling.

The OpenRPC Document that specifies all the methods an EVM-based blockchain should implement can be found here.

Motivation

What is the problem?

  • Maintenence time and accuracy on:
    • documentation
    • APIs
    • clients
  • Not all JSON-RPC servers return the same methods or return the same version of the API.
  • There is nothing that provides both human and machine-readable interfaces to be able to interact with JSON-RPC.
  • Communication between services in different programming languages is not easy.
  • Implementation usually comes at the cost of user experience consuming the API.

Implementation

How do I Solve the problem?

JSON-RPC APIs can support the OpenRPC specification by implementing a service discovery method that will return the OpenRPC document for the JSON-RPC API. The method MUST be named rpc.discover. The rpc. prefix is a reserved method prefix for JSON-RPC 2.0 Specification system extensions.

Use Case

This is the vision for the use case of OpenRPC and how it would relate to multi-geth:

MultGethRpc-usecase

Specification

What is OpenRPC?

The OpenRPC Specification defines a standard, programming language-agnostic interface description for JSON-RPC 2.0 APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic. When properly defined via OpenRPC, a consumer can understand and interact with the remote service with a minimal amount of implementation logic, and share these logic patterns across use cases. Similar to what interface descriptions have done for lower-level programming, the OpenRPC Specification removes guesswork in calling a service.

Structure

This is the structure of an OpenRPC Document:

openrpc-spec-structure

Rationale

Why would we do this?

Services need to figure out how to talk to each other. If we really want to build the next generation of automation, then having up to date libraries, documented APIs, and modern tools are going to provide easy discovery, on-boarding, and enable end user and developer interaction.

Use cases for machine-readable JSON-RPC 2.0 API definition documents include, but are not limited to:

  • A common vocabulary and document will keep developers, testers, architects, and technical writers all in sync.
  • Server stubs/skeletons generated in many languages
  • Clients generated in many languages
  • Mock Server generated in many languages
  • Tests generated in many languages
  • Documentation Generation

Alternative

OpenRPC documents just describe JSON-RPC APIs services, and are represented in JSON format. These documents may be produced and served statically OR generated dynamically from an application and returned via the rpc.discover method. This gives projects and communities the flexibility to adopt tools before the rpc.discover method is implemented.

Master branch protection

I've tagged this issue as a bug since having an unprotected master branch is universally a bad idea. This allows people to accidentally do very bad things, and as such, should be considered a bug before it manifests as an actual catastrophic issue.

I propose the following configuration for protecting the master branch:

image

I will go ahead and apply the protection rule now. In the comments of this issue.

With that, I propose that this issue the be place we discuss any changes to this base configuration.

Atlantis update

In light of a recent chain split on the Morden network it has been diagnosed to be a missing eip, eip-684, which by default exists in parity and multi-geth.

The ECIP-1054 should include foundation EIP-684 in order for clients to maintain consensus.

Hands-On Call: Atlantis Hardfork

ETC Core Devs Call - Atlantis Hardfork Hands-On

When: Friday, September 13, 2019, during the expected hardfork, 120 minutes max.

Where: Ethereum Classic Discord #ecips channel. Will use/create a voice channel ad hoc. Ask for invite here if you are not on that discord.

This will be an informal call for core developers and everyone else interested to monitor the hardfork and discuss progress, eventually act if necessary.

Final Call: ECIP-1054 Atlantis Upgrade

ETC Core Devs Call - Atlantis Finalization

When: Thursday, June 13, 2019, 3pm UTC, 60 minutes max.

Where: Ethereum Classic Discord #ecips channel. Will use/create a voice channel ad hoc. Ask for invite here if you are not on that discord.

Agenda

  • Quick client teams check-in
    • Geth / Multi-Geth
    • Parity Ethereum
    • IOHK Mantis
  • Atlantis (ECIP-1054) is in "last call" state
    • ECIP-1054 needs to be either accepted or updated (or rejected)
    • edge case with state-trie clearing (EIP-161)
    • potential consensus issue with touch of STATICCALL (EIP-161/158)
    • discuss whether EIP-170 should be included or not
    • discuss any other EIP that might cause uncertainty
    • discuss timeline for the protocol upgrade
      • Morden Classic and Kotti Classic testnet (August?)
      • Ethereum Classic mainnet (September?)
  • Anything else related to Atlantis
  • Outlook: Agharta (ECIP-1056) if time permits
  • Outlook: Astor SHA3 testnet if time permits

Please comment to add items to the agenda

Remove the L in ECLIPs

AFAIK this repo is part of a movement towards decentralizing ECIP.
As such, we should keep the name ECIP. It reflects what we are doing, and we should be advocating others follow our lead here, by making and maintaining their own forks of ECIP, and to use it as a tool to signal support for proposals amongst the community.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.