漫游以太坊过去现在和未来

撰文:Hakeen|W3.Hitchhiker

修订:Evelyn|W3.Hitchhiker

01. 以太坊的升级路线图 M2SVPS

1)The Merge

在 The Merge 阶段,POW 共识机制将过度为 POS,信标链将合并在一起。为了便于理解,我们将以太坊结构简化为下图:
我们在这里先定义什么是分片:简单理解就是水平分割数据库以分散负载的过程。

在转为 POS 后:区块提议者和区块验证者分离,POS 工作流程如下(根据上图理解):
  1. 在 Rollup 上提交交易
  2. 验证者将交易添加到分片区块中
  3. 信标链选择验证者以提出新的块
  4. 其余的验证者组成随机的委员会并验证分片上的提议
提出区块和证明提议都需要在一个 slot 内完成,一般是 12s。每 32 个 slot 组成一个 epoch 周期,每个 epoch 将打乱验证者排序并重新选举委员会。
合并后,以太坊将为共识层实现提议者-构建者分离(PBS)。Vitalik 认为,所有区块链的终局都将是拥有中心化的区块生产和去中心化的区块验证。由于分片后的以太坊区块数据非常密集,出于对数据可用性的高要求,区块生产的中心化是必要的。同时,必须有一种能够维护一个去中心化的验证者集的方案,它可以验证区块并执行数据可用性采样。
矿工和区块验证分离。矿工进行区块的构建,然后将区块提交给验证者。向验证者出价投标选择自己的区块,然后验证者投票来决定区块是否有效。
分片是一种分区方式,可以在 P2P 网络中分散计算任务和存储工作负载,经过这种处理方式,每个节点不用负责处理整个网络的交易负载,只需要维护与其分区(或分片)相关的信息就可以了。每个分片都有自己的验证者网络或者节点网络。
分片的安全性问题:例如整个网络有 10 条分片链,破坏整个网络需要 51% 的算力,那么破坏单个分片只需要 5.1% 的算力。因此后续的改进就包含了一个 SSF 算法,这个算法能够有效防止 51% 的算力攻击。根据vitalik总结,转向 SSF 是一个多年的路线图,即使目前做了大量工作,它也将是以太坊较晚推行的重大变化之一,并且远在以太坊的 PoS 证明机制、分片和 Verkle 树完全推出之后。
信标链,负责生成随机数,将节点分配给分片,捕捉单个分片的快照和其他各种功能,负责完成分片间的通信,协调网络的同步。
信标链的执行步骤如下:
  1. 区块生产者对区块头和出价一起进行承诺。
  2. 信标链上的区块者(验证者)选择获胜的区块头和投标,无论区块打包者是否最终生成区块体,都将无条件获得中标费。
  3. Committee(验证者中随机选取)投票确认获得的区块头。
  4. 区块打包者披露区块体。
2)The Surge

该路线的主要目标是推动以 Rollup 为中心的扩容。Surge 指的是添加了以太坊分片,这是一种扩容解决方案,以太坊基金会声称:该解决方案将进一步启用低 gas 费的二层区块链,降低 rollup 或交易的成本,并使用户更容易操作保护以太坊网络的节点。
该图仍然可以通过以下简图来理解:

以 zkrollup 运行原理为例:在 zkrollup 中分为排序器(sequencer)和聚合器(aggregator),排序器负责将用户交易排序,并且将其打包成批次(batch),发送给聚合器。聚合器执行交易,从前状态根(prev state root),生成后状态根(post state root),然后生成证明(proof),聚合器最后将前状态根、后状态根、交易数据,证明发送到 L1 上的合约,合约负责校验证明是否有效,交易数据存储在 calldata 内。Zkrollup 数据可用性可以让任何人能够根据链上存储的交易数据,还原出账户的全局状态。

但是使用 calldata 的费用非常昂贵,因此整个EIP-4844 协议(可能随时改变)提出了将交易区块的大小改为 1~2MB,为未来的 rollup 与数据分片打下坚实基础。目前以太坊的区块大小大约是 60KB ~100KB,以 EIP-4844 为例,大概可以提升 10~34x 的区块大小极限。该区块格式被称为 blob(也可以称为数据分片 data shard)。

3)The Scourge

