撰文:DanielGoldman,?OffchainLabs?工程师、研究员&作家
编译:Unitimes_Jhonny
来源:Unitimes
去年出现了两个新的以太坊流行语。在应用层面,我们获得了“DeFi”项目,DeFi利用智能合约,以无需信任?(或至少信任最小化,或至少希望有一天实现信任最小化)?的特性来提供传统金融服务的化身。而在可扩展性协议的设计方面,研究者们开始吵嚷着一种称为?OptimisticRollup的Layer2结构,这些Layer2爱好者认为,OptimisticRollup带来的承诺绝非昙花一现的流行语。
今年,随着一个活跃的DeFi生态系统的形成,rollups也在通向主网的路上,一个问题自然地出现了:这两者将如何相遇?
我们可以使用rollups来扩展DeFi生态系统吗?
简言之,可以!
尽管如人们所料,其中会出现一些新的挑战。
概述
OptimisticRollups是一种Layer2侧链结构,寻求减轻以太坊主链的负担。其基本的理念就是,以太坊主链将不需要验证rollup侧链上的所有交易,而仅仅只需发布这些交易即可,并“乐观地”认为这些交易是有效的,除非交易明确地被挑战。
使用rollups的核心好处是降低了用户的Gas成本,这意味着整个网络每秒处理的交易量将会增加?(至少达到数百TPS)。
更便宜的交易成本还意味着,某些应用(如采用复杂密码技术的隐私解决方案)将变得可行,因为这些应用在其他情况下消耗Gas太多,甚至是不可能实现的。因此,虽然rollup本身并没有提供隐私保护的好处,但它为构建隐私保护技术提供了合适的基础。
同样,rollup也不会增加交易延迟(速度),但能够提供一个构建通道(channels)的良好的环境,从而实现几乎即时的交易。
OptimisticRollups处理数据的方式为这种结构提供了一些很好的简单性,特别是相对于其他Layer2协议而言。最重要的是,这种简单性将传递给终端用户的体验,用户可以(而且应该)几乎像使用Layer1一样使用OptimisticRollups。同样,对于开发人员和协议设计人员来说,他们所熟悉的许多工具和想法模型仍然是可用的,虽然我们将看到处理一些关于可组合性的挑战可能需要一些额外的工作。
从用户的角度来看
从用户的角度来说,用户在rollup上与dApp(包括DeFi等应用)进行交互将与在Layer1上使用这些应用的体验几乎是一样的。诸如?Metamask和?Burnerwallet等受欢迎的钱包应用可以在rolup上支持,区块浏览器也可以检测rollup链的活动。
用户使用基于rollup链的dapp?(去中心化应用)?的基本流程如下图所示:
首先,用户在某条rollup链上存储一些资金(可以是ETH、ERC20代币或者ERC721代币等等);此第一步仿照了许多Layer1dApp的用户体验,即用户首先必须将资金转移至某个合约中才能使用该dapp。此时,用户可以像往常一样在这个基于rollup链的dApp上发起交易;如果该rollup链的设计是优先考虑抗审查性(censorshipresistance),那么用户的交易被打包并不会比在Layer1上发布交易更依赖于信任、声誉或者善意,也不会招致更多潜在的审查或抢先交易。
当用户想要将自己的资产转回至Layer1上时,可以发起一笔特殊的?取款交易?(withdrawltransaction)。在这方面,我们将会看到一个潜在的差异:OptimisticRollup的安全模型取决于各方发起挑战的能力,因此我们需要给予各方监测这类活动一定的宽限期,从而证明该用户的取款是否存在欺诈行为。
这意味着,如果用户发起了取款请求,那用户必须等待一定时间,之后资金才会再次在Layer1上可用。这种机制提供的经济安全性来源于生产rollup区块的运营者的资产抵押需求和用户的这个取款等待时长?(EdFelten认为3个小时足够了)。
话虽如此,预计/希望的情况是,用户将很少(如果需要的话)真的需要等待这个宽限期。第三方?(即除用户和rollup链运营者之外的流动性提供者)?可以通过在Layer1上给用户发送等额的价值来购买用户在rollup链上等待取款的资金的所有权,并减去一些手续费,这样用户就可以在无需等待的情况下获取资金了。
因此,只要这些流动性提供者确实存在,并且有着一个将其中的复杂性抽离的用户界面,那么rollup链上的取款体验也将与Layer1上的别无二致。
无需信任的OptimisticRollup
嗯,但OptimisticRollup真的是无需信任的吗?简言之,是的!
任何用户都可以一种无需信任的方式来使用rollup(如果用户想要的话);即便用户不想要,他们的安全性保障依旧是很强大的。
为了消除任何信任需求,任何人(用户或者其他人)都可以成为rollup验证者,让他们自己验证是否有人在试图,并且在有人试图时加以阻止。这就相当于运行某个额外的软件?(即验证者软件),该软件必须在每次发生争议期间至少对争议“查看”1次。
对于不运行验证者软件的用户来说,只有当100%的验证者都参与了犯罪并相互勾结的情况下,欺诈性的交易(比如盗窃资金)才有可能发生。换句话说,只要有一个诚实的验证者存在?(不管是另一个用户,某个交易所,某个应用开发者,某个区块浏览器,某个钱包提供商,或者某个地下室的匿名少年),或者即便所有的参与方都怀有恶意,但只要他们不会都相互勾结并集体一致撒谎,那么整条rollup链就能免于恶意行为的影响。
一旦欺诈的行为被证明,恶意者的存款将被罚没?(getslashed),其中一些会给与欺诈的证明者,这有助于激励验证者诚实地进行验证,使蓄意进行不诚实的行为并给其他验证者带来不便的验证者付出代价。
从开发者的角度来看
现在让我们转向应用开发者的角度来。我们很高兴地发现,在rollup上搭建和部署dApp的开发者体验在很大程度上也将与Layer1有着相当类似的体验。诸如truffle、web3和ethers.js等开发者工具和库也可以在rollup环境中重新用于开发。此外,在rollup链上部署的合约依旧可以使用Solidity编写,仅有一些限制。
因此,在rollup应用的设计和论证方面,最大的区别在于可组合性问题?(composability),可组合性与DeFi应用尤为相关。
可组合性挑战
DeFi应用的一个更为知名(有时也是令人担忧)的特征就是它们之间的可组合性,即DeFi应用可以直接无需许可地集成其他金融服务。对于Layer1上的以太坊合约来说,这种机制的互联性实际上是“免费的”。当我们将活动划分到单独的Layer2环境中时,不同的Layer2链之间的互操作性虽然依旧存在,但互操作性却成为了一个更大的挑战。
上图:Rollup1链与Rollup2链之间无法轻易地组合交易。
借用一个类比:如果Layer1上的诸多dApp应用是舍友关系,那么在不同的rollup链上的应用就像是同一个社区中住在不同房子里的朋友关系。也就是说,虽然住所不那么拥挤了,但是交流和制定计划就不再像在公共空间里那样那么简单。
我们不妨以无损彩票DeFi应用?PoolTogether为例。PoolTogether?的合约管理着随机选中彩票的获奖者并分配资金;这些资金由一个单独的借贷协议Compound?产生的利息组成,且资产本身是由另一个单独的合约发行的?DAI。这种互联性是无缝的,所有这三个应用都存在于以太坊Layer1上。
那么如果所有这三个合约都在不同的rollup链上呢?
将像DAI这样的资产从一条rollup链转移至另一条rollup链是没有障碍的,并且看起来非常类似于在通常的Layer1合约之间进行转移。然而,购买一张PoolTogether彩票需要使用PoolTogether将资产存储在Compound平台上,如果PoolTogether和Compound在两条不同的rollup链上,那么购买一张彩票将不可能仅通过一笔简单的交易完成。
这是因为,PoolTogether所在的rollup链将需要一种新的策略来获取和“监听”Compound所在的rollup链上的更新信息。在其他一些情况下,我们可以想象这两个合约都想要双向进行对话的权力;或者在某些情况下,我们可能只需要其中一方从另一方获得偶尔的、周期性的“更新信息”。
其中涉及的rollup链之间的通信工具集类似于不同的Layer1区块链之间的通信方式,或者类似于Eth2.0中不同的分片链之间的通信方式。
简言之,针对不同的用例有许多不同的方式,每种方式都有其自身的技术复杂性程度和/或用户体验方面的权衡,这取决于特定的需求。技术细节不在本文讨论范围之内,但是用户体验的权衡往往包括要求用户等待更长的时间来确认他们的交易,或者发布多个交易来完成他们想要的操作。
如果再对这个类比进行延申一下:为了交流和制定计划,朋友们应该从一个家迁移至另一个家吗?或者他们隔着窗户相互嚷嚷?或者通过某个中间的共同房子传递信息?亦或者通过数字的方式聊天(这种方式很迅速,但需要更先进的通信技术)?
有很多可能性,但我只想说,在不同的rollup链上沟通永远不会像面对面聊天那么简单。
但值得注意的是,跨rollup通信仍然比较容易...
跨分片通信和跨rollup通信都要比跨任意两条区块链的通信更加容易,至少在一个方面是这样的:它们有着一个共同的参考框架-:跨分片通信中的就是?Eth2.0信标链,跨rollup通信中的就是?底层的Layer1链。
而在另一种极端情况下,我们可以想象这样一种情况:我们将一大堆的应用?(比如DeFi应用)?都放在同一条大型的rollup链上。在这种情况下,跨rollup通信的复杂性就不存在了,Compound和PoolTogether就能像在Layer1上一样在Layer2上自由地相互通信了。
但这一愿景的唯一问题在于,这将削弱我们一开始所追求的可扩展性好处。Layer2的可扩展性在很大程度上来自于对工作进行分区和本地化,而不是将这些工作都统一在Layer1上执行。一条繁忙的rollup链将难以进行验证,使我们面临本来想要避免的问题。换句话说,我们不想要从一个过度拥挤的房子搬进另一个过度拥挤的新房子。
因此,理想的场景可能是介于两者之间:那些受益于(或者需要)可组合性的DeFi应用可以选择迁移至同一条rollup链上,同时根据需要通过适当的方式来实现与其他rollup链的通信。
上图:dApp应用可以根据需要聚集在相同的rollup链上,以保持紧密的通信,就像人们聚集在地区和城市的方式一样。
Layer2的一个关键价值主张就是可以进行无需许可的试验:dApp和用户可以根据预期需要的服务和交互来选择本地环境,从而使自己能够获取新的功能并降低费用,同时缓解更大范围的Layer1网络拥堵。
就Layer2的构建而言,OptimisticRollups在提供这些好处的同时保留了用户期望的大多数关键UX?(用户体验)。当前,随着可扩展性解决方案变得可用,以及我们朝着DeFi演化的下一阶段迈进,围绕促进rollup链之间的互操作性问题将是重要的考虑因素。
参考链接:
https://twitter.com/DZack23
https://offchainlabs.com/
https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/optimistic_rollups/
https://www.theblockcrypto.com/post/16705/understanding-plasma-part-2-make-plasma-fungible-again
https://metamask.io/
https://xdai.io/
https://medium.com/offchainlabs/eleven-questions-to-ask-your-rollup-provider-b0831ee6b864
https://medium.com/offchainlabs/fighting-censorship-attacks-on-smart-contracts-c026a7c0ff02
https://github.com/OffchainLabs/arbitrum/blob/master/docs/Solidity_Support.md#user-content-restrictions
https://twitter.com/licuende/status/1247950214327042048?s=20
https://www.pooltogether.com/
https://eprint.iacr.org/2019/1128.pdf
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。