技术分析|以太坊扩展技术演变

声明:本文仅分享个人见解,不构成投资建议。

 

本文转载自公众号【GenesiSee】,原文发布时间:2023年05月19日

原文链接:以太坊扩展技术演变​​​​​​​

01 | 以太坊扩展的起源

2017年,以太坊创始人Vitalik提出区块链的不可能三角,即无法同时满足可扩展(Scalability)、去中心化(Decentralization)和安全(Security)三项特征,只能三者取其二。

图片来源:https://vitalik.ca/general/2021/04/07/sharding.html

可扩展性:衡量公链支持交易速度和规模的能力,更高的可扩展性允许更多的用户和更广泛的区块链平台采用。

安全性:衡量系统抵御攻击的能力,攻击者为了获取区块链系统控制权所付出的成本越高,则安全性越高,那么链就可以抵抗较大比例的参与者对其的攻击。

去中心化:衡量公链节点的分散程度,任何人都可以成为节点参与区块链系统的生产和验证,节点数量越多则去中心化程度越高,从而确保网络不受大型中心化参与者的控制。

2017年以来以太坊的生态逐渐发展,以太坊面临的一个处境是,主网每秒只能处理大约 15 笔交易,但是日均交易量却达到一百万以上。以太坊的高使用需求导致网络拥堵,交易费长期居高不下,转账效率严重影响用户体验,以太坊扩展问题因此受到极大关注。而以太坊社区的立场是,不会为了扩展性而放弃去中心化或安全性。因此,在保证去中心化和安全性的前提下,提高区块链的吞吐量和交易速度,是业内讨论的热点话题之一。

图片来源:https://etherscan.io/chart/tx

为了解决扩展问题,人们开始探索各种可能性,因此涌现出了许多解决方案。本文不涉及具体的技术实现,单从原理上梳理几种扩展技术。

02 | 扩展方案演变历史

根据是否改变Layer1主网协议,将扩展方案分为链上扩展方案和链下扩展方案:链上扩展方案包括早期路线路里的Sharding和目前以太坊的扩展方案DankSharding;链下方案包括Rollup、State Channels、Plasma、Sidechain、Validium。

为了让大家更清晰地了解扩展技术的演变历史,本文将按照各方案兴起时的顺序(而不是首次提出的顺序)罗列各个技术的原理及优劣势。

由上图可见,早期的扩展方案基本上是从状态通道以及侧链方向去探索的。状态通道和侧链技术起初是比特币的扩展方案(例如比特币Lightning Network),以太坊早期的扩展方案便继承了类似的思路。

2.1 状态通道State Channel

状态通道的工作原理是,两方用户在链上部署通道合约并投入资金来开辟一个通道,即可在链下通道中自由地进行资产交易。要关闭通道,参与者需要在链上提交通道的最后约定状态,智能合约根据通道最终状态下每个参与者的余额分配锁定资金,分别退回到参与者的主网账户上。

状态通道内的交易都被记录在链下,只有打开通道、关闭通道和解决纠纷时,才需要提交链上交易,因此能最大程度地减少以太坊执行层的计算,从而提高交易速度、降低交易成本。为了防止用户作恶,状态通道设置了“挑战窗口期”(challenge window),当有一方试图单方面关闭通道时,通道中的另一方可以在挑战期内将通道的最新状态作为欺诈证明提交到链上进行验证。

         

优缺点分析

综合看来,状态通道极大地提高了交易吞吐量、降低交易成本,但是应用场景很受限,只适用于熟人间的高频次小资金的交易。

2.2 侧链Sidechain

侧链是独立于以太坊运行的独立区块链,并通过双向桥(bridge)连接到以太坊主网。双向桥允许资产在两个链之间来回转移(桥使用部署在以太坊主网和侧链上的智能合约来控制它们之间的资金桥接,但资产实际上并没有在两条链之间移动,而是通过铸造和销毁的机制进行跨链转移价值)。侧链不依赖以太坊达成共识,有单独的区块参数和共识算法用于高效处理交易(侧链通常采用更快的出块时间和更高的Gas限制,但这样对网络去中心化和安全性具有影响)。侧链把大部分计算都转移到侧链上,只把结果返回给以太坊主网,因此能有效降低Gas费、实现高吞吐量。

侧链最大的问题是安全性问题,因为他们不继承以太坊的安全属性(以太坊有足够的算力来确保安全性,而侧链本身并不具备足够的安全系数)。由于交易数据和状态更改都不会被提交到以太坊主网,因此也面临数据可用性问题。

