也许以太坊的模块化区块链之路不会走得那么快,但可以确定的是,最终目的都是要推动以太坊实现「世界计算机」的初衷。参考文章:https://notes.ethereum.org/@vbuterin/proto_danksharding_faqhttps://vitalik.ca/general/2021/12/06/endgame.htmlhttps://www.blocktempo.com/vitalik-say-merge-surge-verge-purge-splurge-are-all-happening-in-parallel/
原文标题:《模块化区块链——以太坊成为「世界计算机」的工程化方案》
撰文:0x1
区块链的模块化趋势
站在 2022 年的当下看 Crypto 的发展趋势,在这个时候去做一个 L1 新公链难免有点牵强,模块化区块链的叙事不可忽视。
The Merge 之后,Ethereum 的发展路线越来越倾向于模块化区块链(Modular Blockchain)的方向。模块化区块链与单片区块链(Monolithic Blockchain)的区别主要在于:单片区块链在一个基础共识层同时实现执行、结算、共识和数据可用性四个功能,而模块化区块链则分为多个模块负责这些功能实现。事实上,并非只有以太坊在规划模块化的架构:最早提出模块化区块链思路的 Celestia 正基于 Cosmos 生态为 Rollups 搭建一个数据可用性层;Tezos 也正在拥抱以 Rollup 为中心的路线图;NEAR 也正在对数据可用性分片进行设计。本文主要讨论以太坊的模块化趋势。
以太坊的拥堵现状,已经反映了单片区块链的弊端——可扩展性差、不可定制、费用高。单片区块链的问题在于:在共识层必须执行许多不同的任务,并且仅针对其中一项功能进行优化无法有效提高区块链的性能。形象地说,单片区块链就像一个由 4 块木板构成的木桶,它的容量(性能)取决于最短的那根,只要有一个属性短板整体性能就有短板,而「区块链不可能三角」又限制了所有属性同时实现极致发展的可能,所以单纯地基于单片区块链的思路做扩容是无法解决以太坊的困境的。
模块化混合扩容:layer1(data sharding)+layer2(rollups)
实际上模块化区块链本质上是一种混合扩容的方案。在第六届区块链全球峰会上,Vitalik 的演讲主题是《以太坊第二层协议生态的崛起》,会上 Vitalik 认为以太坊生态系统中不单纯是 Layer1 扩容或者 Layer2 扩容,采取的是混合扩容的方式。而模块化区块链的本质就类似 layer1 和 layer2 混合扩容。
以太坊的模块化架构
以太坊的模块化架构设计主要分为四层:执行层、结算层、共识层、数据可用性层。目前很多情况下,行业内也会把执行层和结算层统一称执行层,共识层和数据可用性层统一称为共识层。
- 执行层(Execution Layer):负责处理链上交易、执行链上订单并验证转账和智能合约的执行,主要将以 Rollup 为主。模块化区块链发展到一定阶段后,用户通常是基于执行层与区块链进行交互,包括签名交易、部署智能合约以及转移资产等。执行层解决了区块链的可扩展性。
- 结算层(Settlement Layer):结算层用于验证 Rollup 等执行层的执行结果以及解决争议,并结算出状态承诺。
- 共识层(Consensus Layer):共识层通过全节点网络下载和执行区块的内容,就状态转换的有效性达成共识,从而提供排序和最终确定性,并以 PoS 机制验证出块。
- 数据可用性层(Data Availability Layer):保证交易数据可以被使用(保证存储且可验证与可用)。需要将验证状态转换有效性所需的数据发布并存储在这一层,一旦遭遇恶意区块提议者扣留交易数据的事件,数据可用性层的数据可用作验证。
在 The Merge 后可预见的短中期阶段,以太坊的结算层、共识层和数据可用性层是统一的。未来的 Danksharding 将会把以太坊 L1 的数据分片(Data Sharding)转变为数据可用性引擎、信标链作为共识层、原来的以太坊主网成为一个执行层,更多的执行层则是 L2 的 Rollups。此外,在目前 L2 的基础上,行业里已经开始探索定制化的 L3 也将是执行层的扩展。
如果说当下的以太坊还只是理论性「世界计算机」,那么模块化区块链则是以太坊成为「世界计算机」的工程化方案。
以太坊接下来的规划
众所周知,The Merge 是关于从 PoW 转换为 PoS,Beacon Chain 和原以太坊主链合并。The Merge 之外,以太坊其实还同时并行推进着 The Surge、The Verge、The Purge、The Splurge。这些升级的推出顺序尚不确定,因为它们是相互独立、平行进行的。
The Surge 是关于引入分片,届时将允许以太坊网络通过分片来实现大规模扩展。
The Verge 是关于 Verkle Trees,以帮助优化以太坊上的存储并帮助减少节点大小。这次升级将致力于通过 Verkle Trees 优化存储,这是一种数学证明,是 Merkle Trees 的升级。通过减少验证者需要在其电脑上存储的数据量来运行操作,节点规模将缩小,并允许更多用户成为验证者。这将进一步使网络去中心化,提高安全性。
The Purge 将减少验证者所需的硬盘空间,因为消除了历史数据和技术债务。这意味着存储简化,从而减少网络拥堵。
The Splurge 是对以太坊网络的一系列微调,包含各种较小的升级,让以太坊网络更丝滑。
Vitalik 表示,以太坊在完成以上 5 个关键阶段后可以实现 10 万 TPS,真正成为他当初设想的「世界计算机」。
以上五个并行的关键阶段的命名虽然押韵,但可能还是挺难理解以太坊在未来三四年的具体规划。如果把其中的更关键更具体的升级事件拎出来讲,也许更能看清以太坊的模块化趋势:
1、Proto-danksharding(EIP-4844)
Proto-danksharding 是一个提议,用于实现构成完整 Danksharding 规范的大部分逻辑和基础规则(例如:交易格式、验证规则等),但这个阶段尚未实现任何分片。在 Proto-danksharding 阶段,所有验证者和用户仍然必须直接验证完整数据的可用性。
Proto-danksharding 引入的主要特征是新的交易类型,称为「携带 blob 的交易」。携带 blob 的事务类似于常规事务,主要区别是它还携带一个称为 blob 的额外数据。Blob 大概 128kb,比类似大小的 Calldata 便宜很多。但是 EVM 执行无法访问 blob 数据,EVM 只能查看对 blob 的承诺。
目前以太坊的区块大小是由 Gas 容量决定,在 EIP-4844 实施后 Blob 的数量将会成为决定区块大小的另一个维度。Blob 是一种二元数据结构,大小约为 128kb,以太坊区块对每个区块中可以容纳的 Blob 做了限制,目标 Blob 数量是 8 个,最大可以为 16 个,因此每个区块将额外增加 1-2MB(128*8-128*16)的存储空间。
Blob 主要用于存储 Layer2 的数据,在此之前 Layer2 数据的存储是通过 Calldata 实现的。在引入 Blob 后,区块内可用于存储的空间将得到大幅增加。但由于 Blob 数据较大,如果每个区块额外增加 1MB 的 Blob 数据,那么以太坊区块链一个月就会多出数 TB 的数据,为了解决数据量快速增加的问题,这些 Blob 数据将会采取离线存储的方式,而且 30 天后会自动删除。
由于 Blob 的数据没有与现有以太坊交易的 Gas 使用量竞争,因此仍然可以获得很显著的扩容效果。如果要比较简单地理解 Proto-Danksharding 的这个 EIP-4844 提议,可以理解为——以太坊 layer1 在保持 1MB 的区块大小的基础上,通过采取 30 天短期、离线存储的方式以 Blob 这种形式来存储 Layer2 的数据,以此实现扩容效果。
2、Danksharding
Danksharding 是为以太坊提出的新分片设计。以前计划的分片是状态分片(State Sharding),后来决定以 Rollups 为中心的路线图,实施 layer1(data sharding)+layer2(rollups)模块化混合扩容方案后,实施的是数据分片(Data Sharding)。数据分片本质上是模块化区块链的思路,将以太坊分成多个数据分片,每个数据分片连接一个或多个 Rollup,Rollup 作为执行层,以太坊作为共识层和数据可用性层。
Danksharding 引入的核心机制主要:PBS 和 DAS。
PBS(Proposer builder separation)是指构建区块时区块提议者(Proposer)和区块构建者(builder)分离。由 Proposer 提议区块,Builder 竞拍交易的排序权并计算区块头,Proposer 根据 Builder 的计算结果打包交易并将区块头写入区块完成出块。在 PBS 之前的区块提议者(Merge 前是 Miner,Merge 后是 Validator)可以通过查看 mempool 中有哪些交易并采取一些策略来获得 MEV 的机会以最大化他们的挖矿收益。引入 PBS 机制后,这种角色分离机制结合 Builder 排序权的竞拍机制可以一定程度上解决 MEV 问题,最后的 MEV 收益相当于会被全网验证者共享。除此之外,PBS 还有助于解决分片与信标链的同步问题、以太坊网络的抗审查问题等。
DAS(数据可用性抽样,Data Availability Sampling)是解决区块链状态爆炸的有效方法。让验证节点检查区块可用性,通过使用 DAS 检查,轻客户端可以通过仅下载一些随机选择的块来验证一个块是否已发布。由于 DAS 可以对区块数据做并行化验证,所以未来数据分片(Data Sharding)的数量即使很多,也不会增加单个验证节点的负担,反而会刺激更多验证节点加入,从而保证验证节点的充分去中心化。
最终,Danksharding 能够通过 PBS 实现以太坊的中心化出块,通过 DAS 实现去中心化验证,并且具备一定程度的抗审查性,从而确保以太坊成为可扩展的共识层和数据可用性层,并且能够承接住执行层的更多 Rollups。(PS:中心化出块、去中心化验证也是 Vitalik 在 Endgame 中提出的对以太坊未来发展的构想。)
总结
我其实一直觉得以太坊创始团队是很有情怀的,有很多细节让我觉得他们会不忘初心、砥砺前行。
在以太坊历次升级中,有三个升级让我印象深刻,分别是:437 万区块高度的拜占庭硬分叉、728 万区块高度的君士坦丁堡硬分叉、906.9 万区块高度的伊斯坦布尔网络升级。
很有意思的是,拜占庭、君士坦丁堡和伊斯坦布尔是同一个城市。这个城市横跨欧亚,北濒金角湾、南临马尔马拉海、东与小亚西亚半岛隔海相望、只有西边与陆地相连。拿破仑曾对这座城市慷慨陈词:「如果世界是一个国家,他的首都一定是伊斯坦布尔」。这座古城因为以太坊的缘故,与区块链世界构建了微妙的联系,这三次升级的命名也传递了一种讯息——以太坊始终如一。
也许以太坊的模块化区块链之路不会走得那么快,但可以确定的是,无论大主题的 The Merge、The Surge、The Verge、The Purge、The Splurge 等旨在实现 10 万 TPS 的五阶段,还是具体的关键升级 Proto-danksharding、Danksharding,最终目的都是要推动以太坊实现「世界计算机」的初衷。