深入探索以太坊扩容之路:哪个方案才是未来?
作者:Luka
研究机构:Seer Labs

不管你是不是区块链技术专家,只要你留下来Crypto世界足够长。以太坊扩容,layer2,Rollup这些词对你来说并不陌生。很多人都知道这些概念中的一个或多个,但它们之间的关系是什么呢?为什么我们需要这些技术?他们想解决什么样的问题?
如果你想知道上述问题的答案,我希望这篇文章能对你有所帮助:
本文的所有内容都是逻辑梳理,不涉及密码学/计算机科学知识,相信只要熟悉以太坊本身,基本就能理解。
自从CryotoKitty造成以太坊链上拥堵的那天开始,以太坊开发者们就在不停的探索提高以太坊吞吐量的方案。
原则上可分为两类:
(1)改造以太坊区块本身,我们姑且称之为Layer1这里的主要解决方案是分片。
(2)改变我们使用以太坊的方式,把交易的执行和处理放在链下。以太坊本身只用于验证交易的有效性和安全性。这是我们经常听到的Layer2。
Layer2核心思想是在链下执行和计算大量实际交易,然后通过以太坊上少量交易验证交易的最终有效性。无论如何State Channel,Plasma还是Rollup,其实都遵循这个原则。
现在谈起Layer2,许多人的第一反应是与之相比Optimistic/ZK Rollup挂钩,但这里我们简单介绍一下状态通道和Plasma,这有助于我们理解为什么Rollup最终的胜利成为我们目前谈论最多的Layer2解决方案:
一.状态通道以下是状态通道最原始的结构:
状态通道是一种长期存在的区块链扩展方案,其最著名的应用是比特币闪电网络。
一个例子比描述他的原理更能说清楚什么是状态通道:
每次去理发店,你都喜欢楼下的理发店Tony老师会让你在你耳边办卡。
有一天你终于决定办卡了。反正我以后会来的。于是你把一千块钱转到理发店办了一张卡。
以后每次去理发店,都不需要转账给理发店。相反,你卡里的余额将被扣除。同时,每次理发,你都会和理发店完成实际交易。
一个月后,你要搬家了,但你卡里的钱还没用完。所以你向理发店申请退卡,理发店Tony老师给了你200元。
这个月,你在理发店花了十几次钱,但实际上你和理发店只转了两次钱。
把这个过程放在区块链上,你买卡的过程实际上是把钱存入智能合同,同时打开你和理发店之间的状态通道。你退卡的过程关闭了你和理发店之间的状态通道。你和理发店之间的相互转账相当于以太坊主链上的两笔交易。
想象一下,如果你没有办卡,你需要在每次结束时把账户转到理发店。通过这个例子,我们发现通过状态渠道,只有第一步和最后一步需要我们在区块链上进行交易。在这些步骤之间,你 和 理发店 可以向对方发送无限数量的签名信息(完成一次消费)并指示付款。在这种情况下,以太坊区块链仅用作结算层来处理一次性付款的最终交易,大大减轻了底层区块链的负担。
应用场景(1)状态通道可以在一些简单的场景中发挥很大的作用,如流动支付。它通过在链下签署信息来记录交易数据,并将大量逻辑交易简化为主链上的两个交易。(2)状态通道由于成本低,非常适合一些微支付场景,如使用ETH或者BTC买早餐咖啡等。
局限性但与此同时,状态渠道要求资金的发送人和接受人进入这个渠道。为了维护状态渠道,支持比流动支付更复杂的操作,需要锁定大量资金。因此,开发人员很快意识到状态渠道不能作为可选的扩展方案之一。
二:Plasma1:原理现在我们都知道状态通道的局限性,为了解决这个问题 - Plasma出现在历史时刻。它解决了向任何目标人发送资产的问题,同时也能保证TPS事实上,在开发人员的研究中Layer2解决方案长期开始,Plasma曾经被认为是 一。
要理解Plasma,首先要明白,它不是一种实用的技术,更像是一种设计理念或技术架构。
Plasma它通常是一条链,可以有不同于主链的共识机制,也可以有自己的矿工。但最重要的是Plasma链条上会有一个叫的名字Operator角色定期根据子链上的状态转换生成默克尔树,并将默克尔树的根哈希值提交给主链进行验证和记录。我们也将使用默克尔树及其根哈希值作为状态转换的验证Rollup中讲到。
这样,无论子链在两次提交过程中发生了多少笔交易,子链只需将交易执行引起的状态信息提交给主链。
以下是使用Plasma机制简单示意图:
用户想要进入Plasma链条需要在以太坊主链上映射资产,当需要时Plasma当链上的资产转移或主链上的资产转移时,需要经历一段挑战期供他人使用「 欺诈证明 」确认资产转移有效性的机制。
「 欺诈证明 」这意味着任何人都可以通过默克尔树(通常是7天或更长时间)内通过默克尔树验证提交用户资产退出是非法的。
但有两个问题:(1)要验证提款的正确性,需要节点保存Layer2因为Plasma只提交状态转移的结果,必须提交欺诈证明Layer2上述信息将大大提高 验证者 角色的成本。
(2)所谓 「 数据不可用」,他的意思是Plasma它不会将链上的交易数据发送到主链进行存储。主链节点无法获取这些交易数据,也无法通过主链本身的安全性进行验证。当然,一些解决方案会将这些数据提交给集中存储或存储IPFS但这对主链没有意义,因为用户使用它Layer2基础是信任主链本身的安全。
三:Rollup我们Plasma一个重要的问题是他的 数据不可用,主链只会收到Operator提交的状态转移结果只能期望有人在链下存储交易和状态信息,并通过欺诈认证机制确保子链提交的真实性。在此过程中,它只扮演确认者的角色,其安全水平较差。
1.具体理解数据不可用以太坊公开了链上发生的所有数据,大家都可以查询Plasma这些交易数据不会提交到主链,只会提交执行结果,所以效率提高很高,但成本是Plasma无法建立与以太坊主链同级别的信任。
Rollup其实可以算是原主链处理方法和Plasma这种方式的妥协将数据提交给主链,但他将通过聪明的编码将数据压缩到最大程度Rollup只要最终提交能够被任何人验证,适当地删除和减少部分数据本身的特征。
交易数据上链后,任何人都可以根据这些数据进行验证Rollup提交的结果是否正确。Rollup比Plasma高。
总结一下,Rollup其核心优势是所谓的数据可用性
那么究竟Rollup它是如何实现的?
2.原理(1) State Root:首先Rollup主链上有一份(或一系列相互关联)合同:
该合同用于维护Rollup层中的状态记录实际上是默克尔树根节点存储的哈希值,称为哈希值state root。
默克尔树的叶节点是Rollup账户状态信息。如果您不知道默克尔树是什么,以下是一个简单的例子:
可见这是一棵二叉树,记录了二叉树的叶节点rollup层账户的状态信息。
对于每两个状态信息(例如State 1/State 2),我们可以根据哈希公式计算出唯一的哈希值(eg: Hash(1,2) )作为这两个叶节点的父亲节点,一层一层地向上类推,最后在根节点中存储一个哈希值:
你不需要知道如何计算哈希值,你只需要记住几件事。
1 任何叶结点的变化都会导致根节点值的变化(任何状态的变化都会导致Root hash发生变化)
2 如果两棵树的根哈希值相同,则表明叶结点存储的信息完全相同(因此,底部状态信息的一致性只能通过比较两个根节点来确认)
3 根据节点的哈希值和指向某一状态信息的路径,我们可以确认这棵哈希树中存在某一状态信息。
(2)Batch:通过 state root 我们可以得到一个账户状态key-value map:其中key帐户地址,value包括余额/Nonce/合同代码/存储(合同账户)等状态信息
当rollup上发生交易的时候,很显然的,这些账户的状态会发生改变,由此产生新的state root。
尽管反馈非常准确和及时Rollup最新状态变化,但如果每笔交易都在主链中更新state root,成本将比这些交易更高Layer1执行更高。
因此,为了解决这个问题,rollup中产生的交易将分批打包汇总,并根据所有交易完成后的状态产生新的交易state root。无论谁将交易打包并提交给主链上的智能合同,他都需要计算这个新合同state root,和上一个state root并提交交易数据。
这部分的包装被称为一batch,提交人将batch提交给Rollup contract之后,主链会验证新的state root是否正确,如果是否正确state root最新提交的更新state root,最后完成一次rollup确认内部状态转移。
(3)Rollup :以下是简化版Optimstic Rollup过程,可以看到和Plasma事实上,最大的区别交易数据的提交。
所以,Rollup实质是将大量实际交易汇总成主链上的交易Rollup链实施和计算,但数据将提交给主链,主链扮演最高法院法官的角色,最终确认这些交易。因此,我们利用主链的共识和安全性,提高实际交易效率,降低交易成本。
看完以上描述,你可能会有一些问题。别担心,我们会一步一步地推断和解释。
(1)如果提交了大量的交易数据,扩展容量还是很困难的。上述数据压缩是否解决了这个问题?怎么做?
这两种技术方案的核心是压缩和包装交易。这是因为以太坊的块 gas limit 有上限。压缩交易越小,一次可以提交给主链的交易就越多。那么如何做到这一点呢?
以下是Vitalik文章中描述的压缩模式作为例子帮助我们理解
以太坊主链上的简单交易(如发送 ETH)通常消耗大约110 字节。然而,在 Rollup 上发送 ETH 字节可缩减至12 左右。
一方面,采用了更简单、更先进的编码来达到这种压缩效果,而目前的 Ethereum 的 RLP 1 字节被浪费在每个值的长度上。另一方面,还有一些巧妙的压缩技巧:
Nonce:在 rollup 可完全省略 nonce
Gasprice:我们可以允许用户在固定范围内使用 gasprices 付款,如 2 16 次幂等
Gas:也可以 gas 多次设置为 2 。另外,我们也可以在 batch 级设置 gas 限制。
To:地址可以通过默克尔树上的索引来识别
Value: 可以用科学的计数法存储value。在大多数情况下,转账只需要 1 ~ 3 有效位。
Signature: 我们可以用BLS 聚合签名将多个签名整合成一个
这是 rollup 扩容的关键,如果不压缩交易数据,rollup 可能只能在主链的基础上提高10倍左右的效率,但有了这些压缩技巧,我们可以达到50倍 100倍甚至更高的压缩效率。
同时,为了省钱gas,这些被压缩的交易数据将被放入calldata存储在参数中。著名的EIP-4488,提出calldata每个字节数据gas为了进一步优化主链交易所能承载的消耗减少roll层交易数据量。对于具体的压缩效果,我们将对以下两种不同ZK-Rollup比较时显示简单数据。
(2)如何验证提交的可验证信息正确?
由于最终状态转换确认(也代表交易确认)是由的state root但目前看来,更新决定Rollup提交人可以随意提交他想要的交易数据和state root,那么如何验证他提交的信息是正确的呢?
根据不同的解决方案,一般有两种解决方案,rollup也分为两类:
4:Optimistic Rollup就像它的名字一样,这个解决方案乐观地相信提交人提交batch这是正确的,除非有人通过欺诈证明证明提交人实际上是个坏人,否则他提交了错误batch。
(1)以下是构建欺诈证明的简单例子(再次感谢)Vitalik):
提交欺诈证明证明提交batch这是错误的。信息包含在下图的绿色部分:
1.提交人提交batch
2.上一个state root代表默克尔树的一部分(实际上代表了真实的账户状态信息)可以根据这部分构建完整的默克尔树
我们模拟了基于第二部分构建的默克尔树batch从而获得新的账户状态,获得新的默克尔树,获得新的交易state root。上一步state root和batch中的state root比较验证batch是否正确(2)验证过程
我们从逻辑上梳理了它Optimstic确保state root真实性的过程,实际上,为了确保能够威慑提交者不作恶,提交者往往需要质押资金,当他的提交被验证为错误时,一部分质押资金将会被扣除作为惩罚。同时,提交了相应欺诈证明的验证者在某些解决方案中会得到被扣除的资金,以此来激励监测和提交欺诈证明的行为。
如果我们将OR和Plasma通过比较,我们会发现一些相似之处,比如他们都使用欺诈证明机制,需要一个验证者的角色来监控OR提交主链。但因为OR因此,交易数据同时提交给主链OR上述验证人不需要自己保存记录OR上述交易作为对比,然后将上述简单架构图放在这里供读者对比:
5:ZK-Rollup(1)Zk-rollup的核心
另一种解决方案是ZK Rollup,与OR(Optimistic Rollup)不同,ZK Rollup做出这样的基本假设:
不相信提交人能主动提交正确的batch,或类似法律中的有罪推定。提交人正在提交batch时除了交易数据以及post/previous state root除此之外,还要带一个ZK-SNARK证明。
ZK-SNARK本质上是有效性证明,可以直接用于验证提交batch是正确的。提交了此证书Rollup合同结束后,任何人都可以用它来验证Rollup层中特定批次的交易,而,这意味着rollup提交后不再需要等待7-14天来验证。
(2)有效证明与欺诈证明的区别
那么如何通俗理解呢?ZK-Rollup和Plasma/Optimsitic Rollup使用的欺诈证明有什么区别?
首先,这三需要做这三个方案Layer2我们将上述交易的排名、执行和包装称为执行者。
Plasma执行人只会提交执行结果,坚持他人是否相信的原则。如果你不相信我,你需要挑战,挑战需要你保存基本的交易数据。
OR也是如此,但执行人在提交交易数据时也会放置交易数据相信,你可以根据交易数据进行验证。
但ZK不一样,ZK说我不想等你挑战我好几天。这是浪费时间。我赶紧确认我的交易ZK提交时直接生成证明,并在提交时完成验证。
与此同时,Plasma/OR所有这些都需要通过质押来确保执行者作恶是有损失的ZK不,因为不需要别人相信,每次提交都会自证清白。
除此之外,另一个有意义的地方是,ZK-SNARK我们可以在不提交所有交易数据的情况下证明这批交易的有效性Rollup我们将在下面解释这一点。
(3)ZK-Rollup的实现逻辑
首先ZK-Rollup本质上还是一种Rollup因此,解决方案仍做以下两件事:
生成新的包装和压缩一批交易数据state root唯一不同的是验证方法,ZK-Rollup直接生成一个,而不是等待验证人发起欺诈证明流程ZK-SNARK 证明并添加Batch提交给主链rollup合约。
与提交的内容相比,如图所示OR来说 增加了一个ZK-Proof,与此同时,验证人的角色隐藏了。
提交到rollup合同结束后,任何人都可以进行验证,验证成功后的主链rollup合约会将State root更新提交的最新数据。
(4)如何生成一个ZK-SNARK 有效性证明?
A 什么是ZK-SNARK?ZK-SNARK的全称是“Zero-Knowledge Succinct Non-Interactive Argument of Knowledge.”
简洁非互动零知识证明。我会尽力解释每一部分的含义:
Succint(简明):与实际证明的数据量相比,该方法生成的证明要小得多。
例如,我们需要证明一系列交易确实存在并发生,生成的证明数据量必须小于这些交易本身。
Non-interactive (无交互): 证书构建完成后,证书人只需向验证人发送简单信息,通常允许任何人无需许可验证。
这对于ZK-Rollup或者在区块链上ZK因为有一些,应用非常重要ZK证明需要证明人与验证人之间的多次交互(猜测颜色问题是一个典型的例子),这意味着在链上发起多笔交易,这在成本上是不可容忍的。
Arguments:能抵抗计算能力有限的证明者的攻击
这部分意味着在现有计算能力条件下,生成证明使用的加密算法的复杂性被暴力破解。
of Knowledge: 不可能在不知道要证明什么的情况下建立证明
这对于ZK-Rollup也很重要,因为我们不能允许任何人根据非交易数据创建一个ZK Proof 提交给主链合同。
最后,也是最重要的Zero-Knowledge”:
零知识意味着证人向证人证明一个判断(Statement)不透露任何与所证实的实体本身有用或相关的信息。
B 零知识证明最简单的例子就是这样Alice想向Bob证明知道保险箱的密码是打开保险箱的唯一方法,但她不想告诉Bob保险箱的密码怎么办?
正好Bob知道保险箱里有一对Bob前女友写给他的情书,上面有Bob和前女友一起指纹。
于是Alice背着Bob打开保险箱,拿出这封情书Bob。
由此证明了Alice同时知道保险箱的密码Alice并没有告诉Bob什么是密码,成功!
C 如何为ZK-Rollup生成一个ZK-SNARK证明?简而言之,生成一个ZK-SNARK证明分为以下步骤:
逻辑上确定问题的验证规则(如检查)balance,nonce是否符合要求等。)将逻辑验证规则转换为门电路Circle问题将门电路Circle问题转化为R1CS(rank-1 constraint system,以一阶约束系统的形式R1CS转化为QAP (Quadratic Arithmetic Program)经过上述转换,我们可以根据逻辑验证规则得到一组可以通过固定验证方法进行验证ZK-SNARK证明。本文可以看到具体的转换过程:
https://mp.weixin.qq.com/s/M1ZAXPSPqO8KpE3VyExwTw
如果你认为这部分比以前的每一部分都更复杂,你是对的。还有现在的ZK-Rollup解决方案提供商,这就是为什么现在ZK-Rollup比较研发进度和实际应用Optimstic Rollup慢的原因之一。如果你不是数学/密码学专家,或者不是Matter Labs开发者,你只需要知道以下几点:
生成一个ZK-SNARK证明远高于验证默克尔树的计算能力和时间成本。它不是任何语言。编译环境、虚拟机和指令集可以无缝支持完成上述过程,并需要额外的适应。第一点,这是各大ZK解决方案提供商目前正在朝着努力的方向发展。如果生成可用的时间成本是第一个ZK-Proof间接用户提款需要一个小时。计算成本包括两部分,一部分是生成的ZK-Proof数据量的另一部分是验证这一点Proof计算能力。这两部分越大,需要在以太坊上消耗Gas影响越多ZK-Rollup优化性能。
对于第二点,这是目前的限制ZK-Rollup发展的一大原因。在EVM在设计之初,开发者根本没想到以后会用到ZK因此,技术EVM操作几乎不可能生成可用的零知识证明,从而催生ZK-EVM的需求。
D 为什么兼容?EVM对于ZK这么难?
打开DeFillama,你会发现TVL排名前几的Layer2解决方案清一色的都是OR,正因为如此OR所有的解决方案都有自己的网络,这些网络都做到了EVM兼容性,开发者可以无缝地将以太坊上的智能合约移植到他们的网络上,用户也可以在他们的网络上swap,抵押,提供流动性等操作。
而ZK-Rollup目前,很难做到这一点。许多现有的解决方案只能支持简单的支付和支付swap场景。
为什么会这样?首先,我们一点, Layer 1 上,以太坊 存储了已部署智能合同的字节码storage(存储项)内然后交易将在点对点网络中传播。对于每笔交易,每个整个节点都需要加载相应的字节码并在 EVM 执行以获得相同的状态(交易将作为输入数据)。
而在 Layer 2 上,虽然智能合同的字节码也存储在存储项中,但用户的操作模式也是如此。但其交易将在链下发送到集中 zkEVM 节点,同时,zkEVM 不仅需要执行字节码,还需要生成一个Proof表明交易完成后状态已正确更新。Layer在这个时候, 1 合同可以验证并更新状态layer2不需要重新执行交易。
也就是说在zk-Rollup同时,上行交易是完全不同的逻辑和路径zkEVM在执行交易的同时适应生成zk现有电路证明EVM生成ZK-SNARK证明有以下问题:
对ZK-SNARK与传统虚拟机相比,椭圆曲线运行所需的部分不支持,EVM电路设计中有许多独特的操作码,这些操作码非常困难EVM 基于 256 位整数运行(就像大部分基于 一样32~64 位整数运行的普通虚拟机),零知识证明 自然 基于素域运行。这些只是在EVM中生成ZK Proof部分问题,而OR虽然也需要构建虚拟机来执行EVM操作,但由于它只需要在执行交易的基础上完成交易包装等功能,因此构建起来要简单得多ZK-Rollup,除了在兼容EVM的同时生成ZK-Proof除了难度,在Layer1验证这个证书并不容易。
假如你想了解更多ZK-EVM更多关于难度的信息,请阅读本文:https://hackmd.io/@yezhang/S1_KMMbGt
看完以上内容,不可否认的是zk-Rollup技术难度很大,为什么不直接用更简单的呢?Optimistic Rollup技术呢?
现在让我们谈谈这两种Rollup简单对比技术。
6:Optimstic VS ZK(1)效率优化(TPS/交易费用)
以下是市场上几种不同方案在特定以太坊环境下的成本和成本TPS对比:
来源:https://w3hitchhiker.mirror.xyz/7dwD76ZZIlR7ep731K6y9vTTuXGHOojxWSnkXKzqPzI
感谢@W3.Hitchhiker 团队贡献!
我们可以在图中看到ZK方案要比OR为什么方案效率更高?
对于一个Rollup最重要的是在以太坊交易中能携带多少Layer2与两个参数有关的上交易数据:
Rollup压缩交易Gas消耗以太坊区块max gas limit其中Rollup第一点可以解决,虽然ZK-Rollup证明的存储和验证需要消耗一定的存储空间和gas(可信数据在500K 左右)。但由于交易压缩做得更好,交易数据的存储消耗是Gas大部分消费,所以ZK-Rollup要比OR更好的效率优化性能。
另外,你可能会注意到表中ZKPort的TPS最好优化交易成本,主要是因为它的使用Validium本质上是替换欺诈证明ZK Proof的 Plasma 方案,它不会提交交易数据,其效率完全是由Plasma链条的处理效率决定了,但安全性也面临着数据不可用的问题。
上述计算假设gas price为30 Gwei,众所周知,当以太坊活动大幅上升时,gas price会达到什么水平?Rollup尤其是ZK方案的成本优化效果会更加明显。
(2)时间成本
我们之前说过,因为欺诈证明机制,在Optimtisc Rollup上提款需要7-14为他人伪造潜在的作恶行为提交日期。
当然,我们可以独立Rollup机制本身的行为类似于减少提款期Boba Network等Optimstic Rollup流动性池机制提出了解决方案。
假设这样的场景:
Alice是OR用户,在L2上拥有5ETH的资产。
在L1另一个流动性池B,转为ALice这样的OR用户提供流动性。
现在Alice想从OR收回所有资产,现在他和B交易:
Alice可以从Bob直接带到这里5ETH,同时支付一定的手续费
7天后Alice此时,资产被解锁Alice拿走的5ETH回到池子里。
这对流动性池有一定的风险,所以他可以通过监控进行监控OR对冲风险,同时收取的手续费也是降低风险的储备。
但这种方法不适用NFT,因为NFT不可分割,流动性池不能简单地复制一个NFT给用户。
而ZK-Rollup没有这样的问题,提交人必须自证清白,提供验证ZK-SNARK证明,目前ZK-SNARK生成时间可达几分钟。用户只需要等待下一个batch提交并验证。
时间成本是OR的硬伤,也是ZK-Rollup显著优势之一。
(3)适应性
Optimsitic和ZK 都面临着复杂的适应需求EVM合同调用操作问题,但显然Optimstic更容易实现。
包括Arbiturm,Optimsim在内的OR所有的解决方案都有EVM兼容的虚拟机允许它处理以太坊主链上发生的所有事务OG级别的DeFi协议如Uniswap/Synthetix/Curve等也已在OR 网上部署。
而构造兼容EVM的ZK-SNARK到目前为止,目前为止还没有公开使用ZK-Rollup解决方案。但是我们最近有一些好消息,zkSync 2.02月底,公共测试网正式上线,这也是以太坊测试网首个兼容 EVM 的 ZK Rollup。或许ZK Rollup正式大规模实际使用比我们想象的要快。
(4)安全性
这个问题的答案很明显,OR 的安全性来自经济学。为了运行良好,OR必须设计一个合理的激励机制,驱使许多主链上的验证人随时监控提交人,并准备提交欺诈证书。对于提交人,它还需要通过质押和其他方式来确保节点的邪恶付出相应的代价。
而ZK安全来自数学或密码学,就像区块链中建立信任的基础一样:代码不会作恶。数学和密码学提供的保证远比乐观地相信人性不会作恶要稳定。
当然,现在Rollup虽然机制本身存在一些安全问题rollup将数据提交到主链以解决数据可用性问题。但我们还没有讨论谁负责交易处理、排序、压缩、包装和提交。目前, 等一些主流解决方案Arbitrum、Optimism 和 StarkNet,使用一个叫sequencer角色是他们自己操作的单个节点。这种方法的结果是高度集中。
我们知道分散化是所有安全的前提sequencer模型的优点是效率高,在rollup快速迭代可以在探索阶段进行,这些解决方案也声明将在未来逐步进行sequencer的去中心化过程。例如使用PoS或dPoS方式进行sequencer节点选举等,如Metis探索了这种新的解决方案。
(5)总结
让我们根据表格对上述讨论进行具体化:

总体而言,OR现阶段是比较成熟的解决方案,其实也是如此Optimstic和Arbiturm以太坊开发人员已经使用了他们的产品。然而,由于使用欺诈认证机制,其提款时间和安全性目前值得讨论,其成本优化也相比之下ZK也略逊一筹。
而ZK Rollup随着大量优秀开发人员投入相关研究,其弱点基本上是技术问题Vitalik大多数人都同意ZK Rollup未来将是更好的扩容方案。
7:Rollup完美吗?
以上三类Layer2我相信你对这个计划有一定的了解。事实上,文章的顺序也是开发者写的Layer2扩展计划研究的顺序通常是在发现某个解决方案中存在的问题后,提出另一个更好的解决方案来解决相关问题。不仅在加密研究领域,而且这个过程还可以推广到所有的工程问题上:
在找到最可行的解决方案之前,提出想法、测试、迭代、优化。
现在看上去Rollup这是我们想要找到的答案。他解决了普遍性、数据可用性和安全性和效率。那么,它是完美的吗?
答案是否定的,任何方案都不能完美,Rollup同样存在即使看起来更好,也有很多问题ZK-rollup,他们也无法避免。
天花板上有效率优化:
当我们说到rollup和plasma为了保证数据的可用性,我们谈到了主要的差异。rollup需要将交易数据提交给主链rollup方案战胜plasma主要原因。
但另一方面,交易链意味着rollup以太坊主链容量仍将受到限制:
简单算一笔账:
目前以太坊块 max gas limit:12.5M gas
链上存储每个字节的数据成本:16 gas
每个块的最大字节数:~781,000 bytes (12500000/16)
Rollup进行 一次ETH 转账所需数据量:12 bytes(可见上节gas成本)
每个块可以承载的交易:~65,000(781,000 bytes/ 12 bytes)
以太坊平均出块时间:13 秒
TPS:~5000(65,000 tx/13 s)
我们在这里做了很多假设,比如我们假设所有的交易都很简单ETH转账。而实际的交易会包含很多的复杂合约调用,消耗的gas更高ZK-Rollup 我们还需要计算验证ZK-Proof成本(一半在500K gas左右) 。
即使如此Rollup所能达到的TPS也只有5000左右,我们也看到了它的使用Plasma比机制带来的直接效率优化Rollup高很多。
以太坊基金会也很清楚这个问题。目前,它们的主要方案是分片 rollup,这将使得rollup带来的TPS提升到更高的数量级。
(2)流动性分裂:
在当前多链格局的影响下,自身的流动性分裂越来越严重。
而且由于目前各种技术方案,多种解决方案的存在,未来rollup网络数量只会增加,导致流动性分裂更加严重。
目前以太坊及其layer2网络TVL一览
好消息是跨链通信可以解决这个问题,代表性事件是Synthetix以太坊主链和已经开始了Optimism合并债务池。如果这个过程顺利丝滑地完成,相信会在一定程度上促进主链和子链的流动性合并趋势。
毕竟,合成资产项目的债务池模型比目前更常见的流动性池模型要复杂得多Uniswap等主流DeFi项目延续了这一过程。
(3)通信问题和技术障碍的可组合性降低:
在最后一个问题中,我们谈到了流动性分裂的通信问题,这也适用于主链dapp和子链dapp在以太坊建立的每一项新协议都像乐高积木一样,其他协议可以很容易地建立起来DeFi 快速发展的原因之一。
若无法解决通信问题,则子链上的dapp需要重建自己的生态,造成更大的资源浪费。不仅子链和主链之间,子链和子链之间也需要建立通信机制。
Again,一些优秀的开发者也在解决这个问题,希望他们能简化这些操作和流程Layer1如果再加上,操作本身就够繁琐了layer2这将使复杂性Web3世界的门槛更高。
(4)集中风险
我们在上面提到了目前的种类Rollup负责执行、排序、压缩和包装交易的解决方案sequencer目前都是比较集中的角色。Rollup要进一步提高安全性,必须开始解决当然的集中化问题。
全文已经写了一万多字,远远超出了我的预期。以太坊的扩张本身就是一个非常宏大和复杂的主题。这篇文章只涉及到它Layer2解决方案的一部分。Layer1的扩容解决方案(分片),以及其他Layer2方案如Side Chain,Validium 等都没有提及。事实上以太坊的扩容并不是某一个单一方案能够一劳永逸解决的。很多解决方案提供商也都在多条路径上进行着探索,像Polygon这些公司投资了大量不同类型的公司Layer2方案。
同时,由于篇幅有限,文章中的许多东西还有待挖掘,比如Layer2和Layer1之间提交所需的通信支持是什么?欺诈证明/有效性证明在Layer1每个家庭都是如何具体实现的ZK/OR实现方案之间的具体区别等。理解这些事情需要深入理解Layer2尤其是Rollup扩大容量的研究人员非常重要。为了便于理解和梳理文章中的一些概念,我们进行了一般的总结,例如OR/ZK文章中使用的解决方案在交易数据压缩方面有很大差异vitalik例子更倾向ZK解决方案。在写作过程中,我们也参考了一些优秀的Layer2内容,在文中和文末我们都做了标记,我们也希望有更多更优秀的内容能够出现,帮助大家进一步建立相关的认知。
最后,我们只介绍一下Rollup两种方案,Optimstic Rollup目前已占据市场机遇,推出可用产品逐渐吸引主流Dapp融入生态,不可否认相关开发者的巨大贡献。但从长远来看ZK Rollup 片段是我们应该期待的未来。
参考文献:
1.An Incomplete Guide to Rollups (Vitalik)
https://vitalik.ca/general/2021/01/05/rollup.html
2.W3hitchhiker 团队对四种Layer2解决方案的成本比较
https://w3hitchhiker.mirror.xyz/7dwD76ZZIlR7ep731K6y9vTTuXGHOojxWSnkXKzqPzI
3. Scorll Tech 对于zkEVM实现的解读
https://hackmd.io/@yezhang/S1_KMMbGt
- 免责声明
- 世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
- 风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
- 世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。

路安



