4.13 以太坊EIPs

什么是EIPs?

EIPs即以太坊改进提案(Ethereum Improvement Proposals)。根据官方定义,EIPs是以开放协作模式为以太坊平台构建各种标准(包括核心协议规范、客户端API和合约标准)的一个专业化的提案协作区。EIP应阐明相应功能的简明技术规范和基本原理。此外,EIP作者有责任就对应提案在社区内建立共识并记录异议。

以太坊核心协议规范、客户端API和合约标准的改进,有部分是属于对以太坊这条公链的改进,另外大多就是为智能合约的应用开发提供标准。如果我们把以太坊看着特斯拉,那么前者就是它为生产汽车而制订的特斯拉工厂的生产标准(包括基础设施和生产工具等等的标准),而后者就是为产品而制订的电池电压等等面向整个汽车行业的应用标准。

(插播:这种应用和公链基础标准混同讨论的模式适合于区块链发展的早期,未来很可能会发生变化)

在以太坊脱颖而出之前,这一工作主要活跃于比特币社区的协作,也曾经创造出很多重要的标准。如BIP 39:Mnemonic code for generating deterministic keys(生成确定性密钥的助记词)。我们现在使用钱包的第一件事就是保存好助记词,说明我们至今还在使用其衍生方式。

我们说以太坊是当今最重要且最成功的公链,最主要的原因之一就在于应用标准暨应用的技术创新几乎全部来自于以太坊社区,也就是它首先以ETP的形式分享和落地。

七年来,以太坊社区涌现出5千多个EIP。

**举例:**ERC-165

状态:已定稿(Final)

提交记录:https://github.com/ethereum/EIPs/issues/165

标准说明:https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md

ERC-165是一个标准接口检测协议。

ERC-165标准提供一个标准的接口来发布和检测智能合约方法的实现情况。此标准的提出是为了解决某些 ERC 标准对于接口实现情况查询、接口版本查询的需求。ERC-165协议中标准化了以下几条:

  • 如何识别接口;

  • 一个智能合约如何发布它执行的接口;

  • 如何检测一个智能合约是否执行了ERC-165协议;

  • 如何检测一个智能合约是否执行了一个给定的接口;

简单来说,EIP就是以太坊的发展路线图。但这份路线图不是由某一个人或机构决定的,而是由整个以太坊社区达成共识来决定的。

以太坊官网可以查阅到所有正在建设的和已经完成的提案:

或者在Github上也可以找到所有当前已有和草拟的EIPs的可浏览版本:

我们首先应该明白一个可贵的事实:实际上全球精英都已经并将继续参与以太坊的基础建设。譬如在这你就可以一睹为快:

智能合约开发基地:

https://github.com/ethereum/EIPs

ERC-number(如ERC-20)是以太坊智能合约标准的名称,有点类比IEEE标准,后面都有个标准的编码。前面我们已经重点介绍了 ERC-20 等六种智能合约标准。

如果你想成为 EIPs 编辑人员:

请查看 EIP-5069

EIPs状态术语

Idea(创意) ——一个创新想法。它不会被纳入到EIP Repository里追踪。

Draft(草案)——一个开发中同时被正式纳入追踪中的提案。如果草案内容格式合规,会被EIP编辑并入EIP目录。

Review(审核)—— EIP作者标记它已经可以交给同行审核。让更多参与者提供反馈。

Last Call(最后一次征求意见)——这是确定为最终方案(FINAL)前的最后一次征求意见。EIP编辑在将一个提案设置为Last Call状态时会同时设定一个截止日期 (last-call-deadline),通常为14天。如果这其中发现必须要对提案的标准进行修改,那么提案又会回退到Review(审核)状态。

Final(最终方案,终案)——提案已经是最终标准。也表明这个 EIP 处于最终确定状态,仅应更新勘误表并添加非规范性说明。

Stagnant(停滞)——一个提案在草案或审核状态时,睡眠了6个月或更长时间,它就会被Mark为停滞状态。提案作者或EIP编辑可以通过将它改为草案状态而复活它。

Withdrawn(撤销)——EIP作者 已撤销该提案。此状态具有终结性,无法再使用此 EIP 编号复活该提案。如果该提案在以后被采纳,则被视为新提案。

Living (生效)——这是非常特殊的一种状态,对应的提案需要持续更新并且不会有最终方案。譬如非常特别的指导大家撰写和提交提案的EIP-1。

EIPs的类型

EIPs被分成多个类型,每个类型都有自己的EIP列表。

Standard Track(标准追踪类EIP)