该阶段 Scourge 是路线图的补充,主要用于解决 MEV 的问题。那什么是 MEV?
MEV 全名 Miner Extractable Value / Maximal Extractable Value,这一概念最先应用在工作量证明的背景下,最初被称为“矿工可提取价值(Miner Extractable Value)”。这是因为在工作量证明中,矿工掌握了交易的包含、排除和顺序等角色能力。然而,在通过合并过渡为权益证明后,验证者将负责这些角色,而挖矿将不再适用(此处介绍的价值提取方法在这次过渡后仍将保留,因此需要更改名称)。为了继续使用相同的首字母缩写词以便确保延续性,同时保持相同基本含义,现在使用“最大可提取价值(Maximal Extractable Value)”作为更具包容性的替代词。
套利空间包括:
  1. 通过压缩存储空间,来获得 gas 费用的价差;
  2. 裁判员抢跑:广泛的搜索 mempool 上的交易,机器在本地执行计算,看看是否会有利可图,如果有则用自己的地址发起相同交易,并且使用更高的 gas 费;
  3. 寻找清算目标:机器人竞相以最快的速度解析区块链数据,从而确定哪些借款人可以被清算,然后成为第一个提交清算交易并自行收取清算费的人。
  4. 夹心交易:搜索人会监视内存池内 DEX 的大额交易。例如,有人想要在 Uniswap 上使用 DAI 购买 10,000 UNI。这类大额交易会对 UNI / DAI 对产生重大的影响,可能会显著提高 UNI 相对于 DAI 的价格。搜索人可以计算该大额交易对 UNI / DAI 对的大致价格影响,并在大额交易之前立即执行最优买单,低价买入 UNI,然后在大额交易之后立即执行卖单,以大额订单造成的更高价格卖出。
MEV 的缺陷:
某些形式的 MEV,如夹心交易,会导致用户的体验明显变差。被夹在中间的用户面临更高的滑点和更差的交易执行。在网络层,一般的抢跑者和他们经常参与的矿工费拍卖(当两个或更多的先行者通过逐步提高自己交易的矿工费,从而使他们的交易被打包到下一个区块),导致网络拥堵和试图运行正常交易的其他人的高矿工费。除了区块内发生的,MEV 也可能会在区块间产生有害的影响。如果一个区块中可用的 MEV 大大超过了标准区块的奖励,矿工可能会被激励去重新开采区块并为自己捕获 MEV,进而导致区块链的重新组织和共识的不稳定。
大部分 MEV 是由称为“搜索者”的独立网络参与者提取的。搜索者在区块链数据上运行复杂的算法来检测盈利的 MEV 机会,并且有机器人自动将这些盈利交易提交到网络。以太坊上的 MEV 问题涉及使用机器人来利用网络交易,导致拥塞和高额费用。
4)The Verge

Verge 将实现“Verkle 树”(一种数学证明)和“无状态客户端”。这些技术升级将允许用户成为网络验证者,而无需在他们的机器上存储大量数据。这也是围绕 rollup 扩容的步骤之一,前文提到过 zk rollup 的简易工作原理,聚合器提交了证明,layer 1 上的验证合约只需要验证 blob 内的 KZG 承诺和生成的证明即可。这里简单介绍一下 KZG 承诺,就是确保所有的交易都被包含了进来。因为 rollup 可以提交部分交易,生成证明,如果使用 KZG,那么所有的交易都会被确保包含进来生成证明。
The Verge 就是确保验证非常简单,只需要下载 N 个字节数据,执行基本的计算就可以验证 rollup 提交的证明。
值得一提的是,ZK rollup 有许多种方案,stark、snark 或者 bulletproof 等。各个方案对于证明和验证的方式都不尽相同,因此出现了权衡。SNARKs 目前比 STARKs 技术更易上手,技术也更完善,因此许多项目刚开始都是使用 SNARKs,但是随着 STARKs 技术上的迭代后,最终会逐渐转向抗量子攻击的 STARKs。虽然以太坊为了与 rollup 适配,EIP-4844 主要改进之一是交易格式 blob,扩大了区块容量,但目前所有的零知识证明的主要瓶颈仍然在于自身证明算法,一方面通过改进算法来解决证明问题,另一方面通过堆叠硬件来提高证明效率,也因此衍生了 ZK 挖矿赛道。

5)The Purge

The Purge 将减少在硬盘驱动器上存储 ETH 所需的空间量,试图简化以太坊协议并且不需要节点存储历史。这样可以极大的提升网络的带宽。
EIP-4444:
客户端必须停止在 P2P 层上提供超过一年的历史标头、正文和 recipient。客户端可以在本地修剪这些历史数据。保存以太坊的历史是根本,相信有各种带外方式来实现这一点。历史数据可以通过 torrent 磁力链接或 IPFS 等网络打包和共享。此外,Portal Network 或 The Graph 等系统可用于获取历史数据。客户端应允许导入和导出历史数据。客户端可以提供获取 / 验证数据并自动导入它们的脚本。
6)The Splurge

