深入理解以太坊改进提案(EIPs)

  • cyfrin
  • 发布于 2024-08-22 19:10
  • 阅读 23

本文介绍了以太坊改进提案(EIPs),涵盖了其定义、目的及开发流程。文章详细阐述了EIP的类型和功能,特别强调了社区参与和透明度的重要性,提供了关于历史背景和实施过程的深入分析。

以太坊改进提案 (EIPs) 介绍

Cyfrin 的以太坊改进提案 (EIPs) 介绍。帮助理解 EIPs 的作用、工作原理及其在以太坊生态系统中的重要性。

通过本指南结束时,你应该清楚了解以太坊改进提案 (EIPs) 是什么,它们的目的,以及提交提案所需了解的所有内容。我们还将讨论 EIP 成为标准的各个开发阶段。

让我们开始吧…

什么是 EIP?

EIP 是以太坊生态系统中的设计文档,描述并 提议对以太坊区块链或生态系统的新特性或更改。它提供了 详细的技术规范更改动机

这些更改可能涉及像 EIP-5757 这样的过程,该提案定义了外部资源如何添加到 EIPs 中。或者,更显著的更改,如为回应 2016 年 DAO 黑客事件而提议的 EIP-779 区块链硬叉,这导致以太坊区块链分裂为两条区块链:以太坊经典和以太坊。

EIP 的目的是什么?

EIPs 的目的是确保对以太坊的任何 更改或改进都是透明的,经过深入讨论、审查,并由社区记录。

让我们更详细地看看 EIPs 的目的。

标准化和互操作性

EIPs 帮助建立以太坊生态系统中的不同方面的标准,从而鼓励兼容性和互操作性(不同组件在以太坊生态系统中有效互动的能力)。

例如,EIP-20 定义了 ERC-20 代币的标准,确保代币遵循一致的结构,且可以轻松集成到钱包、交易所和其他平台中。

同样,EIP-137 定义了以太坊名称服务(ENS)的规范。它允许用户使用人类可读名称而不是地址,从而改善用户体验 (UX) 和以太坊生态系统及外部平台的互操作性。

历史记录和透明性

EIPs 作为 新特性或流程的技术规范文档 以及以太坊区块链成长的历史记录。

EIP 的 GitHub 仓库以太坊的官方网站 列出了自 2015 年以来提出的所有 EIPs 和实现的所有特性。

社区参与和治理

EIPs 使任何以太坊社区成员都能够参与以太坊的发展,即使不需要编写代码。仅仅对提案进行评论和分享你的看法,可能会在塑造整个生态系统中发挥重要作用。

协调和质量控制

当以太坊在以太坊 2.0 升级时从 工作量证明 (PoW) 过渡到权益证明 (PoS),需要多个 EIPs,并且所有以太坊客户端必须确认它们已实施所有必要的 EIPs。你通常会在 EIP 文档的 Requires 部分看到所需的 EIPs。

高亮显示 EIP 文档 "requires" 部分的图片。

EIPs 在通过采用之前经历多个阶段(稍后我们将在本指南中讨论),每个阶段旨在确保社区的参与,并符合网络的最佳利益。

EIPs 的简史

EIPs 于 2015 年 10 月 由一些以太坊的早期贡献者引入,包括 Vitalik Buterin、Martin Becze、Gavin Wood 等。

这个想法 基于比特币改进提案BIP),并一直被精炼,尽管核心目的依旧——为对以太坊协议、智能合约 标准和生态系统的修改、讨论和实施提供正式流程。

第一个 EIP(EIP-1)于 2015 年创建,规定了创建和管理这些提案的指南。从那时起,数百个 EIP 被提出。一些成为以太坊协议的重要组成部分,而其他则被拒绝或停滞不前。稍后我们将在本文中看到 EIP 提案和审批流程的不同阶段。

EIP 编辑是谁?

EIP 编辑审查提案,确保其符合标准 EIP 的最低要求。他们检查技术的合理性、语法、拼写、代码风格等。任何人都可以按照 EIP 编辑手册 申请成为 EIP 编辑。

EIP 编号是如何分配的?

EIP 编号是分配给每个 EIP 的唯一编号。其格式通常为 EIP-N,其中“N”是指定的编号。