数据可用性:数据可用性是指用户可以相信,验证一个区块所需的数据对所有网络参与者来说确实可用。以太坊通过让每个节点下载所有区块中的数据来实现链上数据可用性。对于模块化区块链、Layer2和轻型客户端,数据可用性需要一些更复杂的验证程序。

         

优缺点

2.3 Plasma

Plasma是Joseph Poon(比特币闪电网络提出者之一)和V神在2017年提出来的以太坊扩容框架,是侧链的演变方案。2017年ICO热潮的推动下,以太坊被各类ICO项目作为代币发行平台而被大量使用,变得拥挤不堪。彼时业内外的研究者、开发者甚至包括以太坊社区都在急切地寻找各种方法来解决以太坊的拥堵问题。Plasma在这种状况下被提出,声称能够处理全球所有的金融交易,因此一问世便得到了圈内外的高度关注。

Plasma链是在以太坊外构建的独立区块链,也称为子链。每个子链可以在以太坊上部署自定义的智能合约,可用于处理不同的业务。Plasma 链之上可以再构建一层子链,从而形成树状的Plasma网络(如下图)。Plasma 的工作原理是将大的计算任务拆分成小任务,并将它们分配给各个子链进行处理,处理后的结果结果逐层汇总并提交至上层,从而实现了对大量复杂计算的快速和低成本处理。

Plasma的使用流程如下:

存款:用户首先需要在以太坊的 Plasma 合约中存入资金(ETH 或任何 ERC-20 代币),此时 Plasma Operator 会在 Plasma 链重建相同金额的资产发送到该用户在 Plasma 链上的地址,该笔资产即可进入Plasma链中进行交易。

交易:Plasma在主网之外执行交易,但是会在主网上执行结算。任何用户都可以在主网的plasma合约中质押资产成为这条Plasma链的Operator,Operator需要定期在以太坊上发布Plasma区块的Merkle根作为状态承诺,确认链外计算的最终状态。具体流程是用户在Plasma链上签署加密消息确认交易,Operator打包交易,处理区块中的交易并生成Merkle树,将Merkle根提交至以太坊主网。如果提交的Merkle根哈希值被其他用户挑战成功,则回滚Plasma链上的错误区块,并对错误区块的创建者进行惩罚。

通过Merkle根能够快速验证一笔交易是否包含在一个区块中,因此Merkle根可以用于承诺当前区块的状态。

提款:用户撤回资金时,需要向Plasma合约提供Merkle 证明和保证金,Plasma 合约会验证 Merkle Proof 的有效性。虽然以太坊主网有 Plasma 链的状态信息,但它无法验证该信息是否正确,用户可能提出恶意提款请求。为了防止作恶,Plasma设定了一个“等待期”(waiting period),任意用户退出都会进入等待期,一般为7到14天。在等待期内,任何人都可以向根节点提交欺诈证明提出挑战,一旦证明节点作恶,交易会立刻回滚且作恶者被没收罚金。若挑战期内没有人提供欺诈证明或挑战失败,即可取回存款。

Plasma与状态通道和侧链的区别:

1. 与状态通道相比,Plasma可以让任意用户之间进行交易,更换交易对象没有额外开销。两者都存在等待期,但是状态通道只有在发生争议的时候才会触发挑战窗口期,而Plasma退出交易必须经历等待期,对一些需要立即确认的交易不友好。

2. 和侧链相比,Plasma链可以认为是一种特殊的侧链。区别在于Plasma需要定期向主链汇报。同时Plasma相比侧链具有更高的安全性,因为plasma通过欺诈证明从以太坊获得了一些安全性,而侧链的安全性完全由自己负责。

         

优缺点分析

正因为Plasma仍然存在较多的问题,从2019年开始Plasma陷入了发展瓶颈,当时大家都认定Plasma大势已去,大部分团队转向去研究Optimistic Rollup等Rollup方案。

2.4 分片Sharding

2019年加密市场回暖,但是当时的扩展方案都存在各种问题,因此V神提出了关于ETH2.0升级规划。其中针对扩展提出了Sharding分片方案,将区块链分解成更小、更易于管理的“分片”,每个分片可以并行处理交易,以增加网络的容量和速度,本质是横向分割数据库增加扩展性。

图片来源:https://vitalik.ca/general/2021/04/07/sharding.html

Plasma 链和分片链都会定期向以太坊主网发布加密证明,但是分片具有更高的安全属性。分片链向主网提交“collation headers”,包含每个数据分片的详细信息。而Plasma 只提交Plasma链的状态承诺,主网无法有效地验证在plasma上进行的交易。

