Rollup在以太坊社区非常流行,在可预见的将来,它将成为以太坊的一个关键可扩展性解决方案。但是这项技术是什么,你能从中得到什么,你将如何使用它?本文将尝试回答一些关键问题。
背景:什么是第1层和第2层扩展?
有两种方法可以扩展区块链生态系统。首先,你可以让区块链本身更具交易性。这种技术的主要挑战是,具有“较大区块”的区块链更难验证,并且可能变得更中心化。为了避免此类风险,开发人员可以提高客户端软件的效率,或者更可持续地使用碎片化和其他技术,将构建和验证链工作拆分为多个节点。众所周知,“ETH2.0”目前正在尝试构建到以太坊的升级版本。
第二,你可以改变你使用区块链的方式。用户没有将所有活动直接放在区块链上,而是在“第2层”协议中执行区块链之外的大部分活动。链上有一个智能合约,它只有两个任务:处理存款和取款,以及验证链下发生的一切是否符合规则。实现这些证明的方法有很多,但它们都有一个共同的特点,即验证链上的证明比验证链下的原始计算便宜得多。
状态通道vs等离子vs汇总
Layer2可以通过三种方式扩展:状态通道、等离子体和汇总。它们有三种不同的方式,各有优缺点。在这一点上,我们非常有信心,所有的第2层扩展可以大致分为这三类。(尽管在命名方面存在一些争议,例如“validium”)。
国家频道是如何运作的?
您可以单击此处:https://www.jeffcoleman.ca/state-channels以及statechannels.org网站
假设Alice为Bob提供了一个Internet连接,Bob每兆字节支付她0.001美元。Alice和Bob使用下面的第2层方案,而不是每次付款都进行交易。
首先,Bob将一美元(或一些ETH或稳定的等值货币)放入智能合约。为了向爱丽丝支付第一笔钱,鲍勃签了一张“罚单”(一条链外信息),上面只写着“0.001美元”,然后寄给爱丽丝。为了第二次付款,鲍勃将在另一张写着“0.002美元”的账单上签字并寄给爱丽丝。你需要多少就付多少。在Alice和Bob完成交易后,Alice可以将价值**的账单发布到链中,该账单由她自己的另一个签名包装。
智能合约验证Alice和Bob的签名,向Alice支付Bob账单上的金额,并将剩余金额返回Bob。如果Alice不愿意关闭频道(由于恶意或技术故障),Bob可以开始退出期(例如,7天);如果Alice在此期间不提供新的账单,Bob可以收回所有的钱。
这项技术非常强大:它可以调整为处理双向支付、智能合约关系(例如,Alice和Bob在频道中签订金融合约)以及组合(如果Alice和Bob有公共频道,Bob和Charlie也有一个,那么Alice可以与Charlie进行无信任的交互)。
但渠道的作用是有限的。资金链上尚未参与的人不能把资金送出去。通道不能用于表示没有显式逻辑所有者的对象(例如。当渠道被用来做比简单的定期支付更复杂的事情时,它们需要锁定大量资金。
等离子是如何工作的?
单击此处查看:plaa原纸和plaa现金
为了存放资产,用户将其发送到管理plaa链的智能合约。
plaa链为资产分配一个单独的ID(如537)。每个plaa链都有一个操作员(可以是中心化式角色,也可以是多重签名,或者更复杂的东西,比如pos或DPO)。每隔一段时间(可能是15秒,或一小时,或两者之间的任何时间),操作员就会生成一个“批处理过程”,其中包含他们在链外收到的所有plaa事务。
它们生成一棵梅克尔树。如果树中的每个索引x上都有一个事务,则会有一个transfer asset ID x的事务,否则为零。他们把这个鱼根送到锁链上。它们还将每个指数x的Merkel分支发送给资产的当前所有者。要提取资产,用户需要发布Merkle分支,将资产发送到**的事务中。注:Merkle树在中文中称为Merkel树或hash树。在密码学和计算机科学中,它是一种树数据结构。每个叶节点都用数据块的哈希值标记,而叶节点以外的节点则用其子节点的加密哈希值标记。Merkle树的一个明显优点是它可以取出一个分支(作为一个小的树)来验证部分数据。在许多情况下,它比哈希表更方便、更高效。
合同的开始是一个质疑期。在此期间,任何人都可以尝试使用其他Merkle分支,通过证明(1)发送方在发送时不拥有资产,或(2)他们在稍后的时间点将资产发送给其他人,从而使退出无效。如果在(例如)7天内没有人证明退出是不真实的,用户可以收回资产。
Plaa提供了比国家渠道更强大的属性:您可以将资产发送给从未属于该系统的参与者,而且资本要求要低得多。但是有一个代价:在“正常操作”期间,通道不需要在链上运行任何数据,plaa需要定期在每条链上发布一个哈希值。另外,等待等离子传输并不是立即的:您必须等待区间结束和块被发布。
此外,等离子和状态通道有一个共同的弱点:为什么它们是安全的?这背后的博弈论依赖于这样一种观点,即两个系统控制的每个对象都有某种逻辑上的“所有者”。如果所有者不关心其资产,则可能导致涉及资产的“无效”结果。这对于许多应用程序都是可以接受的,但是对于许多其他应用程序(例如。Uniswap)。甚至发送资产对象的系统,其状态可以在未经所有者同意的情况下更改,例如。基于帐户的系统,你可以增加某人的余额,而无需他们的同意,是不能很好地处理等离子。
所有这一切意味着,在任何真实的等离子或状态通道部署中,都需要大量的“特定于应用程序的推理”,不可能构建一个等离子或通道系统来模拟整个以太坊环境(或“EVM”)。
为了解决这个问题,我们可以看一下汇总
汇总
有关详细信息,请参见:ETHhub on optimal rollups和ZK rollups
等离子体和状态通道是完整的Layer2计划。他们试图将数据和计算从链中移出。然而,围绕数据可用性的基本博弈论问题意味着,这不可能对所有应用程序都是安全的。Plaa和channel依靠一个明确的所有者概念来解决这个问题,但这阻碍了它们的通用性。另一方面,rollup是一种“混合”的第2层解决方案。
Rollup将计算(和状态存储)移出链,但为链上的每个事务保留一些数据。为了提高效率,他们使用了许多奇特的压缩技术,试图用计算来代替数据。因此,系统的可扩展性仍然受到底层区块链数据带宽的限制,但比例非常有利:以太坊底层ERC20代币的传输成本约为45000gas,而rollup中ERC20代币的传输成本小于300gas,占用链上16字节的空间。
数据链上的事实是关键(注:将数据“放在IPFs上”是不可行的,因为IPFs不同意是否需要提供任何特定数据;数据必须放在区块链上)。如果有人想在本地发现或提取数据,他们就可以开始对数据进行汇总。缺乏数据可用性意味着恶意或离线运营商的危害较小(例如,他们不会造成一周的延迟),从而为有权发布批处理的人打开了更大的设计空间,并使聚合更容易推理。
最重要的是,数据可用性的缺乏意味着不再需要将资产映射到所有者,这也是以太坊社区对汇总比之前的第2层扩展更感兴趣的关键原因:汇总是完全通用的,即使EVM可以在rollup中运行,以允许现有的以太坊应用程序迁移到rollup,几乎不需要编写新代码。
好的,那么汇总有多好?
链上有一个智能合约,它维护一个状态根:rollup state的Merkle根(即帐户余额、合约代码等位于rollup内部)。
任何人都可以发布批处理,这是一种高度压缩的事务集合形式,以及以前的状态根和新的状态根(事务处理后的Merkle根)。协定检查批处理中以前的状态根是否与当前状态根匹配;如果匹配,则将状态根切换到新的状态根。
为了支持取款,我们添加了使事务的输入或输出“超过”汇总状态的功能。如果批处理有来自外部的输入,提交批处理的事务还需要将这些资产转移到汇总合同。如果批处理已输出到外部,则智能合约将在处理批处理时开始提取。
好吧,这里只有一个主要细节:如何知道批处理中的后状态根是正确的?如果有人可以提交一个带有任何post-state根的批处理而不产生任何后果,那么他们可以将rollup中的所有代币传输给自己。
这个问题很关键,因为这个问题有两套非常不同的解决方案,导致两种类的汇总。
**汇总与ZK汇总
这两个汇总是**汇总和ZK汇总。
**汇总,使用防欺诈:汇总契约跟踪其状态根的整个历史以及每个批的哈希。如果在批处理链上发现批处理错误,有人可以证明。随后的批和批将恢复所有的认证。
ZK rollup,使用有效性证明:每个批都包含一个名为ZK snark的加密证明(例如,使用plonk协议),它证明状态根是批处理的正确结果。无论涉及多少计算,证明都能在链上迅速得到验证。
这两种类的汇总之间存在复杂的权衡
和
总的来说,我的观点是,在短期内,**汇总有机会赢得多用途EVM计算,而zkrollup在简单的支付水平、交易平台和其他特定应用的用例上有望更好。然而,从中长期来看,随着ZK snark技术的改进,ZK rollup将赢得所有用例。
欺诈证明分析
**汇总的安全性取决于是否有人将无效的批发布到汇总中。任何跟踪公链并发现欺诈行为的人都可以出具欺诈证明,向合同证明该批次产品无效,应予以恢复。
和
声称无效批的欺诈证明将包含绿色数据:批本身(可以根据存储在链上的哈希值进行检查)和Merkle树的部分只需要证明批读取和/或修改的特定帐户。
黄色树中的节点可以由绿色节点重建,因此不需要提供(数据)。这些数据足以执行批处理和计算后状态根(注意,这与无状态客户机验证单个块的方式完全相同)。如果批处理中计算的后状态根与提供的后状态根不同,则批处理是欺诈性的。
可以保证,如果一个批次构造不正确,并且之前的所有批次构造都正确,那么就有可能创建一个欺诈证明来证明该批次构造不正确。注意前面批的声明:如果在rollup中发布了多个无效批,**尝试证明最早的批是无效的。当然,如果批处理过程构造正确,就永远不可能创建一个证明批处理过程无效的欺诈证据。
压缩是如何工作的?
一个简单的以太坊事务(发送ETH)大约需要110字节。然而,一个ETH传输只需要大约12个字节
和
部分原因是更**的编码:以太坊的RLP在每个值的长度上浪费了一个字节。但也有一些非常聪明的压缩技术:
暂时:防止重播。如果帐户的当前nonce为5,则该帐户的下一笔交易必须具有nonce 5,但一旦处理了该交易,该帐户中的nonce将增加到6,因此无法再次处理该交易。在rollup中,我们可以完全忽略nonce,因为我们只从pre状态恢复nonce;如果有人试图用较早的nonce重放事务,签名将不会得到验证,因为签名将根据包含新的较高nonce的数据进行检查
天然气价格:我们可以允许用户在一个固定的天然气价格范围内支付,例如2的16次方。或者,我们可以在每个批中设置一个固定的费用水平,甚至可以将天然气付款完全从汇总协议中转移出去,这样事务处理程序就可以通过一个渠道向批创建者付款。
气体:同样地,我们可以把气体总量写为2的幂。或者,我们只能批量设置气体限值。
收件人:我们可以使用索引而不是20字节的地址。如果地址是添加到树中的4527地址,我们只需要使用索引4527来引用它。我们将在状态中添加一个子树来存储索引到地址的映射。
价值:我们可以使用科学计数来存储价值。在大多数情况下,传输只需要1-3个有效数字
根据协议,我们可以将~BLS签名聚合为单个签名。然后可以一次为整个消息集和批处理中的发送者检查此签名。表中的~0.5表示一个集合中可以包含的签名数是有限制的,因为签名需要在单个欺诈证明中进行验证。
ZK rollup独有的一种重要压缩技术是,如果事务的一部分仅用于验证,而与计算状态的更新无关,那么就可以将其排除在链之外。这种**汇总无法实现,因为这些数据仍然需要包含在链中,以防将来需要在欺诈证明中检查它们。在ZK rollup中,Snark证明了批处理的正确性,它提供了验证所需的任何数据。
一个重要的例子是保护隐私的ollps:在**汇总中,需要将用于每个事务隐私的大约500字节的ZK snark放到链上,而在ZK汇总中,覆盖整个批的ZK snark无疑表明“内部”ZK snark是有效的。
这些压缩技术是rollup可扩展性的关键,如果没有它们,rollup可能只会将基本链的可扩展性提高10倍左右(尽管有些应用程序计算量很大,即使是简单的rollup也非常强大)。使用压缩技术,几乎所有应用程序的比例因子都可以超过100倍。
谁可以提交批量交易审核?
关于谁可以提交乐观或ZK汇总中的批处理事务,有很多意见。一般来说,大家都同意,为了能够提交一批,用户必须提交一大笔押金。如果用户提交了欺诈性批量交易(例如,无效状态根),则部分存款将被烧掉,部分存款将用作对欺诈证明人的奖励。但除此之外,还有许多可能性:
完全无序:任何人都可以随时提交批量事务。这是最简单的方法,但也有一些严重的缺点。若要将这些交易提交到一起,则只有一个特定的交易批才能成功处理,并且只有一个交易批才能成功提交。这就导致了大量的能源浪费就产生了证明,同时也导致了由于气体浪费而需要批量交易环节。
中央音序器:只有一个参与者:音序器。他可以提交批量交易(除了取款:通常的技术是用户可以先提交取款请求,然后如果分拣机在下一批中没有处理取款请求,则用户可以提交单个操作批进行处理)。这是最有效的,但它依赖于一个中心化的角色来维持其运作。
例如,谁有权决定第二天的拍卖(Sequencer)。这种技术的优点是,它筹集的资金可以由rollup控制的Dao分配(参见:MeV拍卖)
从POS中心化随机选择:任何人都可以将ETH(或rollup自己的协议代币)存入rollup合同。每批订货人从一个寄存人中随机选择,被选中的概率与寄存量成正比。这种技术的主要缺点是会导致大量不必要的资本锁定。
DPO投票:通过拍卖选择一个序列器,但如果它们表现不好,代币持有者可以投票将它们踢出,并举行新的拍卖来取代它们
批处理和状态根供应的分配
目前,一些正在开发的汇总使用“分配批处理”模式,其中提交一批Layer2事务的操作和提交状态根的操作是分开执行的。这种方法有一些关键优势:
您可以允许许多排序器并行地发布批处理事务,以增加审核阻力,而不必担心某些批处理会失败,因为其他批处理是首先包含的。
如果某个州根目录中存在欺诈,则不需要恢复整个批次。您只需恢复状态根并等待有人为同一批提供新的状态根即可。这为事务发送者提供了更好的保证,以确保其事务不会被还原。
所以,总而言之,有一个相当复杂的科技园,试图在复杂的权衡之间取得平衡,包括效率、简单性、**审查和其他目标。现在说哪种组合最有效还为时过早,时间会证明一切。
rollup能给您多少可伸缩性?
在现有的以太坊链中,gas的上限是1250万,事务中每个字节的数据花费16 gas。这意味着,如果一个块只包含一个批(我们说使用ZK rollup,500K gas用于验证),那么该批(1200万/16)就等于750000字节的数据。
如上所示,对于每个用户操作,ETH transfer summary只需要12个字节,这意味着批处理最多可以包含62500个事务。平均阻塞时间为13秒时,这意味着约4807 TPS(相比之下,以太坊本身上ETH传输的1250万/21000/13~=45 TPS)。
以下是一些其他用例图:
和
**可扩展性增益计算为(L1 gas cost)/(rollup bytes*16)*1200万/1250万。
现在,值得记住的是,这些数据过于乐观有几个原因。最重要的是,一个块几乎从不只包含一个批,至少包含多个汇总。第二,存款和取款将继续发生。第三,短期内利用率将非常低,因此固定成本将占主导地位。但即使考虑到这些因素,100倍以上的可扩展性也有望成为标准。
现在,如果我们想超过1000-4000 TPS(取决于具体的用例),我们应该怎么做?这是ETH2数据分段的起点。分区方案每12秒打开16MB空间,可以填充任何数据,系统保证数据可用性的一致性。此数据空间可用于汇总。这大约是1398kb/s,是现有以太坊链60kb/s的23倍。从长远来看,数据容量有望进一步增长。因此,使用ETH2切片数据的rollup最多可以处理10万TPS,将来甚至更多。
在汇总中还有哪些未解决的挑战?
虽然汇总是一个基本概念,现在可以很容易理解,我们非常肯定,他们是可行的和安全的性质。主网络上已经部署了几种rollup方案,但是还有很多领域的rollup设计还没有得到很好的开发,如果我们想将以太坊的大部分生态系统完全迁移到rollup,以利用它们的可扩展性,仍然有很大的挑战。
一些关键挑战包括:
用户和生态系统适应:很少有应用程序使用rollup,用户不熟悉rollup,很少有钱包开始集成rollup。商人和慈善机构还不接受这种付款。
从一个层到另一个层(例如,通过一个跨事务的汇总,有效地将数据从一个层移动到另一个层)。
审计激励机制:如何**限度地提高至少一个诚实节点实际充分验证**汇总的可能性,从而在出现问题时出具欺诈证明?对于小规模的汇总(多达数百个tp),这不是一个重要的问题。人们可以简单地依赖利他主义,但对于大规模的汇总,还是需要更明确的推理。
探索plaa和rollup之间的设计空间:是否有任何技术可以将一些(但不是全部)状态更新相关数据放在链上,从中可以得出什么有用的结论?
**限度地提高预确认的安全性:许多汇总都提供了“预确认”的概念,以获得更快的用户体验,其中sequencer会立即提供一个承诺,即交易将被包括在下一批中,如果他们违背承诺,sequencer的押金将被销毁。但这项计划的经济保障是有限的,因为它有可能同时向许多参与者作出许多承诺。这一机制能否得到改进?
提高缺席分拣机的响应速度:如果一个汇总分拣机突然下线,那么尽可能快速、廉价地恢复分拣机的角色是非常有价值的。方法是快速而廉价地退出到不同的汇总,或者快速地更换分拣机。
给出一个有效的snark(或ZK)来生成一个与现有的智能VMS不同的结果。
结论
Rollup是一个强大的新的第2层扩展范例,预计在短期和中期(可能在长期)将成为以太坊扩展的基石。他们看到了以太坊社区对这件事的极大兴趣。与以前扩展layer2的尝试不同,它们可以支持公共EVM代码并允许现有应用程序轻松迁移。为此,他们做出了一个关键的妥协:他们没有试图完全脱离链,而是为链上的每个事务留下少量数据。
卷积有很多种,在设计领域有很多选择:例如,使用**卷积的欺诈性证明,或者使用ZK卷积的有效性证明(即ZK snarks)。分拣机(可以将事务批发布到链的用户)可以是中心化式参与者、自由参与者,或者是中间的许多其他选择。Rollup仍然是一项早期技术,开发仍在快速发展中,但它们确实可以工作,其中一些(尤其是looping、zksync和devosif)已经运行了几个月。在未来的几年里,将有更多令人兴奋的工作在汇总空间。
文章标题:V上帝带你去了解以太坊扩展性解决方案汇总
文章链接:https://www.btchangqing.cn/173803.html
更新时间:2021年01月06日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。
祝你快乐.区块链
我呆了区块链
还不是韭菜加仓的时候,韭菜要种在山顶
币安矿池从进入市场到排名前五只用了几个月时间,币安生态不仅越来越丰富,而且都以超越常规的速度高速发展,这速度的确很闪电
抢着配置btc
消息出来第一时间埋伏了点
比特币你加油吧
这两天开始阴跌了,再出个利空,暴跌,等着吧
消息一出,空军又被收割了~
有人会去接盘吗?悬啊
我知道玩比特币的都发来
我在努力中