来源:Multicoin capital
作者:Kyle Samani
编译:Techub News-Kiwi
编辑:Techub News-Junge
编者按:本文是对《技术可扩展性创造社会可扩展性》一文的精神续作。
过去两年中,关于扩展性的争论已经集中到模块化与集成这一核心问题。(注意,加密领域的话语通常会混淆“单片”和“集成”系统。)
在思考模块化与集成时,链可以做出的最重要的设计决策是向应用程序开发人员公开堆栈的复杂性。区块链的客户是应用程序开发者,因此设计决策终将为他们考虑。
如今,模块化在很大程度上被誉为区块链可扩展的主要方式。在本文中,我将从第一性原理出发对这一假设提出质疑,揭示模块化系统的文化神话和隐藏成本,并分享我在过去六年里思考这场辩论而得出的结论。
模块化增加了开发者的复杂性
模块化系统最大的隐藏成本是开发者复杂性的大幅增加。模块化系统大大增加了应用程序开发者必须管理的复杂性,无论是应用程序自身的背景下(技术复杂性),还是与其他应用程序和状态片段的接口时(社会复杂性)。
在加密系统的背景下,我们今天看到的模块化区块链虽然在理论上允许更多的专业化,但以增加新的复杂性为代价。这种复杂性——无论是技术性还是社会性——正在被传递到应用程序开发者,这最终使构建变得更加困难。
例如,考虑 OP Stack,截至2023年8月,它看起来是领先的模块化框架。OP 堆栈迫使开发人员选择加入链条法则(正如其名称所暗示的那样,它带来了很多社会复杂性),或者在独立的基础上分叉并自行管理 OP 堆栈。这两种选择都给开发人员带来了大量的下游复杂性。如果你选择分叉走自己的路线,你是否会从其他生态系统参与者(CEX, 法币入口等)那里获得技术支持,这些参与者必须承担成本才能符合新的技术标准?如果你选择了链条法则,你在今天,甚至更重要的是,在明天给自己设置了什么规则和约束?