该路线主要是一些零碎的优化修复,如账户抽象、EVM 优化以及随机数方案 VDF 等。
这里提到的账户抽象(Account Abstraction,AA)一直都是 ZK 系 Layer 2 想要首先实现的目标。那什么是账户抽象?在实现账户抽象之后,一个智能合约账户也可以主动发起交易,而无需依赖“元交易”的机制(这在 EIP-4844 里被提出)。
在以太坊内,账户分为合约账户和外部账户。目前的以太坊的事务类型只有一种,必须由外部地址发起,合约地址无法主动发起事务。因此,任何合约自身状态的改变,必须依赖于一个外部地址发起的事务,无论是一个多重签名账户,还是混币器,或是任何智能合约的配置变更,都需要由至少一个外部账户触发。
无论使用以太坊上的什么应用,用户都必须持有以太坊(并承担以太坊价格波动的风险)。其次,用户需要处理复杂的费用逻辑,gas price,gas limit,事务阻塞,这些概念对用户来说过于复杂。许多区块链钱包或应用试图通过产品优化提高用户体验,但效果甚微。
以账户为中心的方案的目标是为用户创建一个基于智能合约管理的账户。实现账户抽象后的好处是:
  1. 现在的合约可以持有 ETH,直接提交包含所有签名的事务,用户不一定需要为交易支付 gas 费用,完全取决于项目。
  2. 由于实现了自定义密码学,因此未来不会强制要求使用 ESCDA 椭圆曲线来进行签名,未来一台手机的指纹识别、面部识别、生物识别等技术均可以作为签名方式。
从而显著改善了用户与以太坊的交互体验。
02. 以太坊的模块化
整个以太坊目前已经出现了模块化的趋势,执行层就是由 Layer 2 负责(如Arbitrum、zkSync、StarkNet、Polygon zkEVM 等)。他们负责执行 L2 上用户的交易,并且提交证明。Layer 2 一般使用的是 OP 技术 / ZK 技术,ZK 技术在理论上 TPS 是远高于 OP 的,目前大量生态在 OP 系,但是未来,随着 ZK 技术的完善,会有越来越多应用迁移到 ZK 系。该部分是对路线图的详细描述与补充为什么和怎么样。

目前以太坊只是将执行层剥离开来,实际上,层级仍然混作一谈。在celestia的愿景中,执行层只进行两件事:对单笔交易而言,执行交易并发生状态更改;对同批次的交易而言,计算该批次的状态根。当前以太坊执行层的一部分工作分给了 Rollup ,即我们熟知的 StarkNet 、zkSync 、Arbitrum 和 Optimism 。
现在无论是 Optimism、Polygon、StarkNet、zkSync 等都往模块化的道路上探索。
Optimism 提出了 bedrock / OP stack,Polygon 也在研发 Polygon Avail 作为数据可用性层,supernets 则用以简化链的创建与共享验证者集。
结算层:可以理解为主链上的 Rollup 合约验证上文提到的前状态根、后状态根、证明的有效性(zkRollup)或欺诈证明(Optimistic Rollup)的过程。
共识层:无论采用 PoW 、PoS 或其他共识算法,总之共识层是为了在分布式系统中对某件事达成一致,即对状态转换的有效性达成共识(前状态根经过计算转换成的后状态根)。在模块化的语境下,结算层和共识层的含义有些相近,故也有一些研究者把结算层和共识层统一起来。
数据可用性层:确保将交易数据完整上传到数据可用性层,验证节点能够通过该层的数据复现所有状态变更。
这里需要辨析的是数据可用性和数据存储的区别:
数据可用性与数据存储是明显不同的,前者关注的是最新区块发布的数据是否可用,而后者则是涉及安全地存储数据并保证在需要时可以访问它。
1)结算层上的各种 Rollup
从结算层看,目前认为 rollup 的焦点在 ZK 系。如果通过 ZK 系的 rollup 来改进 ZK 证明系统的大小、gas 消耗、成本,再结合递归和并行处理的话就能够极大的拓展其 TPS。那么我们就先从 ZK rollup 开始。
随着以太坊扩容之路的发展,零知识证明(Zero Knowledge Proof,ZKP)技术被 Vitalik 认为是有望成为扩容之战的终局的方案。
ZKP 的本质是让某人证明他们知道或所拥有某些东西。例如,我可以证明我拥有开门的钥匙,而无须将钥匙拿出来。证明知道某个账户的密码,而无需输入密码并冒着被暴露的风险,这项技术对个人隐私、加密、企业甚至核裁军都有影响。通过姚氏百万富翁问题修改版本来加深理解:这个问题讨论了两个百万富翁爱丽丝和鲍勃,他们想在不透露实际财富的情况下知道他们中的哪一个更富有。
假设公寓每月的租金为 1000 美元,若要符合出租人选的标准,则至少要支付一个月租金的 40 倍。那么我们(租客)需要证明我们的年收入要有 4 万美元以上才行。但房主不想我们找到漏洞,因此选择不公布具体的租金,他的目的是测试我们是否符合标准,而答案仅仅是符合或者不符合,而不对具体金额负责。

现在有十个盒子,以 1 万美元为增量,标记为 10~100k 美元。每个都有一个钥匙和一个插槽。房主带着盒子走进房间毁掉 9 把钥匙,拿走标有 40k 美元盒子的钥匙。
租客年薪达到 7.5 万美元,银行代理人监督开具资产证明的文件,不写明具体资金,这个文件的本质是银行的资产