Rollups在以太坊社区中风靡一时,有望在未来成为以太坊的关键可扩展性解决方案。但是这项技术到底是什么,从中值得期待什么?又将如何使用它?本文在分析以太坊几个重要扩展方案的基础上,试图回答Rollups相关的一些关键问题。背景:什么是L1和L2?
有两种方法可以扩展区块链生态系统。第一种,可以让区块链本身拥有更高的交易能力。这种技术面临的主要挑战是,具有“更大区块”的区块链本质上更难以验证,并且可能变得更加集中。为了避免这种风险,开发人员可以提高客户端软件的效率,或者持续地使用诸如分片之类的技术,以允许在多个节点上拆分构建和验证链的工作。也就是目前正在构建的以太坊的升级。第二种,可以更改使用区块链的方式。用户不是将所有活动直接放在区块链上,而是在“第2层”协议中,在链下执行大部分活动。链上有一个智能合约,它只有两个任务:处理存款和取款,以及验证链下发生的一切都遵循规则的证据。有多种方法可以进行这些证明,但它们都具有一个共同的特性,即在链上验证证明比在链下进行原始计算要便宜得多。状态通道vsPlasmavsRollups
L2层方案有状态通道、Plasma和Rollups这三种主要类型。它们属于不同范式,具有不同的优缺点,下面将分别叙述这三种不同方案的运作方式。状态通道如何运作
假设一个具体案例,Alice为Bob提供了一个网络连接,Bob以每兆0.001美元的价格支付费用。他们的交易不是每一次都要付款,而是使用以下L2方案。首先,Bob将1美元放入智能合约中。为了向Alice支付第一笔款项,Bob签署了一张“票证”,上面写着“0.001美元”,并将其发送给Alice。为了进行第二次付款,Bob会签署另一张写着“$0.002”的票,并将其发送给Alice。依此类推,根据需要支付尽可能多的款项。当Alice和Bob完成交易后,Alice可以将最高价值的票据发布到链上,并包装在自己的另一个签名中。智能合约验证了Alice和Bob的签名,向Alice支付了Bob票上的金额,并将其余部分退还给Bob。如果Alice不愿意关闭通道,Bob可以启动一个退出期;如果Alice在这段时间内没有提供票据,那么Bob就会拿回他所有的钱。这种技术强大之处在于:它可以调整处理双向支付的智能合约关系。例如Alice和Bob在频道内签订合约,以及如果Alice和Bob有一个开放的渠道,Bob和Charlie也是如此,Alice可以与Charlie进行无信任的互动。但是,channels可以做的事情是有限的。比如不能使用channels将资金从链下发送给尚未参与的人。channels不能用于表示没有明确逻辑所有者的对象。相比简单的经常性支付,如果有更复杂的需求,则需要大量的资金来锁定。另请参阅:https://www.jeffcoleman.ca/state-channels和statechannels.orgPlasma如何运作
波卡回顾上个月客户端事故 系内存不足导致:6月7日消息,Polkadot官方发文回顾,5月24日要求波卡验证节点将客户端降级至0.8.30版本事故,系内存不足导致。Polkadot表示,在试图构建区块5202216时因内存不足(OOM)错误而失败。该区块包含验证人选举的链上解决方案,该解决方案通常是在链下计算的,只有在没有提交链下解决方案的情况下才会在链上进行。由于提名者的数量众多,选举溢出了Wasm环境中分配的内存。为解决这个问题,当时验证者被要求暂时将他们的节点软件降级到至0.8.30版本并且使用「--execution=native」命令。该本地版本不受Wasm内存分配器的限制,网络在70分钟停机后恢复。之后在5203204区块,几个节点因「存储根不匹配」错误而失败,这是由于构建本地运行时和链上Wasm运行时的编译器版本不同造成的。解决方案是用一个具有正确编译器版本的Wasm运行时来覆盖链上Wasm运行时。Polkadotv0.9.3版本上线后修复了该类问题,Polkadot表示未来可能会支持4GB的Wasm分配内存。现在选举必须在链下进行,并且禁用链上选举。在分配器被改进之前,链下工作者将使用比链上Wasm运行时更高的内存限制确保链下选举不会耗尽内存并能成功提交。另外,Polkadot将确保本地和Wasm构建中使用相同的编译器版本。[2021/6/7 23:18:48]
为了存入资产,用户将其发送到管理Plasma链的智能合约。Plasma链为该资产分配一个新的唯一ID。每个Plasma链都有一个运算符。每个间隔,操作员都会生成一个“batch”,其中包含他们从链下收到的所有Plasma交易。它们生成一个Merkle树,其中在树中的每个索引处,如果存在这样的交易,则有一个事务转移资产ID,否则该叶子为零。他们还将每个索引的Merkle分支发送给该资产的当前所有者。要提取资产,用户将发布最近事务的Merkle分支,并将资产发送给他们。合约开始一个挑战期,在此期间,任何人都可以尝试使用其他Merkle分支来证明退出无效,方法是发送方在发送资产时不拥有资产,他们在稍后的某个时间点将资产发送给其他人。如果7天内没有人证明退出是欺诈性的,用户可以撤回资产。Plasma提供比状态通道更强的属性:可以将资产发送给从未参与系统的参与者,并且资金要求很低。代价则是:在“正常操作”期间,通道不需要任何数据就可以上链,但Plasma要求每条链定期发布一个哈希值。此外,Plasma体转移不是即时的,必须等到间隔期结束以及区块公开上链。此外,Plasma和通道有一个共同的弱点:它们之所以安全的背后依赖于这样一种理论——两个系统控制的每个对象都有一些逻辑上的“所有者”。如果该所有者不关心他们的资产,则可能导致涉及该资产的“无效”结果。这对于许多应用程序来说是可以的,但对于许多其他应用程序来说,是一个交易破坏者。即使是在未经所有者同意的情况下更改对象状态的系统也无法很好地使用Plasma。这意味着在Plasma或通道部署中,需要大量的“特定于应用程序的推理”,并且不可能制作一个仅模拟整个以太坊环境的Plasma或通道系统。为了解决这个问题,让我们开始了解第三种方案——Rollups。另请参阅:http://plasma.io/plasma-deprecated.pdfRollups如何运作
Compound创始人发推回顾项目历史,成功并非一朝一夕:Compound创始人Leshner发推回顾了Compound发展历史,并表示Compound的成功并非一朝一夕,成功也靠站在巨人的肩膀之上。以下为Leshner提及的Compound发展历史:
2017年,Compound是一个去中心化货币市场,这得益于以太坊基金会、Consensys等将以太坊构建为一个完整的生态系统,使得其上智能合约的部署成为可能。
2018年9月,Compound v1上线,主要做了这些初始工作:实现池子流动性(而非通过订单簿);基于供需实现算法利率;利率指数(用于为不限量的用户调整持币余额)。
Compound v2中,引入了cToken概念,这是一种代币化余额,该想法的灵感来自于和@delitzer的对话,@delitzer一直在探究DeFi的可组合性。
Compound治理系统基于协议和社区决策,MakerDAO系统的首个可行治理方案为Compound提供了借鉴。
COMP代币整合了投票委托功能,灵感来自Tezos。
COMP代币分发是将项目主要价值给到用户和协议参与者的一次实验,灵感来自Synthetix在DeFi激励机制中的设计,以及中本聪的比特币白皮书。[2020/6/20]
关于RollupsPlasma和通道是“完整的”L2方案,因为它们试图将数据和计算都移出链下。但是,围绕数据可用性的基本博弈论问题意味着,不可能对所有应用程序都安全地执行此操作。Plasma和通道通过依赖所有者概念来解决这个问题,但这影响了他们的应用范围。然而,Rollups是一种“混合”L2方案。Rollups将计算移动到链下,但将每个任务的部分数据保留在链上。为了提高效率,他们使用了大量复杂的压缩技巧,尽可能用计算来替换数据。结果是系统中可扩展性仍然受到底层区块链的数据带宽的限制,但受限的程度低:以太坊基础层ERC20令牌传输的成本约为45000gas,而Rollups中的ERC20令牌传输占用16字节的链上空间,成本低于300gas。值得注意的是,将数据“放在IPFS上”是行不通的,因为IPFS没有就任何给定的数据是否可用,达成共识,数据必须在区块链上。有了将数据放在链上这一共识,Rollups允许任何人根据需要在本地处理任何操作,允许他们检测欺诈、发起提款或亲自开始生成交易batch。缺乏数据可用性问题意味着恶意或离线操作员可以造成的伤害更小,Rollups更容易推理,为有权发布batch的人开辟了更大的使用空间。最重要的是,缺乏数据可用性问题意味着不再需要将资产映射到所有者,这使得以太坊社区对Rollups扩展方案十分感兴趣,Rollups是完全通用的,甚至可以在Rollups中运行EVM,允许现有的以太坊应用程序迁移到Rollups,几乎不需要编写任何新代码。另请参阅:https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/optimistic_rollups/Rollups工作原理链上有一个智能合约,它维护一个状态根:Rollups状态的Merkle根。
事件回顾丨美联储降息至0 市场短暂波动回吐所有涨幅:美联储今日紧急宣布降息100个基点至0-0.25%的水平,并宣布启动了一项规模达7000亿美元的规模扩大宽松计划。此举是美联储史上最大的行动。降息和量化宽松政策,但都在一天内完成,且距离上一次紧急降息仅12日。
受此影响现货黄金开盘跳涨1.4%,跳空高开逾20美元。随后一度扩大涨幅至近3%并上破1570美元关口,然而数分钟后急剧回落,悉数回吐所有涨幅。现货白银涨1.44%,一度重回15美元关口,但没能站稳。
油市延续上一周跌势,WTI原油跌幅扩大至10%,失守30美元/桶。
而比特币今日也从凌晨5点开始,价格大幅拉升,最高时达到5939USDT,随后回吐涨幅至5300USDT附近。[2020/3/16]
任何人都可以发布batch,即高度压缩的事务集,以及以前的状态根和新的状态根。合约检查batch中的上一个状态根,是否与其当前状态根匹配;如果匹配,它会将状态根切换到新的状态根。
为了支持存款和取款,添加了输入或输出“超出”汇总状态的事务的功能。如果batch具有来自外部的输入,则提交batch的事务还需要将这些资产转移到Rollups合约。如果一个batch有输出到外部,那么在处理该batch时,智能合约会启动这些提款。如何知道batch中的后状态根源是正确的?如果有人可以提交一个具有任何post-stateroot的batch而不会产生任何后果,那么他们可以将Rollups中的所有硬币转移给自己。这个问题很关键,对此产生了两个截然不同的解决方案系列,导致了两种不同的Rollups。OptimisticRollups与ZKRollups
这两种类型的Rollups分别是:OptimisticRollups,使用欺诈证明:Rollups合约跟踪其状态根的整个历史记录和每个batch的哈希。如果有人发现一个batch具有不正确的后状态根,他们可以发布一个证明来链接,证明该batch的计算不正确。合约将验证证明,并还原该batch及其之后的所有batch。ZKRollups,使用有效性证明:每个batch都包含一个称为ZK-SNARK的加密证明,它证明post-stateroot是执行batch的正确结果。无论计算量有多大,证明都可以在链上非常快速地验证。在两种类型的Rollups之间存在复杂的权衡:
动态 | 美国SEC主席在财年预算申请证词中回顾2018年加密货币相关工作:美国证券交易委员会(SEC)官网今日发布了SEC主席Jay Clayton在国会就SEC 2020财年预算申请发表的证词。在回顾2018年的工作时,Clayton提及该机构解决了一些加密货币、ICO和类似产品和技术出现的问题。SEC合规检查和检查办公室(OCIE)在2018年公布了2019年的审查优先事项,其中包括数字资产(加密货币、coin和token)。此外,SEC还创建了一个网站,向公众宣传涉及ICO的欺诈行为。[2019/5/9]
总的来说,在短期内,Optimistic的Rollups可能会在通用EVM计算中胜出,而ZKRollups可能会在简单的支付、交换和其他特定于应用程序的用例中胜出。欺诈证明剖析
OptimisticRollups的安全性取决于这样一种设想,即如果有人将无效batch发布到Rollups中,则检测到欺诈的任何其他人都可以发布欺诈证明,向合约证明该batch无效,应该恢复。
据上图可知,声称batch无效的欺诈证明将包含绿色数据:batch本身以及Merkle树的部分,这些部分只需要证明由batch读取和/或修改的特定帐户。黄色树中的节点可以从绿色的节点重建,因此不需要提供。此数据足以执行batch并计算后状态根。如果计算出的状态后根和batch中提供的后状态根不相同,则该batch是欺诈性的。可以确定的是,如果batch构造不正确,并且所有以前的batch都正确构造,则可能会创建欺诈证明,表明该batch构造不正确。请注意有关以前batch的声明:如果有多个无效batch发布到Rollups中,则最好尝试证明最早的batch无效。当然,如果batch构建正确,则永远不可能创建欺诈证明,证明该batch无效。数据压缩原理
一个简单的以太坊交易需要大约110个字节。但是,Rollups中的ETH传输仅占用约12个字节:
精选 | 九月区块链趣闻事件回顾:1.纽约一男子因抢劫180万美元加密货币被判刑10年。
2.“比特币暴跌”上新浪微博热搜榜。
3.北京互联网法院受理第一案将使用区块链取证。
4.区块链新闻论文获第28届中国新闻奖二等奖。
5.韩国海关总署将采用三星Nexledger区块链平台开发去中心化清关系统。
6.德克萨斯州一男子被判数字货币罪而入狱。[2018/9/30]
其中一部分只是高级编码:以太坊的RLP在每个值的长度上浪费了1个字节。但是也包含了一定的压缩技巧:Nonce:此参数的目的是防止重放攻击。如果帐户的当前Nonce为5,则该帐户的下一笔交易必须具有Nonce5,一旦处理了交易,帐户中的随机数将增加到6,因此无法再次处理该交易。在Rollups中,我们可以完全省略随机数,因为我们只是从前状态中恢复随机数;如果有人尝试使用较早的随机数重放交易,则签名将无法验证,因为签名将针对包含更高Nonce的数据进行检查。Gasprice:我们允许用户以固定范围的Gasprice付款,如2的16次幂。或者可以在每个batch中都有一个固定的费用,甚至将gas支付完全转移到Rollups协议之外,并让交易参与者通过状态通道向batch创建者支付费用。Gas:我们同样可以将总Gas限制为2的多次幂。或者在batch级别设置Gas限制。To:我们可以用index替换20字节的地址。如果一个地址是添加到树中的第4527个地址,我们只使用index4527来引用它,将向状态添加一个子树,以存储index到地址。Value:我们可以用科学记数法存储值。在大多数情况下,转账只需要1-3位有效数字。Signature:我们可以使用BLS聚合签名,它允许将大量签名聚合成单个约32-96字节的签名。然后,可以针对一个batch中的整组消息和发件人检查此签名。表中的“约0.5”表示在聚合中可以组合的签名数量存在限制,可以在单个块中验证,因此大批量约每100个事务需要一个签名。ZKRollups的一个重要压缩技巧是,如果交易的一部分仅用于验证,并且与计算状态更新无关,则该部分可以留在链下。OptimisticRollups则无法做到,因为如果以后需要在欺诈证明中检查数据,则仍需要将数据包含在链上,而在ZKRollups中,证明batch正确性的SNARK已经证明提供了验证所需的任何数据。具备隐私保护功能的rollups是一个重要例子:在OptimisticRollups中,每个交易中用于隐私的约500字节,ZK-SNARK需要在链上;而在ZKRollups中,覆盖整个batch的ZK-SNARK已经毫无疑问地表明“内部”ZK-SNARK是有效的。这些压缩技巧是Rollups可延展性的关键。如果没有它们,Rollups可能只是基本链可扩展性的10倍左右,而进行数据压缩后,几乎所有应用的扩容性都可以实现100倍以上的提升。谁可以提交batch?
对于谁可以在Optimistic或ZKRollups中提交batch,有许多说法。一般来说,每个人都同意,为了能够提交batch,用户必须支付大笔存款;如果该用户曾经提交欺诈性batch,则该存款将被部分销毁,部分作为奖励给予欺诈证明者。但除此之外,还有很多可能性:完全无政府状态:任何人都可以随时提交batch。这是最简单的方法,但它有一些重要的缺点。一旦存在多个参与者,同时生成并尝试并行提交batch,但最终只有一个batch能被成功打包。这导致在生成证明方面浪费大量精力,以及将batch发布到链中浪费Gas。中心化处理:存在一个排序者来提交batch。这是最“高效”的,但它依赖于一个核心的actor来操作。排序者拍卖:举行拍卖以确定谁有权成为第二天的排序者。这种技术的优势在于它能筹集资金,通过Rollups控制的DAO来进一步分配。存入Rollups合约,并且每个batch的排序者是从其中一个存款人中随机选择的,被选中的概率与存入的金额成正比。这种技术的主要缺点是它会导致大量不必要的资本锁定。DPoS投票:序列者在拍卖中被选中,但如果他们表现不佳,代币持有者可以投票将他们踢出并举行新的拍卖。拆分批处理和状态根供应
目前正在开发的Rollups使用“拆分批处理”的方式,即提交一批L2操作和提交状态根的操作是分开完成的。这有一些关键优势:可以允许许多排序者并行发布batch,以提高抗审查性,而不必担心某些batch会因为某些其他batch首先被包含而无效。如果状态根是欺诈性的,则无需还原整个batch;您可以只还原状态根,并等待某人为同一batch提供新的状态根。这为交易发送者提供了更好的保证,即他们的交易不会被还原。总而言之,这是一个相当复杂的技术,试图在效率,简单性,抗审查性和其他目标的复杂权衡之间取得平衡。现在说这些想法的哪种组合效果最好还为时过早。时间会证明一切。Rollups能带来多少扩展?
在现有的以太坊链上,gas限制为1250万,交易中每个字节的数据花费16gas。这意味着,如果一个块只包含单个batch,则该batch可以有=750,000字节的数据。如上所示,ETH传输的Rollups每个用户操作只需要12个字节,这意味着该批最多可以包含62,500个事务。在13秒的平均区块时间下,这相当于约4807TPS。以下是其他一些示例用例的图表:
最大可扩展性增益的计算公式为/*1200万/1250万。值得注意的是,这些数字过于乐观。一个块几乎永远不会只包含一个batch,至少因为存在并且将有多个Rollups。其次,存款和取款将继续存在。第三,在短期内使用率会很低,因此固定成本将占主导地位。但即使考虑到这些因素,超过100倍的可扩展性增益也有望成为常态。现在,如果我们想超过约1000-4000TPS该怎么办?这就是Eth2数据分片的用武之地。分片提案每12秒提供16MB的空间,可以容纳任何数据,且确保对该数据的可用性。此数据空间如果由Rollups使用,每秒约1398kb空间比现有以太坊链提高了23倍,从长远来看,数据容量预计将进一步增长。因此,使用Eth2分片数据的Rollups可以共同处理多达约10万交易,未来甚至更多。Rollups有哪些尚未完全解决的挑战?
虽然Rollups的基本概念现在已经很好理解,它们是可行和安全的,并且已经有多个Rollups部署到主网中,但仍有许多Rollups设计领域尚未得到充分探索,将以太坊生态系统的大部分内容完全引入Rollups以方面存在很多挑战。一些关键问题包括:用户和生态入驻-使用Rollups项目不多、用户不熟悉,很少有钱包集成Rollups。商家和慈善机构尚未支持这种支付方式。跨Rollups交易-高效地将资产和数据从一个Rollups移动到另一个Rollups,而无须产生经由L1的费用。审计激励-如何最大程度提高至少有一个诚实节点完整验证一个OptimisticRollup的机率,使问题出现时他们会广播欺诈证明?对于小规模Rollup(高至每秒几百笔交易),这个问题不大,因为对矿工来说只是举手之劳,但对于大规模的Rollup来说,还需要更充分的理由以说服矿工去做验证。探索Plasma和Rollups之间的设计空间-是否有技术可以将一些与状态更新相关的数据放在链上,但不是全部,且这些数据会产生有用的东西?最大限度地提前确认安全性-许多Rollups提供了“pre-confirmation”的概念,以实现更快的用户体验,其中排序者立即提供承诺,即交易将包含在下一批中,并且如果排序者违背了诺言,则排序者的存款将被销毁。但这一计划的经济安全是有限的,因为有可能同时向许多行为者做出许多承诺。这种机制能否得到改进?提高对缺失的排序器的响应速度-如果Rollups的排序者突然脱机,那么短时间从这种情况中恢复,要么是快速且低消耗地切换到另一个Rollup,要么是换一个排序者,都是有成本的。高效的ZK-VM-生成ZK-SNARK证明通用EVM代码已正确执行并具有一个给定的结果。结论
Rollups是一种强大的、新颖的L2扩展方案,预计将成为以太坊在短期和中期扩展的基石。与之前的L2扩展方案不同,它们可以支持通用的EVM代码,允许现有应用程序轻松迁移。而Rollups通过妥协——交易处理不是完全在链下进行,而是每笔交易留下一小部分数据在链上,在以太坊社区中获得了高度关注。从技术设计角度,Rollups有多种类型,如使用欺诈证明的OptimisticRollups,使用有效性证明的ZKRollups。Rollups仍然是一种早期的、正迅速发展的技术,预计在未来几年中,Rollups空间中将出现更多令人兴奋的项目。原地址
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。