Ethereum Improvement Proposals

以太坊改进提案

Ver 2022.1

本课程的开源教材

Derek 周朝晖

🐦 @zhous98 | 👋 DAism.io

全课程幻灯目录

1️⃣ 比特币:区块链 1.0

2️⃣ 钱包:区块链的入口

3️⃣ 以太坊:区块链 2.0

4️⃣ 通证标准的进化与应用

5️⃣ 去中心化交易与支付

6️⃣ 以太坊改进提案

7️⃣ 区块链发展:激励式开源协作

初学者每个幻灯的自学时间预计不低于30分钟

🧑‍💻 EIPs

EIPs即以太坊改进提案(Ethereum Improvement Proposals)。

  • 根据官方定义,EIPs是以开放协作模式为以太坊平台创建各种标准(包括以太坊核心协议规范、客户端API和合约标准)的一个专业化的提案协作区。
  • EIP应阐明相应功能的简明技术规范和基本原理。
  • EIP作者有责任就对应提案在社区内建立共识并记录异议。
  • 所有在建和已经完成的提案:https://eips.ethereum.org/all
  • 智能合约标准协作讨论:https://ethereum-magicians.org
  • EIPs 基地:https://github.com/ethereum/EIPs
  • 如果你想成为提案编辑人员:请查看 EIP-5069
  • 💁‍♂️ 提示:

  • 这种应用和公链基础标准混同讨论的模式适合于区块链发展的早期,我在道易程项目里的实践已经让我看到即将会发生的变化——直接将技术标准以区块链元器件的形式部署到主网供大家使用,跳过漫长且低效的讨论时间。错了就修订后再部署一次。
  • 很多 EIPs 就是智能合约标准,亦即应用标准。追踪 EIPs 及其对应的项目,是在区块链行业快速成长最好的方式!
  • 🚧 EIPs 状态术语与流程

    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 的类型

    1️⃣ Standard Track(标准追踪类)

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

  • Core(核心)——需要共识分叉的改进(如:EIP5EIP101),以及一些也许不是共识部分但可能与“核心开发”讨论相关的变更(例如,EIP86的矿工或节点策略改变之2、3和4)。
  • Networking(网络)——网络提案包括围绕devp2p (EIP8) 和Light Ethereum Subprotocol(以太坊轻客户端子协议)的改进,以及对 whisper 和 swarm 网络协议规范的改进建议。
  • Interface(接口)——包括有关客户端API/RPC规范和标准的改进,以及某些语言方面的标准,如方法名(EIP6)和合约ABI。标签“接口”对应于接口目录,在将该 EIP 提交给 EIP 目录之前,讨论应主要在其自身的目录(github存储库)中进行。
  • ERC(ERC提案)——Ethereum Request for Comment 的缩写,原本是征求大家意见的意思,主要为应用级标准及惯例。包含:通证标准(如ERC-20),名称注册(ERC-137),URI schemes(ERC-681),库/软件包格式 (EIP-190), 钱包格式 (EIP-85)等。
  • 2️⃣ Informational(信息类EIP)

    用于描述以太坊的设计问题,或者为以太坊社区提供一般性指导意见或信息,但并不提出新功能。

    信息类EIP不一定代表以太坊社区的共识或建议,因此用户和实施者可以自由选择是否忽视信息类EIP或者遵循其中的建议。

    3️⃣ Meta(元EIP)

    描述以太坊的改进过程(或事件),也被视为流程EIP(Process EIP)。

    流程EIP类似于标准跟踪EIP,但流程EIP描述以太坊协议外的内容(而不是协议本身)。

    他们可能会提出一个实施方案,但不会加入到以太坊的代码库。

    这些提案经常需要社区共识; 与信息类EIP不同,它们不是单纯的建议,用户通常也不能忽视它们。

    这类提案包含步骤、指南、决策过程的变更以及以太坊开发中使用的工具或环境的变更。我们也可以把元EIP看作是流程EIP。

    💥 如何参与EIPs的建设

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

  • 首先注册 Github 的账户。
  • 查阅 EIP-1(https://eips.ethereum.org/EIPS/eip-1)里面对于EIP的流程与要求的说明。
  • 这里有一个EIP模板(https://github.com/ethereum/EIPs/blob/master/eip-template.md)。点击页面右上角的“Fork”,分叉(相当于复制)其文件夹。
  • 按模板编辑好你的EIP内容。
  • 提交一个Pull请求到Ethereum的EIPs目录(https://github.com/ethereum/EIPs)。并对相关的审计反馈进行跟踪,及时回应审核意见或者修订你的提案。
  • 将你的EIP的链接转发到 以太坊牧猫人组织Ethererum Magicians 进行讨论。
  • 💡 我的经验

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

  • 因为以太坊改进提案编辑人员严重不足,且均为志愿者。EIP 的流程进展非常缓慢。通常你不必在意这一进展,按照你自己的节奏推动与该 EIP 相关的项目。
  • EIPs的模板和流程都发生过变化。建议你在起草 EIP 时,先仔细阅读官方指导即 EIP-1 。你在推进过程中还要注意它是否中途有变。
  • 合约标准的讨论参与者寥寥无几。
    譬如:
  • 道易程已经为区块链dApp的发展提供了更高效的协作方式,那就是技术标准几乎就是元宇宙元器件,或者说元器件基本上就是一个你新创的技术标准。此时,EIP 既是你发布的一个技术标准,也是你对这个标准的解释。你的元宇宙元器件则是该标准的首个应用。
    如果你的元宇宙元器件,那么恭喜你,名利双收!否则,你为整个行业贡献了一个有价值的 EIP ,也还是可贺可喜的。也可能两样都没有成功(EIP 失败说明方法不当,对应的元宇宙元器件也就凶多吉少了)
  • 👀 值得重视的 EIPs 及其赛道

    🪄 道易程:元宇宙的魔法学院

  • 为元宇宙的发展打了良好的通证经济的基础
  • 七大协议、两大算法
  • EIP-3712:多种批量同质化通证标准
  • EIP-2569: 一切通证的图片的链上存储和显示
  • 智能钱包和多签钱包(Smart Contract Wallet & Multisig Wallet)

    智能钱包的技术基础是最近很热门的账户抽象化(Account Abstract, AA)。与之相关有EIP-2938EIP-3074ERC-4337、更为激进和远期的 EIP-5003等等。

    智能钱包是合约,合约能写出什么功能那想象空间就很大很大了,虽然我们现在已经看到的还只有批量交易,权限管理,社交恢复等等。

    智能钱包的代表项目是Argent。验签的标准为 EIP-1271 (让合约也可以对交易签名)。

    多签钱包的基础不能少了智能钱包,可以把它归于智能钱包。

    多签钱包也叫做多重签名钱包。这个赛道的项目大概也就三到五个。其中用户最多的是Gnosis Safe。Github代码: https://github.com/gnosis/MultiSigWallet

    我建议你最好是去试用一下。顺便也可以看一下2021年下学期我创建的选修我的《区块链概论》课程的深圳大学学生的多签钱包。因为当时以太坊的gas太高,做NFT太昂贵,并且在之前已经玩过NFT,所以我就用了这个新玩法,给部分学生留下了一个永久的链上纪念。

    ㊙️ 零知识证明

    零知识证明由来已久,但技术上还有很大的发展空间。其实钱包里的交易签名就是零知识证明里的一个实例:没人知道我的私钥长啥样,我也没出示私钥给你看,但你又知道这个交易签名是我的私钥签署的。

    另外,零知识证明也在记账中得到很好的应用:譬如账单中采用的默克尔树(又叫哈希树,Merkle tree)就是个零知识证明

    除此之外,零知识证明早期比较著名的项目有Zcash,也叫做大零币——这也就是说还有项目叫小零币。它是一个国人山寨的。他曾是我的微信好友(后来我那个微信被永久封号)。小零币曾经被黑客攻入,你仔细搜索下相关的故事,就会明白一个非常非常重要的道理:它会告诉你零知识证明可能存在的应用边界——中本聪已经明明白白告诉我们他已经创立了一个新的隐私模型。这一工作已经终结!绝不可以再使用零知识证明来对交易信息进行隐匿,那样会给整条公链带来灭顶之灾!
    Zcash的创始人还继续在这个领域里面深耕,现在他主持的项目叫做StarkWare。技术细节上网站去找找吧。
    另一个和StarkWare技术PK的是 zkSync 使用的技术SNARKs。
    它们之间差别,你可以去看看这篇文章:《zk-rollup 争夺战:zkSync vs. StarkWare》

    零知识证明是真正的“黑科技”,值得大家特别关注!
    我个人认为,零知识证明在区块链和人工智能的结合方面,会是一个非常重要的技术!

    ZKP 主要有两种类型:

    (1)zkSNARK

  • Succinct (简洁)
  • Non-Interactive (非交互)
  • ARgument (论证)
  • of Knowledge (知识)
  • (2)zkSTARK

  • Scalable (可拓展)
  • Transparent(透明)
  • ARgument(论证)
  • of Knowledge(知识)
  • 🤸 花絮

    路人甲:有时候看一个新技术,确实令人振奋。但当我们讨论可能的应用场景的时候,又总是说着说着就碰了壁!

    路人乙:深有同感!深受其扰!

    📈 去中心化借贷市场

    去中心化借贷市场是DeFi的重要核心之一,而且也是一个已经发展得比较好的赛道。代表性的项目有MakerDAOAAVEEuler finance

    MakerDAO是一个开拓性的项目。对于DeFi的发展可谓功不可没。介绍它的文章很多。

    Euler finance(欧拉金融)由牛津大学的一支明星团队创立的 DeFi 借贷协议,它允许用户自由地将任何以太坊 ERC20 代币设置为可借贷资产并构建出其借贷市场,一举革新了DeFi借贷市场臃肿而低效的监管机制,能够极大地适应区块链市场快速变化的特性,同时极高效率地繁荣以太坊借贷市场!大有后发制人之势。强烈推荐大家重点关注它。

    Euler finance(欧拉金融)正在努力成为去中心化借贷的代名词,因为MakerDAO和AAVE确实不够“去中心化”。

    🌩️ 闪电贷(FlashLoan)

    闪电贷是区块链在金融领域的一大重要创新!

    那么也就是说,在这个世界上闪电贷是区块链的独门秘籍,我们传统的金融技术不可能实现闪电贷。

    闪电贷的独特之处用最简单的一句话说,就是它能够做到无抵押借贷——在无抵押的前提之下,它还绝对不会出现借了不还之类的问题。

    在闪电贷的应用场景里,它需要有两大市场的支撑:去中心化借贷和去中心化交易所。
    dYdX、Aave 和 Uniswap 这三个项目都提供了可供第三方调用的闪电贷智能合约。但其技术细节都不同,特别是这些合约的接口彼此截然不同,因此有人就做了一个通用的接口标准:

    闪电贷EIP-3156: Flash Loans

    多链并存是区块链早期必然要经历的阶段,但我们还没有任何十年后多链存在的理由。因此对于跨链应用,我们要更仔细去看看它们是否有实质性的创新。包括多链的闪电贷项目:Equalizer

    💧 流支付(Money Streaming)

    相对前面的那些技术,流支付被人注意的时间比较晚,而且它到现在为止还没有找到很好的应用场景。当然,这不是他本身的问题,是因为整个区块链的发展程度还不够。我相信流支付至少在物联网的领域会有很好的发展前景。

    这个赛道第一个热门的项目是Superfluid。目前有一个将多签钱包和流支付相结合的热门项目叫Zebec,但我个人并不看好这种急急忙忙就将技术的应用目标锁死的项目。但最早的流支付项目是Sablier,它的创始人甚至在2018年就创建了流支付的技术标准:EIP-1620: Money Streaming

    一个创新技术的落地不容易吧?

    流支付将支付手段从离散型推进转化为连续性。

    从流媒体想象流支付:

    流媒体(streaming media)将一连串的媒体数据压缩后,经过网上分段发送数据,在网上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件。

    参考资料推荐:

    牛比特研报:流支付赛道4个项目盘点(附交互教程)

    📢 去中心化预言机(Decentralized Oracle)

    去中心化借贷市场是必须要跟去中心化交易所相结合的,而完成它们的结合的关键就是去中心化预言机——去中心化预言机是它们能够结合的非常重要的安全保障工具。

    请注意去中心化预言机能提供的不仅仅是币价,区块链所需的现实世界数据都得依赖于它。

    预言机的几个解决方案:

    Chainlink——是一个多链预言机网络,为智能合约“提供可靠、防篡改的输入和输出”。Chainlink 是市值最大的代币化预言机解决方案,也是最成熟的解决方案之一,由 Sergey Nazarov 于 2017 年推出。

    Band Protocal——它允许去中心化应用程序(dApps)集成价格和事件源,有效地将去中心化世界连接到真实世界。虽然比 Chainlink 晚出现,但 Band 自 2018 年推出以来就获得了大量关注,并被广泛视为最大的竞争对手。Band 提供了“community-curated”的数据源,允许 dApp 运营商参与数据馈送的管理和策划。从这个意义上说,Band 对 Chainlink 采取了不同的方法,让 dApp 通过其智能合约数据点访问数据,而不是通过外部预言机。

    Witnet——Witnet协议旨在为智能合约提供一种去中心化且无需许可的方式来访问任何在线数据源,激励预言机执行数据检索任务以换取代币(WIT)。Witnet 解决方案的关键是一个信誉系统,它可以激励预言机诚实地完成数据请求,并通过降低信誉分数来抑制不准确的数据报告。

    🎉 账户抽象化

    这是值得期待的意义重大的改进。

    值得重复的是:账户抽象化实现后,因为合约帐户将能自主触发可执行多种操作的代码,譬如创建新合约,那么结合 AI ,对其应用我们就有了极大的想象空间。这一技术创新将给人类社会带来巨大的变化!

    参考资料推荐:

    Web3 账户概念梳理,钱包使用不迷路