# How to write a EIP

## How to write a EIP
+ 是的，我在写一个EIP，虽然很菜但总要去积极参与！

### 读懂EIP1

+ https://eips.ethereum.org/EIPS/eip-1

#### 类型

+ 常规来说，大家提的都是标准EIP（Standard），标准包括子类：Core、Networking、Interface、ERC
+ ERC就是应用级别，是最广泛的，例如ERC721、ERC1155等等。

### 状态

+ 上篇文章已经说明过了。

+ 核心是：Idea-->Draft-->Review<-->Last Call-->Final
+ Review会进入Living状态，反复迭代修改
+ 也可能进入Stagnant的停滞状态

### 结构

+ 参考模板撰写：[模板](https://github.com/ethereum/EIPs/blob/master/eip-template.md)

#### 标头

+ `eip`: *EIP 编号*（这由 EIP 编辑器确定）

  `title`: *EIP 标题是几个字，不是一个完整的句子*

  `description`:*描述是一个完整（短）的句子*

  `author`：*作者或作者姓名和/或用户名，或姓名和电子邮件的列表。详情如下。*

  `discussions-to`:*指向官方讨论帖的url*

  `status`：*草案，审查，最后一次通话，最终，停滞，撤回，生活*

  `last-call-deadline`：*最后一次通话时间结束的日期*（可选字段，仅当状态为 时才需要`Last Call`）

  `type`:*之一`Standards Track`, `Meta`, 或`Informational`*

  `category`: *,* *,* *, or**之一`Core``Networking``Interface``ERC`*（可选字段，仅`Standards Track`EIP 需要）

  `created`:*创建 EIP 的日期*

  `requires`: *EIP 编号*（可选字段）

  `withdrawal-reason`:*一句话解释EIP被撤回的原因。*（可选字段，仅当状态为 时才需要`Withdrawn`）

  允许列表的标题必须用逗号分隔元素。

  需要日期的标头始终采用 ISO 8601 (yyyy-mm-dd) 格式。

  `author`标题

  

#### 摘要

+ 摘要是一个多句（短段落）的技术摘要。这应该是规范部分的非常简洁和人类可读的版本。有人应该只能阅读摘要来了解本规范的要点。

#### 动机

+ 动机部分对于想要更改以太坊协议的 EIP 至关重要。它应该清楚地解释为什么现有的协议规范不足以解决 EIP 解决的问题。没有足够动机的 EIP 提交可能会被直接拒绝。

#### 基本原理

+ 基本原理通过描述设计的动机以及做出特定设计决策的原因来充实规范。它应该描述所考虑的替代设计和相关工作，例如其他语言如何支持该功能。理由应讨论在围绕 EIP 进行讨论期间提出的重要反对意见或担忧。

#### 向后兼容性

+ 所有引入向后不兼容性的 EIP 都必须包含描述这些不兼容性及其严重性的部分。EIP 必须解释作者建议如何处理这些不兼容性。没有足够的向后兼容性论文的 EIP 提交可能会被彻底拒绝。

#### 测试用例 

+ 实施的测试用例对于影响共识更改的 EIP 是强制性的。测试应该作为数据内联在 EIP 中（例如输入/预期输出对，或者包含在`../assets/eip-###/<filename>`.

#### 参考实现

+ 包含参考/示例实现的可选部分，人们可以使用它来帮助理解或实现本规范。

#### 安全注意事项

 + 所有 EIP 都必须包含一个部分，讨论与提议的更改相关的安全影响/注意事项。包括可能对安全讨论、暴露风险很重要的信息，并且可以在提案的整个生命周期中使用。例如，包括与安全相关的设计决策、关注点、重要讨论、特定于实施的指导和陷阱、威胁和风险的概述以及如何解决它们。缺少“安全注意事项”部分的 EIP 提交将被拒绝。如果没有审核人员认为足够的安全考虑讨论，EIP 无法进入“最终”状态。 

#### 版权弃权 

+ 所有 EIP 必须在公共领域。有关版权放弃的示例，请参阅此 EIP 的底部。

+ 这里： [通过CC0](https://creativecommons.org/publicdomain/zero/1.0/)放弃版权和相关权利。

### Doing

+ 是的，作为建设者，开始尝试写一个EIP了，因此也整理了两篇文章，因为最好的学习方式是学习-->内化-->输出！
+ 本文会发布在Dapp Learning社区:https://github.com/Dapp-Learning-DAO/Dapp-Learning，以及个人Blog(jLab.tech)


