Skip to content

Latest commit

 

History

History
141 lines (71 loc) · 13.7 KB

EIP-101.md

File metadata and controls

141 lines (71 loc) · 13.7 KB

EIP stands for Ethereum Improvement Proposal. For those who want to learn about Ethereum, EIPs can be difficult to understand because they are filled with unfamiliar and abstract terms. Although EIPs are, to some extent, a technical standard, they are more of a process, which involves builders gradually forming a consensus on how to improve the Ethereum ecosystem and then implementing those proposals. EIP is not only about technical standards but also an active community.

What is EIP?

Technical Standards

Like any other technical system, Ethereum requires standards to define its basic principles. Currently, EIP serves as the technical standard for Ethereum.

Social Consensus Process

As its name suggests, an EIP is a proposal that can range from a humble idea to a formal standard. The term "EIP" also represents this whole process. Anyone can propose an EIP. However, for it to become an Ethereum standard, it needs to reach a consensus through community discussion. This process documents changes in Ethereum's technology, and the entire history of each EIP can be found in the GitHub repository of EIPs.

EIP and Open Source Culture

EIP was created by Martin Becze, one of Ethereum's early core developers. The foundational document of EIP, EIP-1, was inspired by BIP-0001 and PEP-0001. Therefore, the entire framework and process of EIP, as well as its culture, is based on open-source communities.

Since its inception in 2015, EIP has been the primary mechanism for driving improvements to Ethereum's technical details, establishing community consensus, and documenting Ethereum's design decisions. These three original purposes still persist today and are outlined in EIP-1, the "standard" of EIP. EIP empowers the community to collectively drive and determine Ethereum's future.

How does an EIP work?

The EIP process is community-driven and constantly evolving. Despite being in place for 8 years, discussions within the Ethereum community regarding the EIP process remain active.

EIPIP (Ethereum Improvement Proposal Improvement Process) is an initiative launched by the Ethereum community to maintain and improve the EIP process. Meetings are held every two weeks to discuss community ideas and opinions, and to reach a consensus on how to implement them. You can access the EIPIP repository here.

Interested in creating an EIP? Here's a quick roadmap to get you started!

Midas Touch

If you have a great idea and plan to develop it into an EIP, don't rush into the formal process. Instead, please come to the "Fellowship of Ethereum Magicians" forum and share your idea.

Doesn't the name sound cool? It's like the first stop at the Ethereum Magic Academy, a place where magicians, experienced developers, Ethereum enthusiasts, and EIP editors all hang out. If you have some great ideas about Ethereum, why not come over and communicate with them first? After posting your idea, you may receive feedback from community members that can improve your original ideas and promote the formation of a community consensus. Good luck!

Write & Submit

To access the EIP repository, click on this link, clone your own EIP repository, write down your ideas, and submit a pull request.

It is important to note that the EIP is a technical document that requires a unified writing format and framework, as well as concise language. Therefore, during the Draft stage, formatting is equally important as the content. Ethereum core developer Hudson Jameson once said:

An EIP enters Draft status as long as the EIP is correctly formatted and the content makes sense. I like to say that an EIP on how to make a proper peanut butter sandwich can be put in draft status as long as it follows the rules outlined in EIP-1 which is the rulebook for creating an EIP.

You can check EIP-1 here. You can also download the writing template for EIP here.

If you want to view all historical versions of an EIP, check out the EIP repository. By examining specific examples and community feedback on each submitted revision, you can learn how to write EIPs. For example, see EIP-6105.

Review & Feedback

Once your PR (also your EIP draft) passes the review, it will be automatically merged into the main repository and receive the Draft status. EIP editors will then assign a number to it, which is usually the same as the PR number. For reference, you can check out EIP-6105.

You may receive valuable suggestions and feedback for your EIP by discussing it with the EIP editors during the bi-weekly EIP editorial meetings. It's easy to apply - just add a comment in the related "Issues" of the EIPIP repository to request that your EIP be included in the next meeting's agenda. Check out the example from the 19th meeting for reference.

When an EIP is in Draft status, it means that it has entered the official process and can be found on the official website of EIP.

Peer Review

This process is a bit vague, but it's all about reaching a consensus within the community. You'll need to get feedback as well as implementations of this EIP from other community members.

The more discussions and implementations there are around your EIP within the community, the more benefits it can bring. However, this also means that most EIPs lack clear standards for determining changes in their status. Considering this, EIP editor Victor Zhou has proposed some guidelines for advancing EIP status. You can check them out here.

If you decide to change the status of your EIP at this stage, you can submit a pull request (PR) to change the EIP status. Make sure to discuss the PR with EIP editors and other authors at the EIP editing meeting held every two weeks to decide whether to merge it into the main repository and change the EIP status.

Last Call

The EIP Editors will assign a Last Call status and set an end date, usually 14 days later. If there are normative changes during this process, the EIP will be reverted to Review.

Final

This is the final status for an EIP. A Final EIP exists in a state of finality and should only be updated to correct errata and add non-normative clarifications.

For Ethereum, EIPs serve as the primary mechanism for the community to form social consensus and establish its legitimacy. Beyond the decentralization created by machines, there is human politics at play. EIPs reflect the human part of Ethereum's philosophy of decentralization.


简体中文

EIP 全称 Ethereum Improvement Proposal(以太坊改进提案)。对于许多想要了解以太坊的人来说,EIP 是难以接近的,充满陌生的抽象术语。尽管在某种程度上,EIP 是一种技术标准,但它更是一种过程——在这个过程中,建设者们逐渐形成了有关以太坊生态系统改进的共识,并开始实施。

