原文作者: nanfengpo
原文标题: Rollup as a Service: Opportunities and Challenges
Cosmos 和 Polkadot 采用多链结构的扩展方案。他们的区块链 SDK,Tendermint 和 Substrate,被许多项目用于定制自己的区块链。这些区块链使用跨链协议,如 Cosmos IBC[1]、Polkadot XCM [2] 和 bridges[3] 来进行互动。然而,这些协议很难保证高安全性,这导致了频繁的黑客窃取。因此,跨链协议没有带来预期的效果,区块链之间仍保持相对独立。
From Cosmos Network - Internet of Blockchains[4] and Getting Started · Polkadot Wiki[5]
后来,出现了一种更安全的扩展技术,称为 rollup。rollup 将第2层的交易压缩成一个“批次”,上传到第1层,并通过欺诈证明(如 Optimistic-rollup)或有效性证明(如 ZK-rollup)证明第1层的状态转换的有效性。由于数据的可用性和状态的有效性在第1层得到验证,rollup 获得了与第1层相同的安全水平,确保资产可以在第1层和第2层之间安全转移。
到目前为止,许多 rollup 项目,如 Arbitrum、Optimism、ZkSync 和 StarkNet 都已经在使用。除了这些通用的 rollup,还出现了一些特定应用的 rollup,包括基于 StarkEx rollup SDK[6] 的 dYdX(订单簿 DEX)和 DeversiFi(AMM DEX)等。虽然 rollup 技术还没有完全发展起来,掌握这种技术的团队也不多,但市场上对这种技术的需求仍然很强烈。
通用型和特定应用型 rollup 来自 https://l2beat.com/[7]
rollup 提供了一个独立的执行环境,具有高 TPS、低 Gas 和从第1层访问所有资产的能力,这有助于区块链上的应用从 DeFi 扩展到更普遍的领域,如游戏和社交网络。我们预计 rollup 将逐渐成为一种提供给 Web3 应用程序的服务,即 Rollup as a Service(Raas)。一些项目现在正朝着这个方向发展。以太坊 以 rollup 为中心的路线图[8] 和 StarkNet 的 Layer 3[9] 架构都展示了特定应用的 multi-rollup 未来。
StarkNet 的架构描述,采用了 特定应用的 multiple rollup 作为 Layer 3,来源 Medium [10]
建立 RaaS 的挑战
rollup 在提供 RaaS 方面仍然面临以下挑战。
工程方面
首先,让我们来谈一谈 rollup SDK。人们可以在 SDK 的基础上快速部署一些配置和启动 rollup。为避免重新发明车轮,开源的 rollup 是 SDK 开发的更好选择。对于 Optimistic-rollup,Arbitrum 和 Optimism 都是开源的。从 L2beat 那里,我们可以看到 Metis 和 Boba 都是在 Optimism 的代码基础上开发的。相比之下,ZK-rollup 的开源程度不高。ZkSync 发布了v1版的完整代码[11],但v2版只有合约代码[12](嵌入了 zkEVM)。StarkEx 只发布了合约代码[13],并通过一个封闭的源代码向第三方提供其他模块。StartNet 只提供 Cairo 的代码[14]。
尽管 Optimistic-rollup 系统拥有更成熟的代码库和对 EVM 更好的支持,但欺诈证明的固有特性使它们在最终性和安全性方面远远落后于 ZK-rollup 系统。ZK-rollup 第2层的交易在第1层被证明后立即完成,而 Optimistic-rollup 第2层的交易由于有挑战期,需要几天时间才能完成。另一方面,Optimistic-rollup 需要更多的安全假设:至少 1-out-of-N 诚实操作者来保证欺诈证明提交,有一个抗审查的第1层来保证欺诈证明接受。
总而言之,我们现在就可以在现有的开源代码基础上快速建立一个 Optimistic-rollup SDK,但从长远来看,ZK-rollup SDK 似乎更有吸引力。当然,除了代码库的问题,ZKVM 的设计,即 ZKP 可验证的智能合约,也是迫切需要的。目前,各种 ZKVM 解决方案正在开发中。每个解决方案的方法仍然不统一。
一图比较 ZKVM,来源:Ye Zhang’s talk An overview of zkEVM[15]
性能方面
如前所述,分批交易需要以 rollup 方式发送到第1层,因此 rollup 的 TPS 受限于第1层的存储空间,也就是数据可用性[16](DA)问题。以太坊已经提出了一系列的第1层存储扩展解决方案,包括 EIP-4488、Proto-Danksharding 和完整的 Danksharding(目前正在寻求提案[17])。除了第1层的扩展,许多项目如 Celestia 和 Polygon Avail 也在尝试扩大第2层的存储容量。然而,这些解决方案的安全性和易用性仍需进一步研究。
EIP-4488 和 Proto-danksharding 将如何增加区块大小,来源:Vitalik’s Proto-Danksharding FAQ[18]
在 ZK-rollup 方面,TPS 还受到 ZKP 计算速度的限制。Paradigm 和 6block 在 GPU、FPGA 和 ASIC 上有不同的硬件选择来加速计算。此外,6block 比较了几种 ZKP 分布式计算的软件架构,包括矿池、证明聚合和 DIZK。ZPrize[19] ,一个即将到来的竞赛,也激励开发者找到有价值的解决方案来加速 ZKP 计算。
确保 rollup 服务的高可用性是另一个关键问题。目前市场上的 rollup 服务几乎都是中心化的,也就是说,只有特定的运营商可以向第1层提交批次和证明。这是一个脆弱的设计,因为 SPOF(单点故障)将很容易导致服务不可用。由于软件错误[20]和硬件故障[21],Arbitrum 已经多次遭受了数小时的停机。许多项目都在致力于去中心化 rollup 以避免 SPOF,包括 zkSync[22]、StarkNet[23]、Polygon Hermes[24]、PoVP[25] 和 taikocha.in[26]。
经济模式
RaaS正在考虑应用一个好的经济模式。目前,服务提供商的利润主要来自于第1层和第2层之间的交易费差距,即从第2层收取费用作为收入,向第1层支付费用作为成本。Optimism 已经发行了治理代币[27],但收入仍不足以维持开支。
rollup 和它们的费用,来自 https://l2fees.info/[28]
现有的大多数 rollup 是建立在区块链上的第三方服务,所以它们的主要收入仅仅来自于交易费。然而,我们可以跳出这种思维模式,将 rollup 视为区块链提供的原生服务。就像 Cosmos 和 Polkadot 的设计一样,整个系统包含一个区块链和附着在区块链上的多个 rollup,形成一个具有无限可扩展性的去中心化网络。通过这种方式,网络可以用相同的原生代币奖励第1层区块链验证者和第2层 rollup 运营商。这个想法类似于 Polynya 提出的 shrined rollup[29],值得进一步研究。
功能方面
与 Cosmos 和 Polkadot 的跨链协议一样,当一个区块链上部署了多个 rollup 时,cross-rollup 协议是必要的。用户也可以从第1层提取他们的资产,并将其存入另一个 rollup,但这个过程需要在第1层支付额外的费用和更多的操作步骤。一些第三方 cross-rollup 桥[30]利用流动性池来帮助用户在 rollup 之间即时转移,但这些桥和跨链桥一样容易被窃取。
Vitalik 在《终局》[31]中描述的一个未来区块链架构,当中有 multiple rollup 和 cross-rollup 桥
理想情况下,区块链应该提供一个原生的 cross-rollup 桥,由其验证者维护以保证安全。此外,这样的桥最好支持从一个 rollup 到另一个 rollup 的同步消息调用,也就是说,一个 rollup 上的用户可以直接调用另一个 rollup 上的合约。这将最大限度地提高 multi-rollup 架构中的用户体验。这里的底层技术很复杂,但我们期待着它的出现。
结语
这篇文章描述了 RaaS,即为 DApps 提供 rollup 服务。显然,区块链将迎来 Web3 的 multi-rollup 未来。任何人都可以通过 SDK 快速启动他们的 rollup,并以高性能和低成本在 rollup 上运行应用程序。在讨论了 RaaS 可能面临的所有挑战后,我们最终提出了原生rollup 的想法,这将有助于区块链用其原生代币奖励 rollup 验证者,并提供一个由其验证者维护的 cross-rollup 桥。我们计划进一步仔细研究,并在未来的文章中详尽阐述。
参考链接
[1] https://ibc.cosmos.network/
[2] https://wiki.polkadot.network/docs/learn-crosschain
[3] https://wiki.polkadot.network/docs/learn-bridges
[4] https://v1.cosmos.network/intro
[5] https://wiki.polkadot.network/docs/getting-started
[6] https://starkware.co/starkex/
[7] https://l2beat.com/
[8] https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698
[9] https://medium.com/starkware/fractal-scaling-from-l2-to-l3-7fe238ecfb4f
[10] https://medium.com/p/7fe238ecfb4f
[11] https://github.com/matter-labs/zksync
[12] https://github.com/matter-labs/v2-testnet-contracts
[13] https://github.com/starkware-libs/starkex-contracts
[14] https://github.com/starkware-libs/cairo-lang
[15] https://drive.google.com/file/d/1SyOXq8CtoEOKplw0KxazAL_YySdpsP62/view
[16] https://hackmd.io/@vbuterin/sharding_proposal#Why-is-data-availability-important-and-why-is-it-hard-to-solve
[17] https://github.com/ethereum/requests-for-proposals/blob/e8eed947a35d966027f47dfdd6c556089228642d/open-rfps/das.md
[18] https://notes.ethereum.org/@vbuterin/proto_danksharding_faq
[19] https://www.zprize.io/
[20] https://medium.com/offchainlabs/arbitrum-one-outage-report-d365b24d49c
[21] https://offchain.medium.com/todays-arbitrum-sequencer-downtime-what-happened-6382a3066fbc
[22] https://docs.zksync.io/userdocs/decentralization.html
[23] https://community.starknet.io/t/starknet-decentralization-tendermint-based-suggestion/998
[24] https://ethresear.ch/t/proof-of-efficiency-a-new-consensus-mechanism-for-zk-rollups/11988
[25] https://ethresear.ch/t/a-design-of-decentralized-zk-rollups-based-on-eip-4844/12434
[26] http://taikocha.in/
[27] https://community.optimism.io/docs/governance/
[28] https://l2fees.info/
[29] https://twitter.com/epolynya/status/1511623759786307586
[30] https://newsletter.banklesshq.com/p/how-to-hop-between-chains
[31] https://vitalik.ca/general/2021/12/06/endgame.html