然而,Sharding迟迟没有落地,并且被发现存在数据同步和 MEV 的问题,而在此期间Rollup飞速发展且扩展效果显著,因此以太坊基金会从以太坊路线图中删除了Sharding,取而代之的是DankSharding方案。

2.5 Layer2

2020年,Defi市场火速增长,极速扩展的应用需求和大量涌入的交易者再次导致以太坊的拥堵。但是由于ETH2.0迟迟不能实现,于是业内把目光放在了Layer2解决方案上,Layer2开始走进大多数人的视野。

Layer2 (L2) 是一类以太坊扩展解决方案的统称。目前对Layer2的定义是有争议的,广义上的定义把状态通道、Plasma、侧链等所有具有以太坊扩展功能的方案都归入Layer2。本文中的Layer2将延用以太坊基金会的定义,即Layer2是扩展了太坊并继承以太坊安全保证的独立区块链。

图片来源:https://ethereum.org/en/layer-2/

2.5.1 Rollup

Rollups 是目前扩展以太坊的首选L2解决方案,其工作原理是通过链下处理L1上的交易来扩展以太坊,同时通过定期与以太坊通信(提交状态承诺和压缩的交易数据)以确保它具有类似的安全性和去中心化保证。

与L1相比,用户使用Rollup扩展可以大幅减少Gas费用。

图片来源:https://l2fees.info/

前文提到Plasma存在数据可用性的问题,而Rollup就是为了解决数据可用性而生的。

Rollup的工作原理和Plasma很相似,都是利用默克尔树和子链结构来构建,如下图所示。

图片来源:https://vitalik.ca/general/2021/01/05/rollup.html

以太坊链上的智能合约维护一个状态根(例如图中的0x1345f7),这个状态根就是Rollup 状态的 Merkle 根(包含rollup内部的账户余额、合约代码等)。Rollup方案将计算和状态存储在链下,将链下大量的交易进行压缩,然后将高度压缩的交易数据连同先前的状态根以及新的状态根打包到一笔交易批次里发布到主链(所有Rollup的参与者平摊费用,因此每个用户的交易费都会变便宜)。之后,合约会检查交易批次中先前的状态根是否与其当前状态根匹配;如果是,则会将自己的状态根切换到新的状态根(图中的state root从0x1345f7变为0xbc892f)。所有发布到主链的压缩数据中包含了每笔交易的基本信息(例如转账数据,不包含20字节的地址,转账签名之类的信息),已经足够重新计算链下的默克尔树进行交易验证,也就保证了数据的可用性。在这个过程中,Rollup和Plasma的区别就是Plasma发布到链上的交易不包含压缩的交易数据。(Rollup和Plasma比放在链上的数据变多了,对以太坊的扩容也会相应变弱,但它依然能大幅降低费用,提高吞吐量。)

但是,上述过程仍然没有解决资产的安全性问题,即提交的交易批次中新的状态根的有效性无法保证,任何人都可以伪造新处理状态。针对这个核心问题目前有两种Rollup解决方案,分别是基于有效性证明的ZK Rollup 和基于欺诈证明的Optimistic Rollup。

2.5.1.1 Optimistic Rollup

Optimistic Rollups 依赖于欺诈证明(fraud proof)来检测交易计算不正确的情况。Optimistic rollups采用“乐观”的方式认为链下交易都是有效的,再设立了一个“挑战期”(challenge period),在挑战期内允许任何人提出异议并提交欺诈证明。如果验证证明了某个交易批次是无效的,网络将回滚这个交易批次并没收作恶者的罚金。

具体工作流程如下:Optimistic rollups在以太坊上部署一个智能合约,该合约负责管理和记录Rollup的区块信息。在Rollup中,Aggregator将链下的交易收集起来打包成一个Rollup区块,并将该区块的哈希值连同保证金一起提交到以太坊上的智能合约中。同时,Rollup区块包含一个状态根,即该区块的状态树的根。Validator可以下载存储在链上的状态根和压缩的交易数据,重构完整的交易批次,并重新计算交易批次的新状态根。如果重构后的新状态根与链下提交的新状态根不同,就可以确定该交易批次存在欺诈。

可以发现,Optimistic Rollup的欺诈证明、“挑战期”这些思想完全继承自Plasma,不同之处在于它解决了数据可用性问题。

目前采用Optimistic Rollup的两个龙头项目分别是Optimism和Arbitrum,两者在处理挑战期内争议的方式和与以太坊的兼容性方面存在一些差异

1. Optimistic采用单轮欺诈证明,在Rollup运行过程中,如果有人对操作者的批处理操作产生质疑并发起挑战,那么就会在主链上一次性模拟调用执行整个批处理的数据,以验证是否存在欺诈。