标准追踪类EIP用于描述影响大多数或所有以太坊功能执行造成影响的的任何更改,例如对网络协议的改动,区块或交易有效性规则、已提交的应用标准或公约的改动,或影响使用以太坊的应用的互操作性的任何更改或补充。而且,标准追踪类可以进一步细分为以下几种类型

  1. Core(核心)——需要共识分叉的改进(如:EIP5EIP101),以及一些也许不是共识部分但可能与“核心开发”讨论相关的变更(例如,EIP86的矿工或节点策略改变之2、3和4)。

  2. Networking(网络)——网络提案包括围绕devp2p (EIP8) 和Light Ethereum Subprotocol(以太坊轻客户端子协议)的改进,以及对 whisper 和 swarm 网络协议规范的改进建议。

  3. Interface(接口)——包括有关客户端API/RPC规范和标准的改进,以及某些语言方面的标准,如方法名(EIP6)和合约ABI。标签“接口”对应于接口目录,在将该 EIP 提交给 EIP 目录之前,讨论应主要在其自身的目录(github存储库)中进行。

  4. ERC(ERC提案)——Ethereum Request for Comment 的缩写,原本是征求大家意见的意思,主要为应用级标准及惯例。包含:通证标准(如ERC-20),名称注册(ERC-137),URI schemes(ERC-681),库/软件包格式 (EIP-190), 钱包格式 (EIP-85)等。

Informational(信息类EIP)

信息类EIP用于描述以太坊的设计问题,或者为以太坊社区提供一般性指导意见,但并不提出新功能。信息类EIP不一定代表以太坊社区的共识或建议,因此用户和实施者可以自由选择是否忽视信息类EIP或者遵循其中的建议。

Meta(元EIP)

元EIP用于描述以太坊相关的流程,或者对这些流程进行更改的建议。这类提案包含程序步骤、指导方针、决策过程的改动,以及以太坊开发工具或环境的变动。我们也可以把元EIP看作是流程类EIP。

元EIP与标准追踪类EIP类似,但仅用于以太坊协议之外的其它领域。该提案可能是一个实施方案,但与以太坊的代码库无关;这些提案通常也需要社区共识,但与信息类EIP不同,它们不是单纯的建议,用户通常不会忽视它们。

在Github上(https://github.com/ethereum/EIPs),我们可以追踪到各个EIP的进展。

常用缩略词

LES:即Light Ethereum Subprotocol,以太坊轻客户端子协议。

API:即Application Programming Interface,应用程序编程接口。

RPC:即Remote Procedure Call,远程过程调用。

ABI:即Application Binary Interface,应用程序二进制接口。

ERC:即Ethereum Request for Comments,以太坊意见征求。

URI:即Uniform Resource Identifier,统一资源标识符。

如何参与EIP的建设

以太坊改进提案编辑人员与 Ethereum Cat Herders(专注以太坊网络) 及 Ethererum Magicians(偏向于合约标准) 社区的成员共同决定要实施的对以太坊自身进行改进的提案,共同负责 EIPs 的审计、推广以及推动 EIPs 进入“定稿”或“已撤销”阶段。

如果你想提交提案:

  1. 首先注册 Github 的账户。

  2. 查阅 EIP-1(https://eips.ethereum.org/EIPS/eip-1)里面对于EIP的流程与要求的说明。

  3. 这里有一个EIP模板(https://github.com/ethereum/EIPs/blob/master/eip-template.md)。点击页面右上角的“Fork”,分叉(相当于复制)其文件夹。

  4. 按模板编辑好你的EIP内容。

  5. 提交一个Pull请求到Ethereum的EIPs目录(https://github.com/ethereum/EIPs)。并对相关的审计反馈进行跟踪,及时回应审核意见或者修订你的提案。

  6. 将你的EIP的链接转发到 以太坊牧猫人组织 Ethererum Magicians 进行讨论。

如果你想成为以太坊改进提案编辑人员

请查看 EIP-5069

以太坊改进提案编辑人员与以太坊牧猫人组织Ethererum Magicians 社区的成员共同决定要实施的以太坊改进提案,共同负责以太坊改进提案的推广以及推动以太坊改进提案进入“定稿”或“已撤销”阶段。

以太坊官网对EIPs的介绍

我的经验

我已经参与提交过三个 EIPs,其中 EIP-2569 已经被 NFT 交易市场(如 OpenSea)和众多钱包(如 imToken)所接纳,也被官网所收录。另有新型通证标准 EIP-3712 也值得大家关注。

  • 因为以太坊改进提案编辑人员严重不足,且均为志愿者。EIP 的流程进展非常缓慢。通常你不必在意这一进展,按照你自己的节奏推动与该 EIP 相关的项目。

  • EIPs的模板和流程都发生过变化。建议你在起草 EIP 时,先仔细阅读官方指导即 EIP-1 。你在推进过程中还要注意它是否中途有变。

  • 合约标准的讨论参与者寥寥无几。 譬如:

ERC-2569: Saving and Displaying Image Onchain for Universal Tokens - Fellowship of Ethereum

Magicians

Eip-3712: Standard for Multiple Types of Fungible-Tokens - Fellowship of Ethereum Magicians

  • 道易程已经为区块链dApp的发展提供了更高效的协作方式,那就是技术标准几乎就是元宇宙元器件,或者说元器件基本上就是一个你新创的技术标准。此时,EIP 既是你发布的一个技术标准,也是你对这个标准的解释。你的元宇宙元器件则是该标准的首个应用。 如果你的元宇宙元器件,那么恭喜你,名利双收!否则,你为整个行业贡献了一个有价值的 EIP ,也还是可贺可喜的。也可能两样都没有成功(EIP 失败说明方法不当,对应的元宇宙元器件也就凶多吉少了)

最后更新于