Optimistic Rollups 是一种 Layer-2 侧链方案,致力于减轻以太坊主链的负担,其基本理念是:在 Rollup 侧链上验证所有的交易,主链仅发布交易数据,并 “乐观地(optimistically)” 假设这些交易都是有效的,除非有人出来质疑。使用 Rollup 方案最大的好处是帮助用户减少 Gas 开销,这样就反过来提高了整个网络的每秒可处理交易量(至少是几百 TPS)。
去年的以太坊圈子里出现了两个新的流行语,一个跟应用层有关,是 “DeFi(去中心化金融)”,就是用智能合约以免信任(或至少是信任最小化)的方式来提供传统金融服务的替代方案;另一个出现在可扩展性协议设计领域,是研究人员为之欢呼的 “Optimistic Rollup”,这是一种 Layer-2 设计方案,看起来颇有前景,而不只是昙花一现(如果你信得过我们这些 Layer-2 狂热粉丝的话)。
今年(2020 年),一个生机勃勃的 DeFi 生态正在形成,Rollup 方案也在推向主网的道路上,人们自然而然会问:两者能够结合吗?
我们能够使用 Rollup 方案来扩展 DeFi 生态系统吗?
一句话:没问题!
当然,意料之中的事情是,还是有一些挑战要克服。
Optimistic Rollups 是一种 Layer-2 侧链方案,致力于减轻以太坊主链的负担,其基本理念是:在 Rollup 侧链上验证所有的交易,主链仅发布交易数据,并 “乐观地(optimistically)” 假设这些交易都是有效的,除非有人出来质疑。
使用 Rollup 方案最大的好处是帮助用户减少 Gas 开销,这样就反过来提高了整个网络的每秒可处理交易量(至少是几百 TPS)。交易本身变得更便宜也意味着:原来因消耗太多 Gas 而没有机会出现的应用,比如使用复杂密码学的隐私方案,现在也变得有可能使用了。因此,虽然 Rollup 方案本身并不提供隐私方面的好处,但它是开发隐私保护技术的合适基础。类似地,Rollup 方案本身也不能改善交易的时延(即交易速度),但它提供了一个很好的环境,让状态通道这种能提供 “准-即时确定性” 的方案能够开发出来。
Optimistic Rollup 处理数据的办法也给它带来了良好的简洁性,与其他 Layer-2 协议相比,这种简洁性非常突出。这一点的关键在于,它可以(也应该能)让终端用户的使用体验与使用 Layer-1 一般无二。类似地,对于开发者和协议设计者来说,他们惯用的工具和思维模型中的大部分都能沿用,当然,我们接下来也会讲到,围绕可组合性(composability),可能需要投入额外的工作来扫平一些障碍。
从用户这边来看,与某个 Rollup 侧链上的某个 dApp —— 无论是不是 DeFi 应用 —— 交互的体验跟使用 Layer-1 上的 dApp 没有分别。现在流行的钱包如 Metamask 和 the Burner wallet 都可支持使用,就像区块浏览器也能用来检测 Rollup 侧链上的活动一样。
使用 Rollup 化 dApp 的基本流程如下:
首先,用户向一条 Rollup 侧链存入一些资金(存入的资金可以是 ETH、ERC-20、ERC721,等等),这第一步跟许多 Layer-1 dApp 的使用体验是完全一样的,很多 dApp 都需要用户在使用之前先转入一些资金。这个阶段,用户可以使用自己惯用的钱包来发起交易;只要该 Rollup 侧链在设计上以审查抗性为优先,用户的这笔存入交易就跟发出一笔 Layer-1 交易完全一样 —— 既不需要更多的信任、不依赖于 Rollup 运营者的声誉乃至善良,也不会引入更多的审查风险和抢跑交易(front-running,指他人通过发出 Gas Price 更高的相同内容交易以争取优先被打包、抢先获得利益)风险。
当用户想把资产取回 Layer-1 上来之时,他们需要发起一笔特殊的取款交易。这里跟 Layer-1 使用体验就有一些区别了:Optimistic Rollup 的安全模型依赖于各方发起挑战的能力;因此,我们需要预出一段宽限期,让监控侧链获得的各方有时间证明其中的欺诈。这就意味着,一旦要求取款,用户就必须等,等到这些资金在 Layer-1 完全安全并且可访问;Rollup 的这一机制所提供的经济安全性由 Rollup 区块生产者的安全保证金下限和挑战期时长共同决定(Ed Felten 声称 3 个小时就足够了)。
话虽如此,我们的期望是用户很少(甚至根本不)需要走完这个宽限期。一些第三方可以在 Layer-1 上给你等值的资金(再减去一些手续费)、买下你等待退出的资金的所有权,让你立即就能使用资金,无需等待。因此,只要有这些流动性供应方、有一个能抽象掉这些复杂性的接口,哪怕取款的体验都能像 Layer-1 一样。
OK,那么,Optimistic Rollup 是免信任的吗?一句话:是的。
只要用户自己注意,那么使用 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 是另一个应用(而且在 PoolTogether 存在之前就先有了),而这些资金的形式是 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。
在另一些极端情况下,我们可以设想出一种方案:把一大堆应用(所有的 DeFi 应用)都放到一条 Rollup 侧链上;这样一来,跨 Rollup 互操作性的复杂问题就消失了,Compound 和 PoolTogether 可以自由地在同一个 Layer-2 环境中玩耍,就像在 Layer-1 中一样。
这种愿景唯一的问题在于,它削弱了我们最开始想追求的可扩展性收益。Layer-2 的可扩展性很大程度上来源于分摊和本地化工作量,如不加以分摊,则需要全局性的执行;单一一条繁忙的 Rollup 侧链也会变得更难验证,并把我们拉回到一开始想避免的那个问题。换句话来说,这样仅仅是从一间拥挤的房子里搬到另一间同样拥挤的新房子里,显然这非我们所愿。
也许,理想的情形是折衷方案:能够从可组合性中获益(或必需可组合性)的应用可以选择迁移到同一条 Rollup 侧链中,另求适当的工具与其它侧链沟通。 - (如上图)应用可能会根据自身的需要而聚集在不同的 Rollup,以维护紧密的沟通 —— 就像人口的区域性聚集和城市化一样 -
终极而言,Layer-2 的一大关键价值在于免信任的实验性,用户和应用可以基于服务以及自己预计需要的交互属性来选择本地环境,以此获得新功能和更低的手续费,同时缓解更大范围内的网络拥堵。
就 Layer-2 方案而言,Optimistic Rollup 既能获得一些好处,又能保留一些核心的用户体验,是当前最有力的竞争者。而协助实现互操作性的方案是本阶段最重要的考量,因为可扩展性方案将变得可用、我们要走向去中心化金融演化的下一个阶段。
(完)
(文内有许多超链接,可点击左下 ”阅读原文“ 从 EthFans 网站上获取)
原文链接:
https://bankless.substack.com/p/when-defi-meets-rollup
作者: Daniel Goldman
翻译: 阿剑
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!