2. 而Arbitrum采用的是多轮欺诈证明,将规模大的争议拆分成小的争议,一步步找到该项争议在批处理中的具体位置,然后再通过主链上的智能合约执行该部分来确定它是否正确。也就是说只执行最关键的一步,而不用执行整个批处理中的所有交易进行验证。多轮欺诈证明相比单轮欺诈证明,能够减少主链上的工作量,消耗gas更低,但是多轮验证需要耗费更多的时间。

3. Arbitrum可以完全兼容以太坊EVM,这意味着以太坊上的项目可以无需修改任何代码就可以部署到Arbitrum上,相比之下,迁移到Optimistic Rollup需要对代码进行一些修改。

优缺点分析

2.5.1.2 ZK Rollup

ZKRollup的证明机制采用了零知识证明技术(zero knowledge)证明区块状态变化的有效性,也称为有效性证明(Validity Proof)。

零知识证明是指证明者能够在不向验证者提供任何信息的情况下,证明某个论断是正确的(关于零知识证明的更多内容可参考之前的文章ZK|零知识证明研究综述)。

ZK Rollup提交到主网的每个交易批次中都包含零知识证明(zk proof),它可以证实新状态根是交易批次正常执行的结果,并且这个证明都可以快速在链上得到验证。

具体工作流程如下:用户创建交易,并把交易内容发送给Relayer。在接受交易之前,Relayer会验证交易的合法性。在收集到足够的交易后,Relayer会对交易排序,执行交易并更新 L2 状态,生成一个有效性证明,将状态更新、有效性证明、前状态根,后状态根一起打包成一个batch,以 calldata 的形式上传至主链 Rollup 合约。合约确认 Batch 内容的格式,检查Batch 中的前状态根是否与其合约当前状态根匹配,验证有效性证明;验证通过则把当前状态根换成 Batch 里面的后状态根。

下表是ZK-Rollup与Optimistic Rollup的区别。总体来看,ZK-Rollup和OP-Rollup相比不存在挑战期,退款时间大大缩短。ZK-Rollup只需要把状态更新和有效性证明放到链上,而不像OP-Rollup一样把所有交易数据发布到链上。因此ZK Rollup每个交易批次中包含的数据更少,增加了Layer2的吞吐量和扩展性。但是零知识证明的证明过程非常复杂,一方面需要高性能算力支持,有中心化风险;另一方面很难适应以太坊虚拟机(EVM)环境,因而无法适用于智能合约。不过目前polygon、scroll等项目都在开发EVM等效的zk-EVM,这个问题之后将得到解决。总的来说,Optimistic Rollups 可能会在通用 EVM 计算中胜出,而随着零知识证明技术和zkEVM的发展,中长期来看 ZK Rollup的优势将逐渐显露。

图片来源:https://vitalik.ca/general/2021/01/05/rollup.html

优缺点分析

2.5.2 Validium

尽管Rollup已经成为目前呼声最高的扩展方案,业内外依然没有停止对扩展方案的探索。2021年,Offchain Labs(Arbitrum团队)提出了Validium。Validium的机制与ZK Rollup非常相似,也是通过发布零知识证明来验证以太坊上的链下交易,一旦在主网上验证了取款请求的有效性证明,用户就可以通过提供Merkle 证明来取款。区别在于ZK Rollup中的数据可用性是在链上的,而Validium将交易数据放在链下,只上传状态承诺。

为了进一步加强数据的可用性,不同的Validium采取了不同的方案,例如成立数据可用性委员会(Data Availability Committee,DAC)以存储状态副本并提供数据可用性证明。当然,不管是哪种方式都有作恶的可能。

与ZK-Rollup相比,Validium能大大增加处理交易的效率(例如StarkEx能达到每秒9000笔,zkPorter能达到20,000+ ,ZK Rollup理论上只能达到2000笔交易),但是安全性更低。此外,在Rollup模式下,提交证明时的账户余额是公开的,而Validium将数据存在链下,因此这些数据对区块链是隐藏的。

有些项目支持ZK-Rollup和Validium结合的方式,“把选择交给用户”,让用户自己选择将数据放在链上还是链下,这种ZK-Rollup和Validium结合的方式又称为“Volition”。

优缺点分析

经过上述分析可以发现,Plasma、OP Rollup、ZK Rollup、Validium四者的区别主要在于采用的证明机制和交易数据是否上链。

图片来源:https://twitter.com/VitalikButerin/status/1267455602764251138

2.5.3 DankSharding