参考来源: OSL模型
现代操作系统(OS)是由数百个子系统组成的大而复杂的系统。现代OS处理上图中的第2-6层。这是将模块化组件集成以管理暴露给应用程序开发者的复杂性的典型示例。应用程序开发者不想处理第7层以下的任何事情,这正是操作系统存在的原因:操作系统管理下层的复杂性,这样应用程序开发人员就不必这样做了。因此,模块化本身不应该是目标,而应该是达到目的的手段。
当今世界上所有的大型软件系统——云后端、操作系统、数据库引擎、游戏引擎等——都是高度集成的,同时由许多模块化子系统组成。软件系统倾向于随着时间的推移而集成,以最大限度地提高性能和最小化开发者的复杂性。区块链也不会有什么不同。
(顺便说一下,以太坊的主要突破在于减少了2011-2014年比特币分叉时代出现的复杂性。模块化支持者经常引用开放系统互连(OSI)模型,认为数据可用性(DA)和执行应该分离;然而,这种论据被广泛误解。正确的理解问题的结论恰恰相反:将 OSI 作为类比是集成系统而不是模块化系统的论点。)
模块化链并没有提高代码执行速度
“模块化链”的通常定义是数据可用性(DA)和执行的分离:一组节点执行DA,而另一组(或多组)节点执行执行。节点集之间不必有任何重叠,但可以有。
实际上,分离DA和执行本身并不能提高任一方面的性能;归根结底,某个硬件必定要执行DA,某个硬件要执行执行。分离这些功能并不能增加任一功能的性能。但是,分离可以通过集中化执行来降低计算成本,但这也只是理论上成立。
同样值得重申的是:无论模块化还是集成架构,某个硬件必须完成工作,将DA和执行推到不同硬件并不能本质上加速任一方面或增加总体系统容量。
一些人认为模块化允许许多 EVM 以 Rollup 方式并行运行,这使执行可以水平扩展。虽然在理论上是正确的,但这个观点实际上强调了 EVM 作为单线程处理器的约束,而不是解决分离 DA 和执行执行情况下的总体系统吞吐量的基本前提。
模块化本身并不能提高吞吐量。
模块化增加了用户的交易成本
根据定义,每个 L1 和 L2 都是不同的资产分类账本,都有自己的状态。这些独立的状态片段可以相互通信,但会造成更大的延迟和更高的开发者和用户复杂性(即通过桥接,如 LayerZero 和 Wormhole)。
资产账本越多,所有账户碎片的全局状态就越多。这在许多方面对链和用户都非常不利。状态碎片化会导致:
更少的流动性导致更高的挂单差价
更多的 Gas 消耗总量(因为跨链交易本质上需要在至少两个资产账本上进行至少两次交易)。
跨资产账本的更多重复计算(从而降低总体系统吞吐量):当币安或 Coinbase 上的 ETH-USDC 价格变动时,套利机会在所有资产账本上的每个 ETH-USDC 池中都可用。(每当币安或 Coinbase 上的ETH-USDC价格变动时,会在各种资产账本上产生 10 多笔交易。由于状态碎片化保持价格一致是一种极其低效的区块链使用方式。)
重要的是要认识到,创建更多的资产账本将明确加剧这些维度的成本,特别是就 DeFi 而言。
DeFi的主要输入是链上状态(即谁拥有哪些资产)。随着团队启动应用链 / Rollup,它们自然会使状态碎片化,这对DeFi 来说是不利的,无论是对应用程序开发者管理复杂性(桥接,钱包,延迟,跨链MEV等),还是对用户(更大的价差,更长的结算时间)。
当资产在单个资产账本上发布并且交易在单个状态机内发生时,DeFi效果最好。资产账本越多,应用程序开发人员必须管理的复杂性就越高,用户必须承担的成本也就越多。
应用 Rollup 并没有为开发者创造新的变现机会
应用链 / Roullup 的支持者认为,激励将促使应用程序开发者构建Roullup,而不是在 L1 或 L2 上构建,以便他们可以通过自己的令牌捕获 MEV。然而,这种想法是有缺陷的,因为运行应用rollup并不是将MEV捕获回应用程序层代币的唯一方法,而且在大多数情况下,这不是最佳方法。应用层代币只需通过在通用链上的智能合约中编写相应逻辑,就可以将 MEV 捕获回到它们自己的代币中。让我们考虑几个例子:
1. 清算 - 如果 Compound 或 Aave DAO 想捕获部分当前流向清算机器人的 MEV,它们可以更新各自的合约,以将清算费的某个百分比支付给 DAO。不需要新的链/Rollup。
2. 预言机 - 预言机代币可以通过提供提供后台运行即服务(back-running-as-a-service)来捕获MEV。除了价格更新外,预言机还可以绑定任何保证在价格更新后立即运行的链上交易。因此,预言机可以通过向搜索者、区块构建者等提供后台运行即服务(back-running-as-a-service)来获取MEV。
3. NFT 铸造 - NFT 铸造充斥着抢跑机器人。这可以通过简单地编码递减利润再分享来解决。例如,如果有人在 NFT 铸造后两周内尝试转售其NFT,那么 100% 的收入可以被重新返还给 mint 的人或DAO。这个比例可以随时间变化。
对于将 MEV 捕获到应用程序层代币,没有通用的答案。然而,只要稍加思考,应用程序开发人员就可以轻松地将MEV 捕获回通用链上自己的代币。启动一个全新的链是完全没有必要的,这会给开发人员带来额外的技术和社会复杂性,并给用户带来更多的钱包和流动性挑战。
应用 Roullup 并不能解决跨应用拥塞问题
许多人认为应用链 / Roullup可以确保给定的应用不会受到其他链上活动(如热门NFT铸造)引起的Gas费峰值的影响。这种观点部分正确,但大部分是错误的。
这一直是一个问题,主要是因为 EVM 的单线程特性,而不是因为缺乏数据处理和执行的分离。所有的 L2 都向 L1 支付费用,L1 的费用可以随时增加。在今年早些时候的 Meme 币热潮中,Arbitrum 和 Optimism 的交易费用超过了10美元。最近,在Worldcoin 推出后,Optimism的费用飙升。
唯一的解决费用飙升的方法是:1)最大限度地提高L1 DA, 2)使费用市场尽可能细分
如果 L1 的资源受到约束,各个L2中的使用激增将反过来影响 L1,从而对所有其他 L2 施加更高的成本。因此,应用链 / Roullup 也无法避免汽油费飙升。
许多 EVM L2 共存只是一种粗糙的方式,试图使费用市场本地化。它确实优于将所有内容都放在单个 EVM L1 中,但不能从根本上解决核心问题。当你认识到解决方案是使每个状态片段都具有费用市场(而不是每个 L2 都有费用市场)时,逻辑终点就是每个状态片段都有自己的费用市场。
其他链已经得出了这个结论。Solana 和 Aptos 自然使费用市场本地化。这需要多年来针对各自的执行环境进行大量的工程工作。大多数模块化的支持者严重低估了解决硬工程问题的重要性和难度,这些硬工程问题使超本地收费市场成为可能。