一、什么是 EIP?

技术标准

如其它系统一样,作为一个技术系统的以太坊需要标准,以定义其自身运作的基本原则。EIP 就是如今以太坊的技术标准。

形成共识的过程

顾名思义,一个 EIP 是一个“提案”,从谦卑的“提案”到板上钉钉的“标准”,EIP 这个术语也代表了这个过程。任何人都可以发起 EIP,通过在以太坊社区中的讨论达成共识,最终使某个 EIP 成为以太坊标准。这个过程于是记录了以太坊在技术层面的变迁,我们可以在 EIP 的 GitHub 仓库中查看每个 EIP 的全部历史。

EIP 与开源文化

EIP 由以太坊早期核心开发者之一 Martin Becze 创建,最初版本的 EIP-1 中(EIP 的纲领性文档),内容大量借鉴了 BIP-0001  和 PEP-0001. 可以说,EIP 的流程以及框架建立在互联网开源社区文化的基础之上。

从一开始,EIP 就被看作是推动以太坊的功能改进、建立社区共识、记录以太坊设计决策的最主要机制。这是在 2015 年的事情;而这三个最初的目的也延续至今,保留在作为 EIP 的 “标准” 的 EIP-1 文档中。EIP 使得社区能够驱动并决定以太坊的未来。

二、EIP 如何运作?

首先,EIP 的过程也由社区驱动,EIP 本身的流程也在不断演进和变化。即使 EIP 机制已经在以太坊存在了 8 年,社区对 EIP 流程的讨论仍然十分热烈。

EIPIP,这个由以太坊社区发起的、致力于维护和改进 EIP 流程的机制在每两周会进行一次会议,议题聚焦于以太坊社区对 EIP 流程的想法,进行讨论以达成共识并实现。你可以点击这里进入 EIPIP 仓库。

想创作一个 EIP 吗,下面是一个速写地图,拿来即用!

点石成金

假如你有一个很棒的想法,打算依据它发展成一个 EIP,请先别急着进入正式流程。来“以太坊的魔术师们 (Fellowship of Ethereum Magicians)” 论坛,发出你的想法吧。

这个名字很酷,对吧,它是以太坊魔法学院的第一站。魔术师们——经验老道的开发者、以太坊爱好者、EIP 编辑们都在这里。如果你有关于以太坊改进的好点子,非常建议你先到这里来交流一下。发帖后,你也许会获得社区成员的反馈,进而不断优化原有想法,并促进社区共识的形成。

写作与提交

你可以点击此链接,直接进入 EIP 仓库,然后克隆一个你自己的 EIP 仓库,写下想法,提交并推送一个 PR。

需要注意的是,EIP 在很大程度上是一份技术文档,需要统一的写作格式与框架,以及简洁的语言。因此,在“草案”阶段,与内容同等重要的是写作规范。以太坊核心开发者 Hudson Jameson 曾这样描述:

EIP 进入 “草案” 状态只需要格式正确,内容合理。我喜欢这样说,描述如何正确制作花生酱三明治的 EIP 也能够进入 “草案” 状态,只要它遵循 EIP-1 中描述的规则。

你可以在这里阅读 EIP-1 中的相关内容;也可以在这里获得 EIP 的写作模板。

此外,你可以在 EIP 仓库中查看某个 EIP 的所有历史版本。通过具体的示例和每次提交版本修改时社区的反馈,你可以学习如何编写 EIP。请查看 EIP-6105 的示例。

评议与反馈

审核通过后,推送的 PR(即 EIP 草案)将自动合并到主仓库中,获得“草案(Draft)”状态。此时,EIP 编辑会为其分配一个编号,一般与 PR 的编号相同。请卡 EIP-6105 的示例。

你也可以在每两周的 EIP 编辑会议中申请与 EIP 编辑讨论该 EIP,以获得建议和反馈。申请方式是在 EIPIP 仓库的相关 “Issues” 中添加评论,将你的 EIP 加入到当期会议议程中。请看第 19 期会议的示例。

当一个 EIP 处于 ”草案“ 状态,它就已经进入正式流程,我们可以在 EIP 的官方网站上找到它。

社区评议

这个过程相对模糊,聚焦于社区内共识的达成,需要作者在社区中获得反馈修改内容,以及社区成员对该 EIP 的实际应用。

当社区围绕某个 EIP 的讨论和实现越多,它就越容易得到改进,进而为社区带来更大的利益。当然,这也导致多数 EIP 并没有确定状态变化的具体标准,对此,EIP 编辑 Victor Zhou 曾做过相关的提议,请点击这里以供参考。

如果作者决定在此阶段更改 EIP 的状态,可以提交更改 EIP 状态的 PR,并在每两周的 EIP 编辑会议上与 EIP 编辑和其他作者讨论该 PR,以决定是否将其合并到主仓库,从而改变 EIP 的状态。

终审

EIP 编辑将分配 “终审” 状态并设置终审截止日期,通常是 14 天。这段时间可以被看作是 EIP 在进入 “终稿(Final)” 前的冷静期,如果在此期间产生必要规范的更改,该 EIP 将被还原为 “评议” 状态,继续进行社区评议。

终稿

这是 EIP 的最终稿。终稿 EIP 存在于这一状态中,只应更正勘误和添加非规范性的澄清。

对于以太坊来说,EIP 是社区形成社会共识的主要机制,也是其正当性的源泉——在机器创造的去中心化之外,存在着人的政治;除了技术性的标准,EIP 也体现了以太坊的去中心化理念中,属于人的那部分。