Rollup的扩展效果有目共睹,目前已经成为了以太坊上呼声最高的Layer2解决方案,而之前的Sharding方案存在数据同步和 MEV 的问题。在这种情况下,以太坊基金会从路线图中废除了原先的Sharding分片方案,增加了以Rollup为中心的扩展方案——Danksharding。DankSharding目标的目标是成为以太坊扩展的终极解决方案,实现“中心化的出块 + 去中心化的验证 + 抗审查性”,将以太坊打造成结算层与数据可用性层,为 L2 的计算性能提升留下空间。

Danksharding将分为几个阶段实现,目前的阶段是Proto-Danksharding。Proto-Danksharding提出的背景是,虽然Rollup方案对比以太坊主链已经显著降低了交易费用,但还不够低,因为将数据存在calldata中仍然占据较大的花费。于是Vitalik和DankRad等提出了EIP-4844提案。

Proto-Danksharding为将来的分片引入了一种称为Blob-carrying Transactions的交易格式。这种交易格式区别于普通交易在于其额外携带了称为blob的数据块,将交易数据存在blob中而不是calldata中,从而提供更加廉价的数据可用性。此外,Proto-Danksharding设置了一段时间窗口(约一个月),在此期间用户或者协议可以对blob数据进行备份,在此之后对blob做删除操作。

具体的DankSharding方案涉及到一系列技术,此处只作简单的介绍,感兴趣的小伙伴可以阅读IOSG Ventures发表的文章《合并在即:详解以太坊最新技术路线》

为了验证blob可用的同时降低了网络验证的成本,Danksharding使用了数据可用性采样(DAS),如果可以把数据分为N个块,每个节点随机地下载其中的K个块,就能验证所有数据是否可用,而无需下载所有数据。但是仅仅通过随机下载K个块很难发现某个块丢失了。因此引入了纠删码(Erasure Coding)技术。他的基本原理是把数据分段,加入一定的校验并使各个数据段之间产生关联,即使某些数据段丢失,仍然能通过算法将完整的数据计算出来。依靠纠删码来重建数据,那么首先需要确保纠删码被正确编码。因此进一步引入了KZG多项式承诺(KZG Polynomial Commitments),用于证明多项式在特定位置的值与指定的数值一致,而无需包含该多项式的所有数据。依次解决上述问题之后,即便引入大区块之后,也不会过多地加重节点的负担。

另外,Danksharding还使用了PBS(Builder Proposer Separation)机制,把区块构建者(Builder)和区块提议者(Proposer)进行分离,Builder们构建一个排好序的交易列表,并且把出价提交给Proposer,Proposer只需要接受出价最高的交易列表。这种机制在扩展层面能解决一些性能上的问题。在此基础上,Danksharding进一步引入了抗审查列表crList(即Censorship Resistance List)抗审查清单(Crlist) ,避免了交易被审查的可能性。

上述的数据可用性采样(DAS)、区块构建者和提议者分离(PBS)以及抗审查列表(crList)组合成了完整的Danksharding方案。可以看出,分片的概念已经被淡化了,实际上的重点已经放在对数据可用性的支持上,在Danksharding得到实施之后,以太坊将变成Rollup的统一结算层和数据可用性层。

03 | 总结

下表是几种链下扩展方案的对比。不难看出,以太坊扩展技术的演变进程中,每一种新方案的身上都有着旧方案的影子。目前为止仍然没有一种方案能完美地兼顾安全性、去中心化和效率,而是在妥协中寻找平衡点。

目前来看,所有扩展方案里,Rollup的方案相对来说可行性最高。随着链上扩展方案Danksharding对Rollup的支持,Rollup的潜力将继续释放,而不只是一个过渡方案。从市场反馈来看,Optimistic Rollups 因其通用性成为目前最被广泛使用的扩展方案,但是一周的挑战期对大部分用户来讲并不友好。随着零知识证明技术和zkEVM的发展,中长期来看 ZK Rollup的优势将逐渐显露。 

参考链接

1. https://ethereum.org/en/developers/docs/scaling/state-channels/

2. https://ethereum.org/en/developers/docs/scaling/sidechains/

3. https://ethereum.org/en/developers/docs/scaling/plasma/

4. https://plasma.io/plasma-deprecated.pdf

5. https://ethereum.org/en/developers/docs/scaling/validium/

6. https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf

7. https://notes.ethereum.org/@vbuterin/proto_danksharding_faq#What-is-Dankshardinghttps://ethereum.org/en/roadmap/danksharding/

8. https://ethereum.org/en/developers/docs/scaling/


声明:本文所涉及内容、数据来自各项目官方公开材料且均已标明来源。部分图文源于网络,如有侵权,请联系删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值