Layer 2 适合通用拓展,而 Layer 3 则更适合那些特定用途的应用。
原文标题:《Layer3 – Ethereum 生态新发动机》
原文:LuozhuZhang
编译:Crush
我对于 Layer 3 的一些想法,是受到特定应用链(application-specific blockchains)的启发而产生的,例如 dydx。
有很多的 dApps(不管是现存的,还是未来的)它们需要的是一条区块链,而不是一个合约。(例如 100% 链上游戏 Dark Forest 以及 Topology)
译者注:Dark Forest 是一款基于零知识证明技术 ZK-SNARKS 构建的去中心化实时战略(RTS)游戏;Topology 作为 StarkNet 生态项目,致力于为链上游戏、NFT 和去中心化创新协议构建 Fountain 引擎。关于应用链,可以在《应用链的机遇和风险》这篇文章了解更多,欢迎阅读。
dApp 的选择
一个 dApp 想要成为一条区块链,可以有以下几种选项:
1、你可以选择开发一个 Rollup(ZK Rollups 或者 Optimistic Rollups)
优势是你可以继承以太坊的生态(用户),还有它的安全性,但是对于一个 dApp 团队来说,Rollup 的开发费用显然过高。
2、你可以选择 Cosmos、Polkadot 或者是 Avalanche
开发的费用会更低(例如 dydx 就选择了 Cosmos),但是你将失去以太坊的生态(用户),以及安全性。
我们做一个最坏的假设,你选择自己开发一个 Layer 1 区块链,尽管费用很高(因为你需要设计自己的去中心化机制,在不牺牲效率的前提下保证一个充足的节点数量),但是却能拥有最高的主权。
让我们来对比一下三种情况:
- 难度 / 费用:Alt-L1 > Rollup > Cosmos
- 安全性:Rollup > Cosmos > Alt-L1
- 生态 / 用户:Rollup > Cosmos > Alt-L1
- 主权:Alt-L1 > Cosmos > Rollup
译者注:这里的 Alt-L1 是指替代 Layer 1,即那些想要成为「以太坊杀手」的公链,如 Solana, Avalanche。
Layer 3 的可能性
让我们来思考一下这个情形:作为一个 dApp,我现在希望继承以太坊的生态(用户),以及它的安全性,但是同时我又不想只做一个合约,那该怎么办呢?
首先,我不会选择 Cosmos 或者 Polkadot,我也不会选择 Alt-L1,那我只能选择 Rollups 了。
但是开发一个 L2 rollup 又非常贵,要如何解决这个问题呢?
我脑袋里冒出的第一个想法就是,利用 L3 SDK 开发一个应用专用的 Rollup(application-specific rollup),即 Layer 3。
说明:这里讨论的 Layer 2 以及 Layer 3 的 SDKs 主要是基于 ZK Rollups,而不是 Optimistic Rollups。
因为 Optimistic Rollups 的欺诈验证,存在一个 7 天的存取等待期限,这提高了技术上的复杂性。
我认为 Layer 2 适合通用拓展,而 Layer 3 则更适合那些特定用途的应用。
以太坊的创始人 Vitalik 最近也写了一篇文章,来探讨 Layer 3 存在的意义。
文章提到了 Starkware 的「分形扩容(Fractal Scaling)」概念,Vitalik 同样也认为 Layer 3 存在以下三种类型是合理的:
- 自定义功能。最简单的例子,就是加入一些隐私需求;
- 特定用途的应用(自定义拓展性)。例如非 EVM 处理逻辑(一些完全放在链上的游戏),以及特定数据的压缩优化等;
- 不同的安全假设(自定义安全性)。举个例子,Validium(弱信任拓展)使用了 zk-proof,但是数据可用性(Data Availability)却不在链上。这样做虽然失去了一些安全性,但是却可以达到更高的 TPS(9000 TPS)。
译者注:Validium 和 Rollups、侧链这些一样,都是以太坊扩展性解决方案的一种。
和 ZK Rollups 将数据可用性放在链上不同,Validium 将其放在链下,以实现相当高的交易吞吐量,Immutable X 就是采用的 Validium 模式。
总结
无论如何,我自己是一直在思考 Layer 3 的可行性的,因为有太多的 dApps 更适合成为一条链,而不仅仅是一个智能合约。
所以 Layer 3 技术很有可能会为以太坊或者说是区块链,开辟一个新的空间,就像 Rollups 技术那样。
但是目前还有很多的技术细节需要去解决,这还需要时间。
例如,我们有了 Layer 2,是否还真的需要 Layer 3?如何去设计 Layer 3 的机制呢?(证明者、数据可用性、定序器等等),以及最后如何设计一个超级易用的 Layer 3 SDK ?