原文标题:《漫游以太:过去、现在、未来》
原文作者:Hakeen,W3.Hitchhiker;修订:Evelyn,W3.Hitchhiker
一、以太坊的升级路线图M2SVPS
TheMerge
在TheMerge阶段,POW共识机制将过度为POS,信标链将合并在一起。为了便于理解,我们将以太坊结构简化为下图:
我们在这里先定义什么是分片:简单理解就是水平分割数据库以分散负载的过程
在转为POS后:区块提议者和区块验证者分离,POS工作流程如下:
在Rollup上提交交易
验证者将交易添加到分片区块中
信标链选择验证者以提出新的块
其余的验证者组成随机的委员会并验证分片上的提议
提出区块和证明提议都需要在一个slot内完成,一般是12s。每32个slot组成一个epoch周期,每个epoch将打乱验证者排序并重新选举委员会。
合并后,以太坊将为共识层实现提议者-构建者分离。Vitalik认为,所有区块链的终局都将是拥有中心化的区块生产和去中心化的区块验证。由于分片后的以太坊区块数据非常密集,出于对数据可用性的高要求,区块生产的中心化是必要的。同时,必须有一种能够维护一个去中心化的验证者集的方案,它可以验证区块并执行数据可用性采样。
矿工和区块验证分离。矿工进行区块的构建,然后将区块提交给验证者。向验证者出价投标选择自己的区块,然后验证者投票来决定区块是否有效。
分片是一种分区方式,可以在P2P网络中分散计算任务和存储工作负载,经过这种处理方式,每个节点不用负责处理整个网络的交易负载,只需要维护与其分区相关的信息就可以了。每个分片都有自己的验证者网络或者节点网络。
分片的安全性问题:例如整个网络有10条分片链,破坏整个网络需要51%的算力,那么破坏单个分片只需要5.1%的算力。因此后续的改进就包含了一个SSF算法,这个算法能够有效防止51%的算力攻击。根据vitalik?总结,转向SSF是一个多年的路线图,即使目前做了大量工作,它也将是以太坊较晚推行的重大变化之一,并且远在以太坊的PoS证明机制、分片和Verkle树完全推出之后。
信标链,负责生成随机数,将节点分配给分片,捕捉单个分片的快照和其他各种功能,负责完成分片间的通信,协调网络的同步。
信标链的执行步骤如下:
区块生产者对区块头和出价一起进行承诺。
信标链上的区块者选择获胜的区块头和投标,无论区块打包者是否最终生成区块体,都将无条件获得中标费。
Committee投票确认获得的区块头。
区块打包者披露区块体。
TheSurge
该路线的主要目标是推动以Rollup为中心的扩容。Surge指的是添加了以太坊分片,这是一种扩容解决方案,以太坊基金会声称:该解决方案将进一步启用低gas费的二层区块链,降低rollup或捆绑交易的成本,并使用户更容易操作保护以太坊网络的节点。
该图仍然可以通过以下简图来理解:
以zkrollup运行原理为例:在zkrollup中分为排序器和聚合器,排序器负责将用户交易排序,并且将其打包成批次,发送给聚合器。聚合器执行交易,从前状态根,生成后状态根,然后生成证明,聚合器最后将前状态根、后状态根、交易数据,证明发送到L1上的合约,合约负责校验证明是否有效,交易数据存储在calldata内。Zkrollup数据可用性可以让任何人能够根据链上存储的交易数据,还原出账户的全局状态。
但是使用calldata的费用非常昂贵,因此整个EIP-4844协议提出了将交易区块的大小改为1~2MB,为未来的rollup与数据分片打下坚实基础。目前以太坊的区块大小大约是60KB~100KB,以EIP-4844为例,大概可以提升10~34x的区块大小极限。该区块格式被称为blob。
TheScourge
该阶段Scourge是路线图的补充,主要用于解决MEV的问题。那什么是MEV?
MEV全名MinerExtractableValue/MaximalExtractableValue,这一概念最先应用在工作量证明的背景下,最初被称为「矿工可提取价值」。这是因为在工作量证明中,矿工掌握了交易的包含、排除和顺序等角色能力。然而,在通过合并过渡为权益证明后,验证者将负责这些角色,而挖矿将不再适用。为了继续使用相同的首字母缩写词以便确保延续性,同时保持相同基本含义,现在使用「最大可提取价值」作为更具包容性的替代词。
套利空间包括:
通过压缩存储空间,来获得gas费用的价差;
裁判员抢跑:广泛的搜索mempool上的交易,机器在本地执行计算,看看是否会有利可图,如果有则用自己的地址发起相同交易,并且使用更高的gas费;
寻找清算目标:机器人竞相以最快的速度解析区块链数据,从而确定哪些借款人可以被清算,然后成为第一个提交清算交易并自行收取清算费的人。
夹心交易:搜索人会监视内存池内DEX的大额交易。例如,有人想要在Uniswap上使用DAI购买10,000UNI。这类大额交易会对UNI/DAI对产生重大的影响,可能会显著提高UNI相对于DAI的价格。搜索人可以计算该大额交易对UNI/DAI对的大致价格影响,并在大额交易之前立即执行最优买单,低价买入UNI,然后在大额交易之后立即执行卖单,以大额订单造成的更高价格卖出。
MEV的缺陷:
某些形式的MEV,如夹心交易,会导致用户的体验明显变差。被夹在中间的用户面临更高的滑点和更差的交易执行。在网络层,一般的抢跑者和他们经常参与的矿工费拍卖,导致网络拥堵和试图运行正常交易的其他人的高矿工费。除了区块内发生的,MEV也可能会在区块间产生有害的影响。如果一个区块中可用的MEV大大超过了标准区块的奖励,矿工可能会被激励去重新开采区块并为自己捕获MEV,进而导致区块链的重新组织和共识的不稳定。
大部分MEV是由称为「搜索者」的独立网络参与者提取的。搜索者在区块链数据上运行复杂的算法来检测盈利的MEV机会,并且有机器人自动将这些盈利交易提交到网络。以太坊上的MEV问题涉及使用机器人来利用网络交易,导致拥塞和高额费用。
TheVerge
Verge将实现「Verkle树」和「无状态客户端」。这些技术升级将允许用户成为网络验证者,而无需在他们的机器上存储大量数据。这也是围绕rollup扩容的步骤之一,前文提到过zkrollup的简易工作原理,聚合器提交了证明,layer1上的验证合约只需要验证blob内的KZG承诺和生成的证明即可。这里简单介绍一下KZG承诺,就是确保所有的交易都被包含了进来。因为rollup可以提交部分交易,生成证明,如果使用KZG,那么所有的交易都会被确保包含进来生成证明。
TheVerge就是确保验证非常简单,只需要下载N个字节数据,执行基本的计算就可以验证rollup提交的证明。
值得一提的是,ZKrollup有许多种方案,stark、snark或者bulletproof等。各个方案对于证明和验证的方式都不尽相同,因此出现了权衡。SNARKs目前比STARKs技术更易上手,技术也更完善,因此许多项目刚开始都是使用SNARKs,但是随着STARKs技术上的迭代后,最终会逐渐转向抗量子攻击的STARKs。虽然以太坊为了与rollup适配,EIP-4844主要改进之一是交易格式blob,扩大了区块容量,但目前所有的零知识证明的主要瓶颈仍然在于自身证明算法,一方面通过改进算法来解决证明问题,另一方面通过堆叠硬件来提高证明效率,也因此衍生了ZK挖矿赛道。有兴趣的可以转到这篇文章。
ThePurge
ThePurge将减少在硬盘驱动器上存储ETH所需的空间量,试图简化以太坊协议并且不需要节点存储历史。这样可以极大的提升网络的带宽。
EIP-4444:
客户端必须停止在P2P层上提供超过一年的历史标头、正文和recipient。客户端可以在本地修剪这些历史数据。保存以太坊的历史是根本,相信有各种带外方式来实现这一点。历史数据可以通过torrent磁力链接或IPFS等网络打包和共享。此外,PortalNetwork或TheGraph等系统可用于获取历史数据。客户端应允许导入和导出历史数据。客户端可以提供获取/验证数据并自动导入它们的脚本。
TheSplurge
该路线主要是一些零碎的优化修复,如账户抽象、EVM优化以及随机数方案VDF等。
这里提到的账户抽象一直都是ZK系Layer2想要首先实现的目标。那什么是账户抽象?在实现账户抽象之后,一个智能合约账户也可以主动发起交易,而无需依赖「元交易」的机制。
在以太坊内,账户分为合约账户和外部账户。目前的以太坊的事务类型只有一种,必须由外部地址发起,合约地址无法主动发起事务。因此,任何合约自身状态的改变,必须依赖于一个外部地址发起的事务,无论是一个多重签名账户,还是混币器,或是任何智能合约的配置变更,都需要由至少一个外部账户触发。
无论使用以太坊上的什么应用,用户都必须持有以太坊。其次,用户需要处理复杂的费用逻辑,gasprice,gaslimit,事务阻塞,这些概念对用户来说过于复杂。许多区块链钱包或应用试图通过产品优化提高用户体验,但效果甚微。
以账户为中心的方案的目标是为用户创建一个基于智能合约管理的账户。实现账户抽象后的好处是:
现在的合约可以持有ETH,直接提交包含所有签名的事务,用户不一定需要为交易支付gas费用,完全取决于项目。
由于实现了自定义密码学,因此未来不会强制要求使用ESCDA椭圆曲线来进行签名,未来一台手机的指纹识别、面部识别、生物识别等技术均可以作为签名方式。
从而显著改善了用户与以太坊的交互体验。
二、以太坊的模块化
整个以太坊目前已经出现了模块化的趋势,执行层就是由Layer2负责。他们负责执行L2上用户的交易,并且提交证明。Layer2一般使用的是OP技术/ZK技术,ZK技术在理论上TPS是远高于OP的,目前大量生态在OP系,但是未来,随着ZK技术的完善,会有越来越多应用迁移到ZK系。该部分是对路线图的详细描述与补充为什么和怎么样。
目前以太坊只是将执行层剥离开来,实际上,其它层级仍然混作一谈。在celestia的愿景中,执行层只进行两件事:对单笔交易而言,执行交易并发生状态更改;对同批次的交易而言,计算该批次的状态根。当前以太坊执行层的一部分工作分给了Rollup,即我们熟知的StarkNet、zkSync、Arbitrum和Optimism。
现在无论是optimism、polygon、starknet、zksync等都往模块化的道路上探索。
Optimism提出了bedrock/opstack,polygon也在研发polygonavail作为数据可用性层,supernets则用以简化链的创建与共享验证者集。
结算层:可以理解为主链上的Rollup合约验证上文提到的前状态根、后状态根、证明的有效性或欺诈证明的过程。
共识层:无论采用PoW、PoS或其他共识算法,总之共识层是为了在分布式系统中对某件事达成一致,即对状态转换的有效性达成共识。在模块化的语境下,结算层和共识层的含义有些相近,故也有一些研究者把结算层和共识层统一起来。
数据可用性层:确保将交易数据完整上传到数据可用性层,验证节点能够通过该层的数据复现所有状态变更。
这里需要辨析的是数据可用性和数据存储的区别:
数据可用性与数据存储是明显不同的,前者关注的是最新区块发布的数据是否可用,而后者则是涉及安全地存储数据并保证在需要时可以访问它。
1、结算层上的各种Rollup
从结算层看,目前认为rollup的焦点在ZK系。如果通过ZK系的rollup来改进ZK证明系统的大小、gas消耗、成本,再结合递归和并行处理的话就能够极大的拓展其TPS。那么我们就先从ZKrollup开始。
随着以太坊扩容之路的发展,零知识证明技术被Vitalik认为是有望成为扩容之战的终局的方案。
ZKP的本质是让某人证明他们知道或所拥有某些东西。例如,我可以证明我拥有开门的钥匙,而无须将钥匙拿出来。证明知道某个账户的密码,而无需输入密码并冒着被暴露的风险,这项技术对个人隐私、加密、企业甚至核裁军都有影响。通过姚氏百万富翁问题修改版本来加深理解:这个问题讨论了两个百万富翁爱丽丝和鲍勃,他们想在不透露实际财富的情况下知道他们中的哪一个更富有。
假设公寓每月的租金为1000美元,若要符合出租人选的标准,则至少要支付一个月租金的40倍。那么我们需要证明我们的年收入要有4万美元以上才行。但房主不想我们找到漏洞,因此选择不公布具体的租金,他的目的是测试我们是否符合标准,而答案仅仅是符合或者不符合,而不对具体金额负责。
现在有十个盒子,以1万美元为增量,标记为10~100k美元。每个都有一个钥匙和一个插槽。房主带着盒子走进房间毁掉9把钥匙,拿走标有40k美元盒子的钥匙。
租客年薪达到7.5万美元,银行代理人监督开具资产证明的文件,不写明具体资金,这个文件的本质是银行的资产声明可验证索赔文件。随后我们将该文件投入10k~70k的箱子中。那么房主使用40k的钥匙打开箱子,看到里面的可验证索赔文件时,则判定该租客符合标准。
这里面涉及到的点包括,声明人出具资产达标证明,验证者通过钥匙验证租客是否具有资格。再次强调,验证结果只有两个选择——具有资格和不具有资格,并不会也不能对租客具体资产数额作出要求。
我们仍然可以用下图作为理解,交易在layer2上执行,在分片提交交易。layer2一般采用rollup的形式,也就是在layer2上将多笔交易打包成一个批次来处理事务,然后再提交给layer1的rollup智能合约。这里包含新旧状态根,layer1上的合约会验证两个状态根是否匹配,如果匹配那么主链上的旧状态根就会更换为新状态根。那如何验证批次处理后得到的状态根是正确的呢,这里就衍生出了optimisticrollup和zkrollup。分别使用欺诈证明和zk技术进行交易的确认以及状态根的验证。
这里的layer2就相当于上文例子中的声明人,其打包操作就是这份声明操作,并不会对具体数额作出声明,而是确认是否达到标准。打包后提交给layer1的就是这份可索赔的声明文件。验证新旧状态根就是房主通过钥匙验证自己期望的租客经济实力是否达标。状态根验证问题就是银行提交的声明,该如何进行声明才能使问题可信。
基于optimistic也就是欺诈证明的rollup来说,主链的Rollup合约记录了该Rollup内部状态根变更的完整记录,以及每个批次处理的哈希值。如果有人发现某个批次处理对应的新状态根是错误的,他们可以在主链上发布一个证明,证明该批次处理生成的新状态根是错误的。合约校验该证明,如果校验通过则对该批次处理之后的所有批次处理交易全部回滚。
这里的验证方式相当于声明人提交了可验证资产声明文件,然后将资产文件全部公开到链上,并且数据也要公开到链上,其他挑战者根据原始数据进行计算看可验证的资产文件是否存在错误或伪造的情况,如果有问题,则提出挑战,挑战成功则向银行索赔。这里最重要的问题就是需要预留时间给挑战者收集数据并且验证该份文件的真实性。
对于使用零知识证明技术的Rollup来说,其每个批次处理中包含一个称为ZK-SNARK的密码学证明。银行通过密码学证明技术来生成资产声明文件。这样就不需要预留时间给挑战者,从而也就没有挑战者这一角色存在了。
2、现在ZK系Rollup不及预期的原因
目前polygon系的hermez已经发布,zksyncdev主网、starknet主网也已经上线。但是他们的交易速度似乎与我们理论上还相差过大,特别是starknet的用户能明显感知到,其主网速度慢的令人惊讶。究其原因还是在于零知识证明技术生成证明难度仍然很大,成本开销仍然很高,还有需要对以太坊的兼容性和zkevm性能上的权衡。Polygon团队也承认:「PolygonzkEVM的测试网版本也具有有限的吞吐能力,这意味着它远不是作为优化扩展机器的最终形式。」
3、数据可用性层
以太坊的抽象执行步骤如下所示:
在以太坊的去中心化过程中,我们也可以在TheMerge路线图上看到——去中心化验证者。其中最主要的就是实现客户端的多样性以及降低机器的入门门槛,增加验证者的人数。因此有些机器不达标的验证者想要参与网络,就可以使用轻客户端,轻节点的运行原理是通过临近的全节点索要区块头,轻节点只需要下载和验证区块头即可。如果轻节点不参与进来,那么所有的交易都需要全节点去执行验证,因此全节点需要下载和验证区块中的每笔交易,同时随着交易量的增多,全节点承压也越来越大,因此节点网络逐渐倾向于高性能、中心化。
但是这里的问题是,恶意的全节点可以给予缺失/无效的区块头,但是轻节点没办法证伪,对此问题有两种办法,刚开始是使用欺诈证明,需要一个可信的全节点来监控区块的有效性,在发现无效区块后构造一个欺诈证明,在一段时间内未收到欺诈证明则判定为有效区块头。
但是这里明显需要一个可信的全节点,即需要可信设置或者诚实假设。但是区块生产者能够隐藏部分交易,欺诈证明就明显失效,因为诚实的节点,也依赖于区块生产者的数据,若数据本身就被隐藏,那么可信节点就认为提交的数据是全部数据,那么自然也不会生成欺诈证明。
MustarfaAI-Bassam和Vitalik在合著的论文中提出了新的解决方案——纠删码。采用纠删码来解决数据可用性的问题,比如celestia,polygonavail均采用的是reed-solomon纠删码。但是如何确保传输的数据是完整的数据呢,结合KZG承诺/欺诈证明即可。
在KZG承诺/欺诈证明中,能够确保区块生产者发布完整的数据,不会隐藏交易,然后将数据通过纠删码进行编码,再通过数据可用性采样,这样就可以让轻节点正确地验证数据。
Rollup内聚合器提交的数据都是以calldata形式存储在链上的,这是因为calldata数据相对于其它存储区域更便宜。
Calldatacostingas=Transactionsize16gasperbyte
每笔交易主要的开销在calldata成本,因为在链上存储费用极其昂贵,该部分占到rollup成本的80%~95%之多。
由于这个问题,我们才提出了EIP-4844的新交易格式blob,扩大区块容量,降低提交到链上所需的gas费。
4、数据可用性层的链上与链下
那么如何解决链上数据昂贵的问题呢?有以下几种方法:
首先是压缩上传到L1的calldata数据大小,这方面已经有了许多的优化。
其次是降低在链上存放数据的成本,通过以太坊的proto-danksharding和danksharding来为rollup提供「大区块」,更大的数据可用性空间,采用纠删码和KZG承诺来解决轻节点的问题。如EIP-4844。
第三个是,把数据可用性放在链下,这部分的通用方案包括,celestia/polygonavail等。
通过数据可用性存放的位置,我们将其分为下图所示:
Validium的方案:将数据可用性放在链下,那么这些交易数据就由中心化的运营商来维护,用户就需要可信设置,但成本会很低,但同时安全性几乎没有。之后starkex和arbitrumnova都提出成立DAC来负责交易数据的存储。DAC成员都是知名且在法律管辖区内的个人或组织,信任假设是他们不会串通和作恶。
Zkporter提出guardians来质押维护数据可用性,如果发生了数据可用性故障,那么质押的资金将被罚没。
Volition则是用户自己选择链上/链下数据可用性,根据需求,在安全与成本之间选择。
这时候,celestia和polygonavail就出现了。如果validium有链下数据可用性的需求,又害怕去中心化程度低,从而引发类似跨链桥的私钥攻击,那么去中心化的通用DA方案则可以解决这个问题。Celestia和polygonavail通过成为一条单独的链,来为validium提供链下DA的解决方案。但是通过单独的链,虽然提升的安全性,但相应会提高成本。
Rollup的拓展实际上有两部分,一部分是聚合器的执行速度,另一方面则需要数据可用层的配合,目前聚合器是中心化的服务器来运行,假设交易执行的速度能达到无限大的程度,那么主要拓展困境在于其受到底层数据可用性解决方案的数据吞吐量的影响。如果rollup要最大化其交易吞吐量,则如何最大化数据可用性解决方案的数据空间吞吐量是至关重要的。
再回到开头,使用KZG承诺或者欺诈证明来确保数据的完整性,通过纠删码来拓展交易数据帮助轻节点进行数据可用性采样,进一步确保轻节点能够正确验证数据。
也许你也想问,到底KZG承诺是如何运行来确保其数据的完整性的呢?或许可以稍微解答一下:
KZG承诺:证明多项式在特定位置的值与指定的数值一致。
KZG承诺无非就是多项式承诺中的一种,能够在不给定具体消息的情况下验证消息。大概流程如下:
将数据通过纠删码化为多项式,将其拓展。使用KZG承诺确保我们的拓展是有效的,且原数据是有效的。然后利用拓展可以reconstruct数据,最后进行数据可用性采样。
提交者生成承诺,将其与消息绑定。
将绑定后的消息传送给验证者,这里的communication方案就关系到证明规模的大小。
验证者,带入有限域的多个值验证是否仍然等于a,基本原理就是验证次数越多那么正确的概率就越高。
Celestia要求验证者下载整个区块,现在的danksharding则利用数据可用性采样技术。
由于区块存在部分可用的情况,因此任何时候我们都需要在重构区块的时候保证同步。在区块确实部分可用时,节点之间通信,将区块拼凑出来。
KZG承诺和数据欺诈证明的比较:
可以看到KZG承诺能确保拓展和数据是正确的,而欺诈证明引入第三方进行观察。最明显的区别是,欺诈证明需要一个时间间隔来给观察者进行反应,然后再报告欺诈,这时候需要满足节点直接的同步,从而整个网络能够及时收到欺诈证明。KZG则明显的比欺诈证明更快,其使用数学方法来确保数据的正确,而不需要一个等待时间。
它能够证明数据以及其拓展是正确的。但是由于一维KZG承诺需要耗费更大的资源,因此以太坊选择二维KZG承诺。
比如100行100列,那就是100,00个份额。但每采样一次,都不是万分之一的保证。那么扩展四倍意味着在整个份额中至少要有1/4的份额不可用,你才可能抽到一个不可用的份额,才表示真正不可用,因为恢复不出来。只有在1/4不可用的情况下才恢复不出来,才是真正有效的发现错误,所以抽一次的概率大概是1/4。抽十多次,十五次,可以达到99%的可靠性保证。现在在15–20次的范围之内做选择。
5、EIP-4844
在proto-danksharding实现中,所有验证者和用户仍然必须直接验证完整数据的可用性。
Proto-danksharding引入的主要特征是新的交易类型,我们称之为携带blob的交易。携带blob的事务类似于常规事务,不同之处在于它还携带一个称为?blob?的额外数据。Blob非常大,并且比类似数量的调用数据便宜得多。但是,这些blob无法从EVM访问。并且?blob由共识层而不是执行层存储。这里其实就是数据分片概念逐渐成型的开始。
因为验证者和客户端仍然需要下载完整的blob内容,所以proto-danksharding中的数据带宽目标为每个插槽1MB,而不是完整的16MB。然而,由于这些数据没有与现有以太坊交易的gas使用量竞争,因此仍然有很大的可扩展性收益。
尽管实现全分片是一项复杂的任务,并且在proto-danksharding之后仍然是一项复杂的任务,但这种复杂性包含在共识层中。一旦proto-danksharding推出,执行层客户端团队、rollup开发人员和用户不需要做进一步的工作来完成向全分片的过渡。Proto-danksharding还将blob数据与calldata分离,使客户端更容易在更短的时间内存储blob数据。
值得注意的是,所有工作都是由共识层更改,不需要执行客户端团队、用户或Rollup开发人员的任何额外工作。
EIP-4488和proto-danksharding都导致每个插槽的长期最大使用量约为1MB。这相当于每年大约2.5TB,远高于以太坊今天所需的增长率。
在EIP-4488的情况下,解决此问题需要历史记录到期提案EIP-4444?,其中不再要求客户端存储超过某个时间段的历史记录。
6、数据分片
在这里,将尽可能多的以小白的视角讲清楚以太坊扩容过程中大家都在讨论的问题。所以我们回到分片,再次强调一下对于分片的片面概念:简单理解就是水平分割数据库以分散负载的过程。
在这里,我们的数据分片有一个很重要的问题就是,在PBS中,在分片中,每个节点群只处理该分片内的交易,交易在分片间会相对独立,那么AB两用户处于不同分片上,相互转账该如何处理呢?那这里就需要很好的跨片通信的能力。
过去的方式是数据可用性层分片,每个分片都有独立的提议者和委员会。在验证者集中,每个验证者轮流验证分片的数据,他们将数据全部下载下来进行验证。
缺点是:
需要严密的同步技术来保证验证者之间能够在一个slot内同步。
验证者需要收集所有的committee的投票,这里也会出现延迟。
而且验证者完全下载数据对其压力也很大。
第二种方法是放弃完全的数据验证,而是采用数据可用性采样的方法。这里又分为两种随机采样方式,1)区块随机采样,对部分数据分片采样,如果验证通过后,验证者进行签名。但是这里的问题是,可能会出现遗漏交易的情况。2)通过纠删码将数据重新解释为多项式,再利用特定条件下多项式能够恢复数据的特点,来确保数据的完整可用性。
「分片"关键就是验证者不负责下载所有数据,而这就是为什么Proto-danksharding不被认为是"分片的"的原因。Proto-danksharding要求每个验证者完整地下载所有分片blob来验证它们的可用性;Danksharding则随后将引入采样,单个验证者只需下载分片blob的片段。
三、以太坊的未来之Layer3
被视为以太坊拓展未来的ZK系Layer2如zksync、starknet都纷纷提出了Layer3的概念。简单理解就是Layer2的Layer2。
以太坊上高昂的交易成本正在推动它成为L2的结算层。相信在不久的将来,由于交易成本显着降低、对DeFi工具的支持不断增加以及L2提供的流动性增加,最终用户将在L2上进行大部分活动,而以太坊逐渐成为结算层。
L2通过降低每笔交易的gas成本和提高交易率来提高可扩展性。同时,L2s保留了去中心化、通用逻辑和可组合性的好处。但是,某些应用程序需要特定的定制,这可能更好地由一个新的独立层提供服务:L3!
L3与L2相关,就像L2与L1相关一样。只要L2能够支持验证者智能合约,L3就可以使用有效性证明来实现。当L2也使用提交给L1的有效性证明时,就像StarkNet所做的那样,这将成为一个非常优雅的递归结构,其中L2证明的压缩优势乘以L3证明的压缩优势。理论上说,如果每一层都实现了例如1000倍的成本降低,那么L3可以比L1降低1,000,000倍——同时仍然保持L1的安全性。这也是starknet引以为豪的递归证明的真实用例。
这里需要用到《数据可用性层的链上与链下》部分知识。整个Layer3包括了:
Rollup,validium。两种分别对应不同的应用需求。对价格、数据敏感的web2企业可以使用validium,将数据放在链下,这样极大的降低了链上gas费用,并且可以不公开用户数据实现隐私性,让企业完成自己对数据的掌控力,使用自定义的数据格式,以前企业的数据商业模式仍然能够跑通。
L2用于扩展,L3用于定制功能,例如隐私。
在这个愿景中,没有尝试提供「二次方级可扩展性」;相反,这个堆栈中有一层可以帮助应用程序扩展,然后根据不同用例的定制功能需求分离各层。
L2用于通用扩展,L3用于自定义扩展。
自定义扩展可能有不同的形式:使用除EVM之外的其他东西进行计算的专用应用程序,其数据压缩针对特定应用程序的数据格式进行优化的rollup等。
L2用于无信任扩展,L3用于弱信任扩展。
Validium是使用SNARK来验证计算的系统,但将数据可用性留给受信任的第三方或委员会。在我看来,Validium被严重低估了:特别是,许多「企业区块链」应用程序实际上可能最好由运行validium证明者并定期将哈希提交到链的中心化服务器来提供最佳服务。
Validium的安全等级低于rollup,但可以便宜得多。
对于dApp的开发者来说,在基础设施上可以有以下几种选择:
自己开发一个Rollup
优势是你可以继承以太坊的生态,还有它的安全性,但是对于一个dApp团队来说,Rollup的开发费用显然过高。
选择Cosmos、Polkadot或者是Avalanche
开发的费用会更低,但是你将失去以太坊的生态,以及安全性。
自己开发一个Layer1区块链
带来的开发费用和难度很高,但是却能拥有最高的控制权。
我们对比一下三种情况:
难度/费用:Alt-layer1>Rollup>Cosmos
安全性:Rollup>Cosmos>Alt-layer1
生态/用户:Rollup>Cosmos>Alt-layer1
控制权:Alt-layer1>Cosmos>Rollup
作为一个dApp的开发者,如果想继承以太坊上的安全性和流量,那就不能重新开发一条链,那只能选择rollup。但是自己开发一个layer2rollup又非常贵,那么合适的解决方案就变成了利用layer3SDK开发一个自己的应用专用的Rollup,即Layer3。
四、Layer2的未来发展
由于以太坊是基于账户模型设计的,所有的用户均处在一整个状态树内,因此无法进行并行,因此以太坊本身的桎梏就让其需要剥离执行操作,将rollup的多笔交易合成为一笔交易,作为结算层的存在。现在所有的问题就集中在layer2的吞吐量的提升上。不仅仅是用Layer3可以提高交易的吞吐量,还有在Layer2上实行并行处理,也可以极大提高整个网络的吞吐量。
并行化问题starknet也在积极探索,虽然目前证明算法仍然是桎梏,但是预计未来将不会成为阻力。潜在的瓶颈包括:
排序器tx处理:一些排序器的工作似乎天生就是串行的。
带宽:多个排序器之间的互连将受到限制。
L2状态大小
在starknet社区中,成员也提出了aptos的并行处理方式非常不错。就Starknet而言,目前也在推进排序器内部tx并行排序的能力。
五、总结
以太坊正在将执行层剥离,所有的行为都朝着其「全球」结算层愿景的方向前进。目前整个以太坊虽然进度缓慢,也就是由于其整体过于庞大,每次更新都牵扯了许多利益与权衡。但不可否认的是,以太坊正在经历重大变革,以太坊大量的链上活动、经济机制改进以及以太坊2.0可扩展性,其引领的创新IC0、Defi、NFT等很多东西值得以太坊社区兴奋与期待。相信伴随着越来越多国家部署以太坊的节点,比如阿根廷首都政府计划在2023年部署以太坊验证节点,在不久的将来,以太坊真的能够实现其宏伟愿景。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。