编者按:本文来自以太坊爱好者,作者:DanielGoldman,翻译:阿剑,Odaily星球日报经授权转载。去年的以太坊圈子里出现了两个新的流行语,一个跟应用层有关,是“DeFi”,就是用智能合约以免信任的方式来提供传统金融服务的替代方案;另一个出现在可扩展性协议设计领域,是研究人员为之欢呼的“OptimisticRollup”,这是一种Layer-2设计方案,看起来颇有前景,而不只是昙花一现。今年,一个生机勃勃的DeFi生态正在形成,Rollup方案也在推向主网的道路上,人们自然而然会问:两者能够结合吗?我们能够使用Rollup方案来扩展DeFi生态系统吗?一句话:没问题!当然,意料之中的事情是,还是有一些挑战要克服。概述
OptimisticRollups是一种Layer-2侧链方案,致力于减轻以太坊主链的负担,其基本理念是:在Rollup侧链上验证所有的交易,主链仅发布交易数据,并“乐观地”假设这些交易都是有效的,除非有人出来质疑。使用Rollup方案最大的好处是帮助用户减少Gas开销,这样就反过来提高了整个网络的每秒可处理交易量。交易本身变得更便宜也意味着:原来因消耗太多Gas而没有机会出现的应用,比如使用复杂密码学的隐私方案,现在也变得有可能使用了。因此,虽然Rollup方案本身并不提供隐私方面的好处,但它是开发隐私保护技术的合适基础。类似地,Rollup方案本身也不能改善交易的时延,但它提供了一个很好的环境,让状态通道这种能提供“准-即时确定性”的方案能够开发出来。OptimisticRollup处理数据的办法也给它带来了良好的简洁性,与其他Layer-2协议相比,这种简洁性非常突出。这一点的关键在于,它可以让终端用户的使用体验与使用Layer-1一般无二。类似地,对于开发者和协议设计者来说,他们惯用的工具和思维模型中的大部分都能沿用,当然,我们接下来也会讲到,围绕可组合性,可能需要投入额外的工作来扫平一些障碍。用户视角
从用户这边来看,与某个Rollup侧链上的某个dApp——无论是不是DeFi应用——交互的体验跟使用Layer-1上的dApp没有分别。现在流行的钱包如Metamask和theBurnerwallet都可支持使用,就像区块浏览器也能用来检测Rollup侧链上的活动一样。使用Rollup化dApp的基本流程如下:
首先,用户向一条Rollup侧链存入一些资金,这第一步跟许多Layer-1dApp的使用体验是完全一样的,很多dApp都需要用户在使用之前先转入一些资金。这个阶段,用户可以使用自己惯用的钱包来发起交易;只要该Rollup侧链在设计上以审查抗性为优先,用户的这笔存入交易就跟发出一笔Layer-1交易完全一样——既不需要更多的信任、不依赖于Rollup运营者的声誉乃至善良,也不会引入更多的审查风险和抢跑交易风险。当用户想把资产取回Layer-1上来之时,他们需要发起一笔特殊的取款交易。这里跟Layer-1使用体验就有一些区别了:OptimisticRollup的安全模型依赖于各方发起挑战的能力;因此,我们需要预出一段宽限期,让监控侧链获得的各方有时间证明其中的欺诈。这就意味着,一旦要求取款,用户就必须等,等到这些资金在Layer-1完全安全并且可访问;Rollup的这一机制所提供的经济安全性由Rollup区块生产者的安全保证金下限和挑战期时长共同决定。话虽如此,我们的期望是用户很少需要走完这个宽限期。一些第三方可以在Layer-1上给你等值的资金、买下你等待退出的资金的所有权,让你立即就能使用资金,无需等待。因此,只要有这些流动性供应方、有一个能抽象掉这些复杂性的接口,哪怕取款的体验都能像Layer-1一样。免信任性
OK,那么,OptimisticRollup是免信任的吗?一句话:是的。只要用户自己注意,那么使用Rollup的方式就是严格免信任的;而且即使他们不是那么小心,Rollup的安全保证也仍然很强。想要消除信任风险的话,你可以做一个验证者,亲自动手验证有没有人在搞,有的话就把TA揪出来。就相当于另外运行一些软件,这些软件在每个挑战期必须运行至少一次。即使你自己不运行验证者程序,欺诈交易也只有在所有验证者都参与犯罪且相互串通的时候才能成功。换句话来说,只要有一个诚实验证者——可以是另一个用户、某个交易所、某个应用的开发者、某个区块浏览器、某个钱包软件供应方,甚至是某个地下室里的一个匿名少年——站了出来;又或者,即使所有参与者都是恶意的,只要他们不是完全相互勾结,欺诈就不能成功,Rollup侧链就是安全的。一旦欺诈行为被证实,恶意参与者的保证金将被罚没,一部分将会交给证明方作为奖励;这样就能激励大家保持诚实,并为不诚实的行动施加负激励。开发者视角
转回应用开发者的视角,可以惊喜地发现,开发和部署Rollup化dApp的体验与开发主网dApp的体验在很大程度上是完全一样的。开发者工具和依赖库,如Truffle、web3、ethers.js,也完全可以重用在Rollup应用的开发中。此外,Rollup侧链上的合约也可以用Solidity来写,只有少量限制。Rollup化应用在设计和构思上要面对的最大区别乃是可组合性问题,跟DeFi应用也格外相关。可组合性挑战
DeFi应用的一个著名特性就是这些应用彼此之间能相互组合的能力,即直接且无需许可地整合不同金融服务的能力。这种激进的互相联通性对于Layer-1上的以太坊合约来说是“完全免费”的,当然,其负面效果就是可扩展性有个瓶颈。当我们将应用活动迁移到一个独立的Layer-2环境中时,跨越不同Layer-2环境的互操作性就不存在了,这就是我们要面对的主要挑战。
借用一个类比:如果说Layer-1应用是室友,那么放在不同Rollup侧链上的应用就是同在一个街区、但住在不同房子里的朋友。他们的居住环境倒是没那么挤了,但想要聊点什么、做些计划,就不像共享一个空间时那么容易了。一个例子是PoolTogether,它是一种利用DeFi产品的无损彩票。PoolTogether的合约管理着一个随机的彩票开奖程序,和一些来源各不相同的资金;这些资金是Compound借贷资金市场上产生出来的利息。Compound是另一个应用,而这些资金的形式是Dai,这又是由另一个合约发行的。这种相互联通性在三个Layer-1应用之间是完全无摩擦的。但如果这三个合约分别在不同的Rollup链上,那会怎么样?把像DAI这样的资产从一条Rollup侧链上迁移到另一条侧链上不是那么难,而且很像在两个普通的Layer-1合约之间转移资产。但是,购买一张PoolTogether彩票就需要使用PoolTogether把资产存入Compound,此时如果这两个合约不在一条链上,那就无法用一笔交易来完成了。PoolTogether所在的侧链需要一种新方法来访问和“监听”Compound侧链上的状态更新。可以想象得到,在另一些使用场景中,两个合约可能都想要与对方双向交互的能力;在又一种场景中,可能就只需要一方获得另一方定期汇来的更新了。在这里,Rollup间通信的工具,很像是跨Layer-1区块链通信、或者在一个像Eth2的系统中跨分片通信的方法。一言以蔽之,它们是各有适用场景的不同方法,每一种都有自己底层的技术复杂性以及/或者用户体验上的牺牲,端看具体需求是什么。往细了讲就超出本文的范围了,但用户体验上的缺点常常包括这些:让用户等很长一段时间,直到交易得到确认;发布多笔交易来完成用户想要实现的一个操作。我们再把上面的类比变形一下:这些朋友们应该从一个房子跑到另一个房子去吗?还是靠打开窗户大声吼?或者,通过一些中介比如公共场所来传递信息,还是该直接用数字手段沟通?可能性有很多,但我只想说,在不同Rollup侧链间通信肯定不是那么简单。值得注意的是,跨Rollup通信还是比较简单的……很棒的是,跨分片和跨Rollup通信都比跨任意两条Layer-1区块链通信要简单,至少在一点上:前两者都有共享的参照系,在Eth2.0中是信标链,在Rollup方案中是底层的Layer-1。在另一些极端情况下,我们可以设想出一种方案:把一大堆应用都放到一条Rollup侧链上;这样一来,跨Rollup互操作性的复杂问题就消失了,Compound和PoolTogether可以自由地在同一个Layer-2环境中玩耍,就像在Layer-1中一样。这种愿景唯一的问题在于,它削弱了我们最开始想追求的可扩展性收益。Layer-2的可扩展性很大程度上来源于分摊和本地化工作量,如不加以分摊,则需要全局性的执行;单一一条繁忙的Rollup侧链也会变得更难验证,并把我们拉回到一开始想避免的那个问题。换句话来说,这样仅仅是从一间拥挤的房子里搬到另一间同样拥挤的新房子里,显然这非我们所愿。也许,理想的情形是折衷方案:能够从可组合性中获益的应用可以选择迁移到同一条Rollup侧链中,另求适当的工具与其它侧链沟通。
-应用可能会根据自身的需要而聚集在不同的Rollup,以维护紧密的沟通——就像人口的区域性聚集和城市化一样-终极而言,Layer-2的一大关键价值在于免信任的实验性,用户和应用可以基于服务以及自己预计需要的交互属性来选择本地环境,以此获得新功能和更低的手续费,同时缓解更大范围内的网络拥堵。就Layer-2方案而言,OptimisticRollup既能获得一些好处,又能保留一些核心的用户体验,是当前最有力的竞争者。而协助实现互操作性的方案是本阶段最重要的考量,因为可扩展性方案将变得可用、我们要走向去中心化金融演化的下一个阶段。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。