在大多数情况下,EIP 编号来源于该提案的第一个 Pull Request 或 IssueEIP GitHub 仓库中。例如,EIP-20 的编号源自第一个 Issue 编号,如下所示:

高亮显示 EIP-20 编号来源的图片。

然而,随着 EIP 思路的发展,以及在 以太坊魔法师论坛 上持续讨论,最终决定为 EIP 分配什么编号在很大程度上依赖于 EIP 编辑。因此,EIP 编号并不一定是连续的,你可以在 EIPs 网站的屏幕截图中看到这一点。

显示一组最终 EIPs 及其编号不连续的图片。

EIP 类型

EIP 有三种类型。我们将详细讨论每一个。

1) 标准轨道 EIP

标准轨道 EIP 描述影响大多数或所有以太坊实现的更改。这可能包括对网络协议、块或事务有效性规则、应用标准/约定的更改,或者任何影响以太坊应用互操作性的内容。

标准轨道 EIP 的组成部分

标准轨道 EIP 通常包括:

  • 设计文档。设计文档是 EIP 仓库,或包含描述 EIP 所有部分的页面。例如,EIP-1559 的设计文档可在 https://eips.ethereum.org/EIPS/eip-1559 查阅。
  • 一个实现。实现通常在 EIP 文档中链接或写在一个名为 “Implementation” 或 “References” 的部分。这里是 EIP-55 的一个实现示例:

显示 EIP-55 实现细节的图片。

  • 还有 EIP-20 的一个示例:

显示 EIP-20 实现细节的图片。

EIP-100示例规范更新。

标准轨道 EIP 的类别

标准轨道 EIP 根据其对网络的影响分为四类

  • 被标记为 Core 的 EIP 修改现有基本规则,通常要求网络上的所有节点升级其软件以保持 共识。一个好的例子是如何 EIP-1559 引入了基础费用机制以及对矿工可选的小费,该机制来自拍卖风格的费用市场。该升级使得如果客户不升级,则无法验证新块。
  • 标记为 Networking 的 EIP 关注节点之间的通信方式。它们不要求所有客户端升级以维护共识。然而,虽然未升级的节点仍然可以参与网络,但它们可能无法享受新特性。
  • Interface EIP 专注于标准化和改善应用程序和工具与以太坊的互动,从而提高 UX、开发者体验 (DX) 以及整个生态系统的互操作性。它们可以逐步采用,而不会对客户使用网络的能力产生重大影响。例如,EIP-2255 提出了钱包如何在客户端请sum-check权限的标准接口。
  • ERC EIP 定义应用级功能的标准,并建立以太坊区块链上智能合约和其他应用的公共接口和行为。最著名的 ERC 之一是 ERC-20 (EIP-20),其定义了代币创建的标准。

2) 元 EIP 也称为过程 EIP

元 EIP 提出 改进以太坊流程和指引——要么改变它们,要么添加到它们中。尽管它们不在协议层运作,但仍然与标准轨道 EIP 一样重要。

尽管它们不提议对协议的修改,但也需要社区共识,并成为所有参与者在实施后通常遵循的强制标准。元 EIP 的一个示例是 EIP-1,它提出了社区通常遵循的 EIP 指南。

其他元 EIP 的示例包括:

  1. EIP-5069:EIP 编辑手册
  2. EIP-5757:批准外部资源的流程

3) 信息性 EIP

信息性 EIP 提供 指导或有关 以太坊社区的一般信息,而不提议新特性。信息性 EIP 不一定代表社区共识,可以根据用户的自由选择相应遵循或忽略。

一个例子是 EIP-6953,它概述了随着时间推移所使用的各种网络升级激活触发。目标是提供一个显示以太坊历史上网络升级模式的库。

通过以上内容,我们现在对 EIPs 及其类型有了清晰的理解,让我们探讨从开始到批准的提案过程。

EIP 开发过程

任何人都可以创建 EIP,只要他们有 GitHub 账户并遵循要求。

EIPs 在成为以太坊的一部分之前经历多个阶段。虽然一些 EIPs 可以达到最终阶段,但其他的则不能。

开发过程是严格的,持续时间因提案的复杂性、社区的兴趣和支持程度以及以太坊开发社区的当前优先级而广泛变化。

以下是一个高层次展示整个 EIP 开发阶段的示意图:

示意图说明 EIP 开发的过程阶段。

让我们仔细看看所有阶段:

想法

这个阶段是关于把你的想法变为现实。你刚想到一个可能使以太坊变得更好的开创性想法(假设你的想法引入了跨区块链的互操作性 🙂)。你:

  • 分叉 EIP 仓库
  • 创建一个 EIP 文件,包含所有必要信息,遵循 推荐的 EIP 模板,并创建一个 PR。
  • 分享你的 EIP PR 的链接以及说明到以太坊魔法师论坛,以收集社区反馈和支持。请注意,不要将整个 EIP 复制到你在论坛上的帖子中。以下是论坛中首次共享的新提案 EIP-7708 的示例:

显示 EIP-7708 作为新提案首次在以太坊魔法师论坛共享的图片。

这只是想法阶段,尚未在 EIP 仓库中跟踪。现在,你有责任为你的 EIP 想法收集社区的支持。

草案

当你的 EIP 收集到足够的支持,社区决定它适合并且格式得当后,它将从想法阶段转入草案阶段。此时,EIP 编辑分配 EIP 编号,并将其合并到 EIP 仓库中。你的 EIP 现在将被正式跟踪。

审查

一旦你的 EIP 成为草案,你可以更新它并为同伴审查做准备。这也是你应该让更多人关注该提案的地方。此时,草案更加稳定,社区可能希望承诺为其做出贡献。审查持续至少 45 天,以便为适当的反馈留下时间。如果你收集到足够的支持且审查成功通过,EIP 编辑将其推进到过程中的下一个阶段:Last Call

最后呼叫

最后呼叫是 EIP 在移至 Final 之前的最终审查阶段。在此阶段,没有对 EIP 进行重大更改的预期。如果有重大更改,它将恢复为审查状态。在这里,EIP 编辑分配最后呼叫状态,并设置审查截止日期(last-call-deadline),通常是未来 14 天内。

最终

在此阶段,EIP 不能再更改,成为即将在以太坊升级中包含的候选者。

但是,它不会自动添加到下一个升级中。核心开发人员、EIP 作者和涉及的社区将在每周的 AllCoreDev 会议和以太坊魔法师论坛中讨论并选择适合特定升级的 EIPs。这些 EIPs 然后经过全面测试、打包,并安排进行网络升级。

停滞

如果 EIP 在 DraftReviewLast Call 状态中没有活动超过 6 个月,则变为 Stagnant(停滞)。不过,EIP 的作者或编辑可以通过将其移回 Draft 或其先前状态将状态恢复为活动。否则,它将无限期保持停滞状态。

撤回

当 EIP 的作者正式撤回它时,该 EIP 被标记为 Withdrawn(撤回)。这个状态是永久的,EIP 编号无法重用。如果你在未来希望追求相同的想法,必须提交新的提案。以下是一个示例,展示了撤回状态和理由的 EIP。

显示 EIP-7664 已移至撤回状态的图片。

活跃

此状态适用于旨在不断更新而不达到最终的 EIPs。在本文撰写时,有两个 EIP 标记为此:EIP-1 和 EIP-5069。两者均属于部分元类别 EIP。

显示 EIP-1 和 EIP-5069 处于活跃状态的图片。

结论

在本文中,我们讨论了 EIPs 是什么,它们在以太坊生态系统中的相关性,以及如何提议自己的 EIP。

以下是我们讨论的重点

  • EIP(以太坊改进提案)是提出对以太坊网络更改的文档
  • EIPs 于 2015 年 10 月由以太坊的早期贡献者,包括 Vitalik Buterin、Martin Becze 和 Gavin Wood 引入。
  • 第一个 EIP,EIP-1 是,且将继续作为一份活文档。
  • EIP 分为三种类型;标准轨道 EIP、元或过程 EIP 和信息性 EIP。
  • 任何人都可以提议 EIP。
  • EIP 编辑负责审查 EIPs,包括分配 EIP 编号。
  • 在 EIP 被采纳之前,它经历多个阶段:想法、草案、审查、最后呼叫和最终。
  • 原文链接: cyfrin.io/blog/introduct...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
cyfrin
cyfrin
Securing the blockchain and its users. Industry-leading smart contract audits, tools, and education.