参考来源: https://blog.labeleven.dev/why-solana
通过启动许多资产账本,开发人员自然会增加技术和社会的复杂性,而不会释放真正的性能收益,即使在其他应用程序推动交易量增加的时候也是如此。
灵活性被高估了
模块化链的支持者认为模块化架构更加灵活。这种说法显然是正确的。但目前还不清楚这是否重要。六年来,我一直在努力寻找需要通用L1无法提供的有意义的灵活性的应用程序开发人员。但到目前为止,除了三个非常具体的用例之外,还没有一个清晰的表述,说明灵活性为什么重要,也没有说明它如何直接帮助扩展。我认为灵活性很重要的三个具体用例是:
1. 利用“热”状态的应用程序。热状态是实时协调某些操作集所必需的状态,但最终不会永久提交在链上。热状态的几个例子:
DEX中的限价订单,如 dYdX 和 Sei (许多限价订单最终被取消)。
实时协调和识别订单流交付 dFlow (dFlow是一种协议,用于促进做市商和钱包之间的去中心化订单流市场)。
预言机,如 Pyth,它是一个低延迟的预言机。Pyth 作为独立的 SVM 链运行。Pyth 产生了如此多的数据,以至于核心 Pyth 团队决定最好将高频价格更新发送到一个独立的链,然后根据需要使用Wormhole将价格桥接到其他链。
2. 修改共识的链。这方面最好的例子是 Osmosis (其中所有交易在发送给验证者之前都是经过加密的)和Thorchain(根据支付的费用对区块内的交易进行优先级排序)。
3. 需要以某种方式利用阈值签名方案(TSS0的基础设施。这方面的例子有Sommelier, Thorchain, Osmosis, Wormhole和Web3Auth。
除了 Pyth 和 Wormhole 之外,上面列出的所有示例都是使用 Cosmos SDK 构建的,并且作为独立链运行。这充分说明了Cosmos SDK 在所有三个用例中的质量和可扩展性:热状态、共识修改和阈值签名方案(TSS)系统。
然而,上述三个部分中确定的大多数项目都不是应用程序。它们是基础设施。Pyth 和 dFlow 不是应用程序,它们是基础设施。Sommelier(链条,而不是收益优化前端)、Wormhole、Sei和Web3Auth 都不是应用程序,它们是基础设施。在这些面向用户的应用中,它们都是一种特定类型:DEX (dYdX, Osmosis, Thorchain)。
六年来,我一直在询问 Cosmos 和 Polkadot 的支持者,他们提供的灵活性带来了哪些用例。我认为有足够的数据可以推断出一些事情:
首先,基础设施示例不应该以 Rollup 的形式存在,因为它们要么产生太多的低价值数据(例如,热状态,热状态的全部意义是数据不会提交回L1),要么因为它们执行一些有意与资产账本上的状态更新正在交易的功能(例如,所有TSS用例)。
其次,我所看到的唯一一种能够有效改变核心系统设计的应用便是 DEX。这是有道理的,因为DEX充斥着MEV,而且从定义上讲,通用链无法与 CEX 的延迟相匹配。共识是交易执行质量和MEV的基础,因此基于对共识的改变,DEX自然有很多创新机会。然而,正如本文前面所指出的,现货 DEX 的主要输入是正在交易的资产。DEX 竞争资产,因此也竞争资产发行者。在这种框架下,独立的DEX链不太可能成功,因为资产发行者在发行资产时考虑的主要变量不是 DEX 相关的 MEV,而是通用智能合约功能以及将该功能纳入应用程序开发人员各自的应用程序中。
然而,这种 DEX 竞争资产发行者的框架与衍生品 DEX 无关,衍生品 DEX 主要依赖于 USDC 抵押品和预言机价格反馈,并且本质上必须锁定用户资产来抵押衍生品头寸。因此,在某种程度上,独立的 DEX 链是有意义的,它们最有可能适用于以衍生品为重点的 DEX,如 dYdX 和 Sei。
(注:如果您正在构建上述类别未涵盖的新型基础设施,或者是一个面向消费者的应用程序,它确实需要比通用的、集成的L1所能支持的更大的灵活性,请联系我们!我花了6年的时间才提炼出上述内容,我敢肯定这份清单并不完整。)
相反,让我们考虑一下目前存在的通用集成L1的应用程序。例如:游戏,Audius,DeSoc系统,如 Farcaster和Lens,DePIN协议,如Helium、Hivemapper、Render Network、DIMO和Daylight,Sound,NFT 交易所,以及更多。这些都没有特别受益于修改共识带来的灵活性,它们各自的资产账本都有一个相当简单、明显和共同的要求:低费用、低延迟、访问现货 DEX、访问稳定币以及访问法币(如CEX)。
我相信我们现在有足够的数据可以在一定程度上自信地说,绝大多数面向用户的应用程序都具有前面一段所列举的相同的通用需求集。虽然一些应用程序可以通过自定义对其他变量进行优化,但是这些自定义带来的权衡通常是不值得的(更多的桥接,更少的钱包支持,更少的索引/查询提供程序支持,减少直接联通法币通道,等等)。
推出新的资产账本是实现灵活性的一种方式,但它很少增加价值,而且它几乎总是以最小的最终收益为应用程序开发人员创造技术和社会复杂性。
扩展DA不需要重新质押
您还会听到模块化支持者在讨论扩展时提到重新质押。这是模块化链支持者做出的最具推测性的论点,但值得讨论。这些人认为认为,由于重新质押(例如通过 EigenLayer 等系统),加密生态系统作为一个整体可以无限次地重新质押ETH,为无限数量的数据处理层(例如EigenDA)和执行层提供动力。因此,在所有方面实现了可扩展性,同时确保 ETH 的价值获取。
尽管在现状和理论上的未来之间存在大量的不确定性,但我们理所当然地认为所有分层假设都像宣传的那样有效。目前以太坊的DA约为83 KB/s。随着今年晚些时候 EIP-4844 的推出,这个速度大约翻了一番,达到~166 KB/s。虽然采用了一组不同的安全假设(并非所有ETH都将重新质押给EigenDA),但EigenDA额外增加了10mb /s。
相比之下,Solana今天提供了大约125 MB/s的 DA(每个块32,000个碎片,每个碎片1280字节,每秒2.5个块)。Solana比以太坊和EigenDA更有效,因为它具有Turbine区块传播协议,该协议已经在生产中运行了3年。此外,Solana的DA随着时间的推移与尼尔森定律保持一致(与摩尔定律不同,摩尔定律在十年前就因单线程计算而过时了)。
有很多方法可以通过重新质押和模块化来扩展DA,但就今天而言这些机制是不必要的,并且会带来很大的技术和社会复杂性。
面向应用程序开发者进行构建
经过多年的思考,我认为模块化本身不应该成为目标。区块链必须为其客户服务,即应用程序开发者,因此区块链应屏蔽基础设施级别的复杂性,以便创业者可以专注于构建世界一流的应用程序。
模块化构建块很棒。但构建成功技术的关键是弄清楚哪些堆栈要集成,哪些要留给其他人。就目前而言,集成DA和执行的链提供了更简单的最终用户和开发人员体验,并将最终为一流应用程序提供更好的基础。
感谢Alana Levin、Tarun Chitra、Karthik Senthil、Mert Mumtaz、Ceteris、Jon Charbonneau、John Robert Reed和Ani Pai对本文提出的反馈。


