一、引言
Vitalik于2022年11月5日,在x上发布了一份最新的以太坊发展蓝图。这张蓝图概括了,未来的以太坊将对协议做出哪些方面的改进。其改进方向大概可以分为六部分,我们可以将这六部分看作以太坊未来的主线任务,而想要实现主线任务,则需要完成主线任务下的若干支线任务。
以太坊的发展蓝图是围绕着什么原则设计的呢?本质上以太坊也是产品,那么产品还是需要以客户为核心,围绕着客户需求来进行设计和改进的。产品的好坏,由使用人数来决定。
所以以太坊的发展蓝图致力于三个目标:交易更便宜、网络更安全、用户使用更简单。接下来我们将来剖析以太坊发展蓝图,看看以太坊未来的发展方向以及执行策略吧!
二、Merge
Merge核心目标是要让以太坊实现权益证明(proof of stake)共识机制。Merge需要实现两个主要任务,一个是主网和信标链(beacon chain)的合并,弃用工作量证明,转向权益证明共识机制;另一个任务是实现单时隙确定性 (Single slot finality)。
目前来看,主网和信标链的合并已经完成,权益证明机制替代了原有的工作量证明机制,但是有一些支线任务还在进行中,比如”分布式验证者”和”质押提款”。对于单时隙确定性目标也还正在进行中。
(一)转向权益证明共识
以太坊原本的工作量证明(proof of work)机制有明显的两大弊端,一个是能源消耗及环境污染问题,另一个是以太坊的扩容问题。工作量证明机制需要通过计算的方式来实现区块链的共识,为了实现高算力则需要消耗大量的电力,导致了能源的消耗以及对环境带来的负面影响,从长远的角度来看,这是不可持续的。另一方面权益证明可以帮助以太坊实现扩展性解决方案,比如分片技术,在后续我们会提到。
信标链和主网的合并
信标链(beacon chain)于2020年12月1日上线,于2022年9月15日完成合并升级,将权益证明正式确定为太坊的共识机制。所谓的合并即信标链和以太坊主网同时运行着,而信标链采用权益证明机制,当确保信标链上的权益证明机制逻辑可靠时,再将主网上的挖矿、区块传播以及旧的工作量证明共识停止,并将这一切转交给信标链。
分布式验证者
分布式验证者(distributed validator)的技术原理类似于多签技术,其通过BLS聚合签名、阈值签名、分布式密钥生成(DKG)、多方计算(MPC)等技术实现分布式验证,从而应用在权益证明机制当中。
在以太坊的权益证明机制当中,验证者需要质押32ETH成为验证者。分布式验证技术可以让多个参与方联合质押,即每个参与方持有一个私钥分片,从而共同参与到验证者节点当中。同时多签和分布式管理的方案也可以消除单点故障,增加质押资产的安全性。
质押提款
自 2020 年 11 月推出质押存款合约以来,一些勇敢的以太坊先驱者自愿锁定资金以激活”验证者”,验证者即遵循网络规则有权正式证明和提出区块的特殊帐户。在上海/卡佩拉升级之前,用户无法使用或访问自己质押的以太币。
2023 年 4 月 12 日进行的上海/卡佩拉升级实现了质押提款功能。用户可以将以太币从以太坊共识层(信标链)上的验证者帐户转移到可以进行交易的执行层。用户提供提款地址后,超过 32 个以太币的余额的奖励支付将自动定期发送到和每个验证者相关的提款地址。 用户还可以完全退出质押,解锁他们全部的验证者余额。
(二)实现单时隙确定性
以太坊上的时间以12秒为一个单位计数,称为”slot”,以太坊的目标是希望将交易的最终确定时间能够缩短到一个”slot”。目前在以太坊交易中大概需要等待15分钟才能最终确定一笔交易,这无论对于个人用户还是Dapp或者交易所而言,都是非常不方便的。从用户体验角度来看,缩短交易最终确定时间都是非常有必要的。
秘密领袖选举
以太坊上的时间以12秒为一个单位计数,称为”slot”,在这个时间段内,有一个提议者会被选中提议一个新区块。一个”epoch”由连续的多个”slot”组成,包含了32个”slot”,总时长6分24秒。在每个”epoch”的开始,会有一个随机的排序过程,确定在接下来的32个”slot”中哪些验证者将成为区块的提议者。
当前的权益证明机制,每个epoch中的32个slot的区块提议者的省份都是公开的。恶意攻击者知道谁会提议区块,他们可对其进行拒绝服务(DDos)攻击,中断区块的生产,为自己获取更多的奖励。而”秘密单一领导选举(secret single leaderelection)“方案可以通过隐藏每个slot中提议者的身份直到他们真正提出一个区块后在公开,以此来规避ddos的问题。
单时隙确定性
单时隙最终确定性(Single Slot Finality)的目标是将以太坊的区块确认时间从目前的15分钟减少到仅一个slot,也就是12秒。目前确认一个区块的等待时间过长,对于那些希望实现高交易吞吐量的应用和交易所来说,是非常不友好的。在当前的共识中,可以通过签名汇总方案(BLS)和超级委员会的机制对其进行改进。单时隙确定性正处于研究阶段, 预计它不会在几年内推出,可能会在 Verkle 树和 Danksharding 等其他重大升级之后推出。
三、Surge
Surge需要实现两个主要任务,一个是基本的rollup扩容(有辅助轮),另一个是完整的rollup扩容(没有辅助轮的),从而最终实现10万+TPS的目标。
目前来看EIP-4844标准已经确定,实际应用还在进行中。optimistic rollup和zk-evm原型已经出来了,未来Lyaer2在朝着有限辅助轮和无辅助轮的方向发展着 。
(一)基本的rollup扩容
以太坊网络利用Rollups技术进行layer2网络扩展,Rollups批量处理交易并将结果发送到以太坊上。尽管Rollups比以太坊主网便宜多达八倍,但还可以进一步优化,以降低最终用户的成本。 目前rollups比以太坊一层网络便宜大约 3-8 倍,zk-rollups将把费用降低约 40-100 倍,而即将进行的以太坊变更会再次扩容 100-1000 倍,交易成本降至不足 0.001 美元。
EIP-4844
Danksharding 是让以太坊成为真正的可扩展区块链的方案,但要实现这个方案,需要进行一系列协议升级。 Proto-Danksharding 是这个过程中的一个中间步骤。 两者都是为了让用户在二层网络上的交易尽可能便宜,并将以太坊扩展到每秒处理 >100,000 次交易。
Proto-Danksharding,也称为 EIP-4844,这一提案可以帮助Rollups更便宜地传输数据,从而使得用户支付的交易费用更少。目前在Rollups中交易都发布在CALLDATA当中,这是非常高成本的方法,因为CALLDATA中的数据都是需要经过所有以太坊节点处理,并且永久存在于链上。而在EIP-4884中引入了新的交易格式”blob-carrying transactions”,我们可以将数据转移到新的临时”二进制大对象”中存储,由于二进制大对象不是永久性存储,所以相对更便宜。
欺诈性证明
欺诈证明(Fraud Proofs)使得区块链上的轻客户端能够验证他们收到的块是否有效。例如,如果攻击者创建了一个无效的块(后状态根错误或某些交易无效),那么可以生成一个包含交易和Merkle树数据的欺诈证明,证明这个块是无效的。轻客户端只需要处理这个欺诈证明中提供的状态部分,并查看是否有任何处理错误来验证这个块的有效性。
从理论上讲,通过使用欺诈证明,轻客户端可以得到几乎与全节点一样的安全保证。但这有一个前提:轻客户端至少要连接到某个诚实的节点。如果轻客户端收到一个块,它可以询问网络是否有任何关于这个块的欺诈证据。如果没有,那么在一段时间后轻客户端可以认为这个块是有效的。
然而,欺诈证明有一个关键的问题:数据可用性。如果攻击者创建了一个块,但并没有发布这个块的100%数据,那么这个块的真实性就很难判断。即使我们可以使用零知识证明来确认一个块的正确性,如果攻击者发布了一个数据不完整的块,那么其他验证器就无法完全计算状态,也无法创建与那些缺失数据交互的新块。
(二)完整的rollup扩容
数据可用性采样
数据可用性采样(Data Availability Sampling,简称DAS)是以太坊中用于确保区块数据完整性的一种策略。DAS的核心思想是,轻客户端在完全接受一个区块之前,会进行数据可用性的验证,但这是以一种概率性的方式进行的。为了不下载整个区块,轻客户端可能随机选择区块中的几个部分(如20个)并尝试从网络中下载它们。仅当所有随机请求的部分都能成功下载并验证时,该块才被接受。
但仅仅这样仍然存在漏洞。恶意攻击者可能仅使少量数据不可用,这可能导致整个块无效,而轻客户端在随机抽样时可能会错过这些数据。为了克服上述问题,引入了纠删码(Erasure Coding)的概念。纠删码是一种允许从部分损坏的数据中恢复原始数据的技术。具体来说,纠删码能够将长度为M的数据扩展为长度为N的数据,其中,只需N中的任意M块即可恢复原始数据。通过要求将这种扩展数据的Merkle根提交到区块中,并让轻客户端随机检查扩展数据的大部分是否可用,可以大大提高数据完整性的概率。可能的情况:
情况1:如果轻客户端发现大多数扩展数据都可用,这意味着整个区块的数据是可用的,并且该区块是有效的。
情况2:数据是完整的,但区块本身可能是无效的。在这种情况下,期望其他节点会产生欺诈证明来指出区块的问题。
情况3:整个扩展数据都可用,但纠删码的构建可能是错误的。同样,其他节点可能会产生专门的欺诈证明来指出纠删码的问题。
KZG承诺
KZG(Kate-Zaverucha-Goldberg)是基于其三位原创作者的名字缩写而来,他们提出了一项将数据二进制大对象缩减为小型密码学”承诺”的方案。KZG 是一种将多项式方程拟合到数据上的替代式证明。 “承诺”在某些保密数据点处计算多项式。 证明者将在数据上拟合相同的多项式,并在相同(保密数据点)取值处进行计算,以校验(多项式)结果是否相同。
在以太坊的扩展中,数据可用性采样(DAS)和纠删码的解决方案面临着另一个问题:如何确保数据被正确地扩展并进行准确性验证。如果纠删码的数据处理不当,那么充满错误或垃圾数据的数据块可能无法恢复。
如何验证二进制大对象中的数据?Rollup将其执行的交易发布在数据二进制大对象中。 它们也发布一个对数据的”承诺”。 为此,他们会对数据拟合一个多项式函数。 然后,这个函数可以在各个点计算。 例如,如果我们定义一个非常简单的函数 f(x) = 2x-1,那么可以就 x = 1、x = 2、x = 3 计算这个函数,得到结果 1, 3, 5。 证明者对数据应用相同的函数,并在相同的点计算。 如果原始数据被更改,函数就不会相同,因此每个点计算出来的值也不会相同。
四、Scourge
Scourge的目标是减轻由于MEV所带来的中心化效应,同时保证交易的公平性和透明度。提议者与构建者分离(Proposer-builder Separation,简称”PBS”)是其中最重要的一个升级。
在当前的交易市场中,区块提议者(合并前:矿工,合并后:验证者)通过查看内存池中哪些交易支付最高优先级费用,来直接选择将哪些交易包含在下一个区块中。这使得区块提议者能够使用复杂的策略来选择包含哪些交易,甚至包含自己的交易,以利用 DEX 套利和清算(Miner Extractable Value,简称MEV)等机会来实现利润最大化。为了应对这一问题,以太坊开发社区提出了PBS这一方案。
提案者与构建者分离
提案者与构建者分离(Proposer-Builder Separation,简称PBS)通过将区块构建角色与区块提案角色分开来解决MEV中心化等问题。
构建者他们负责选择并组织交易来构建执行块体(也就是区块的主要有效负载),然后提交他们愿意支付给提议者的出价。提议者他们负责从各个构建者中选择出价最高的执行块体,并将其添加到区块链上。
提议者在选择哪个执行块体(即哪个构建者的出价)会赢得拍卖并被添加到链上之前,他们不会知道这个块体的具体内容。这种做法的目的是为了确保提议者不能提前知道构建者的交易策略,防止他们窃取构建者的MEV策略。如果提议者能够预先看到执行块体的内容,他们可能会尝试模仿构建者的MEV提取策略,从而支付给构建者费用。
五、Verge
Verge的目标是要实现在不依赖查阅本地完整数据的情况下,验证区块和交易。目前运行完整的以太坊节点至少需要 1TB -2TB的高速固态硬盘。 在不删除任何旧数据的情况下,每周约会增加14G数据,而存储自创世块以来的所有数据需要约12TB。虽然较久远的数据可以使用便宜的硬盘进行存储,但它们运行速度太慢,无法应对传入的区块。如果只有拥有昂贵硬件的用户才能独立进行加密检查来验证信息,那去中心化就不可能实现。为了实现以太坊的最终愿景,就需要减少每个节点需要存储的数据量。
减少节点存储量的方案有主要有四种,每种方法都要求对以太坊的核心协议进行不同程度的改进:
历史数据到期:客户端删除它们不可能再需要的旧数据,以便只用存储一小部分的历史数据,在新数据传入时丢弃旧数据。但无法从根本上改变以太坊节点处理状态数据的模式,它仅可以改变历史数据的访问方式。
状态数据过期:从单个节点中删除最近未访问的状态数据。该机制仍处于研究阶段,还未准备好上线。
弱无状态性:只有区块生产者需要访问完整的状态数据,其他节点能够在没有本地状态数据库的情况下验证区块。要实现这一点,以太坊客户端中必须已经实施”Verkle tree”。
强无状态性:无需任何区块存储状态数据。目前处于研究中
以上四种方案都处于研究阶段,预计几年后才会上线,最终也不确定会采用哪种方案。如果首先实现了状态数据到期,可能就不需要再实现历史数据到期。 同时还需要先完成”Verkle tree”和”PBS”等改进才能实施以上方案。截至目前,Verkle树的测试网已经在运行,但在迁移到Verkle树之前,客户端还需要进行大量的更新。未来的以太坊还计划整合零知识证明技术,进一步提高证明的效率以及简化区块的验证过程。
Verkle tree
Verkle tree是一种数据结构方案,其工作原理与 Merkle treee类似,但Witnesses要少得多。传统的Merkle tree需要大量数据以验证状态的变化,因为它们生成的”见证”(用于验证交易的数据路径)体积很大,这在验证区块时需要很高的存储和带宽。相比之下,Verkle tree通过使用向量承诺方案来减少所需的存储空间和见证的大小,简化了树的结构,缩短了从树叶到根的路径长度。
Verkle树在概念上是一棵树,具有根节点、中间节点和叶节点。不同之处在于,Verkle树利用向量承诺来实现其节点结构。向量承诺允许一方提交一系列元素,同时保证能有效地证明某个特定元素处于该序列的特定位置。Verkle树中的每个节点都是一个向量承诺,可以包含大量的子节点(例如256个),而不是传统的二叉树结构。当需要验证特定数据项是否包含在树中时,可以生成一个从叶节点到根的路径(Witnesses)。Witnesses可以让没有整棵树的第三方验证数据的准确性。
沃克尔树是 (key,value) 对,其中键是 32 字节元素,由一个 31 字节的词干和一个单字节的后缀组成。 这些键分为扩展节点和内部节点。 扩展节点代表一个单一的词干,包含 256 个不同后缀的子节点。 内部节点也有 256 个子节点,但它们可以是其他扩展节点。我们可以根据以下函数从一组键/值对计算整个Verkle tree的根:
六、Purge
Purge的目标是简化以太坊协议以及清理技术债务。随着交易量和区块的增加,历史区块和状态数据正在不断增长。这意味着对于想要运行全节点的用户来说,他们需要至少需要1TB-2TB的磁盘空间来存储这些数据,才能参与到网络的维护中。
EIP-4444
EIP-4444通过限制以太坊客户端访问p2p网络上托管超过一年的历史数据,来简化以太坊协议,从而减少节点的存储数据。
状态到期
状态到期(State expiry)旨在处理状态不断地更新和增长问题,以太坊的状态是指由所有账户的余额、合约代码和账户存储组成的复杂数据结构。“状态到期”会自动修剪那些在定义的时间(例如一年)内保持静态的状态数据,将它们移动到一个单独的树结构中,并从主要的以太坊协议中删除它们。这意味着长时间无活动的账户和合约数据将被移除出活跃状态树,从而减少了对存储资源的需求。但是该方案只有在迁移到 Verkle Trees 后才可实施。
七、Splurge
Splurge中囊括了一些杂项目标任务,其中包括了EIP-1559的改进,ERC-4337账户抽象、EVM的改进和可验证延迟函数。
EIP-1559的最终形式
EIP-1559提案主张销毁基本费用,矿工仅获得新增区块奖励+小费。传统的 gas费模型依赖于简单的拍卖系统,用户必须出价才能使其交易被矿工选中并包括在区块中。这种模型导致费用高度波动,并且与网络的实际使用情况不一致。EIP-1559 通过引入一个”基本费用”机制,当区块高于 Gas 目标时,每种 Gas 的基本费用增加;当区块低于 Gas 目标时,每种 Gas 的基本费用减少,每份 Gas 的基本费用都会被烧掉。该费用制度的一个重要方面是矿工只能保留优先费,基本费用被销毁(即被协议销毁),以此来解决gas费高度波动的问题。
EIP-1559改进了以太坊的交易费用模型,但它并未解决一些与资源限制和长期存储有关的复杂性问题。这可能导致在处理不同资源的需求时效率低下,以及在处理大规模数据存储和传输时出现问题。因此EIP-1559还不是以太坊的最终改进方案。
账户抽象的最终形式
账户抽象可以理解为一种去中心化的”钱庄”。用户可以将资产放在这个”钱庄”中,需要转账时只要通知”钱庄”,由”钱庄”完成转账操作。这样,价值转移和信息转移不再同时发生在用户的单一账户上,而是在一个抽象账户上发生,但最终这个交易还是由用户签署的。通过账户抽象信息和价值的转移不再完全依赖于用户的私钥签名,而是可以通过智能合约自动完成。这种设计使得以太坊能够支持更复杂、更自动化的交易和应用。目前ERC-4337正在试运行,举例广泛使用还需要一定的发展时间。
可验证延迟函数
可验证延迟函数(Verifiable Delay Functions,简称VDF)是一种加密原语,它要求特定数量的时间来进行计算,但结果可以快速验证。VDF的关键特性在于它们需要执行大量的顺序计算,这意味着不能通过并行处理或使用更快的硬件来加速计算过程。
VDF的核心是”延迟”属性,即计算结果需要消耗预定的、不可减少的时间,即使在最快的硬件上也是如此。这个时间延迟是内置的,确保了在特定时间之前无法得知输出。尽管计算本身耗时,但验证计算结果的正确性是迅速和简单的。同时对于给定的输入,只存在一个有效的计算结果。这种唯一性避免了多个可能的输出,确保了计算的确定性。
在以太坊中,由于VDF的不可预测性和不可操纵等特性,常被用来生成随机数。这在许多加密场景中至关重要,例如在权益证明系统中选择验证者。
八、结束语
以太坊它不仅仅是一个加密货币,而是一个庞大且不断发展的去中心化平台,支持智能合约、去中心化应用(dApps)和其他区块链项目。而以太坊的发展蓝图为整个社区提供了清晰的方向和愿景。它帮助开发者、投资者、企业家和其他利益相关者了解平台的长期目标是什么,以及以太坊计划如何实现这些目标。通过以太坊的发展计划可以了解到哪些项目将被优先考虑,哪些功能正在开发,以及哪些领域需要更多的创新,这样可以更有效地分配资源(包括人力、资本和时间)。
参考文献
https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding
https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance
https://dankradfeist.de/ethereum/2021/10/13/kate-polynomial-commitments-mandarin.html
https://twitter.com/LogarithmicRex/status/1577863907976220672
https://eips.ethereum.org/EIPS/eip-4844#blob-transaction
https://ethereum.org/en/roadmap/statelessness/
https://notes.ethereum.org/@vbuterin/verkle_tree_eip
https://blog.ethereum.org/2021/12/02/verkle-tree-structure
https://eips.ethereum.org/EIPS/eip-4444