如今,模块化在很大程度上被誉为区块链扩展的主要方式。在这篇文章中,我将从基本原则出发质疑这种假设,揭示模块化系统的文化神话和隐藏成本,并分享我在过去六年中对这一辩论进行思考后得出的结论。
原文标题:The Hidden Costs of Modular Systems
原文作者:KYLE SAMANI
原文来源:multicoin.capital
编译:Kate, Marsbit
编者注:本文是《技术可扩展性创造社会可扩展性》的精神继承者。点击这里阅读。
在过去的两年里,关于扩展性的争论已经缩小,并集中在模块化与集成的核心问题上。
(请注意,加密领域的讨论经常将“单片”和“集成”系统混为一谈。在过去的40年里,关于集成系统和模块化系统在堆栈的每一层的争论历史丰富。这种对话的加密化身应该通过同样的视角来构建,这远不是一场新的辩论)。
在考虑模块化与集成时,链可以做出的最重要的设计决策是向应用程序开发人员公开堆栈的复杂性。区块链的客户是应用程序开发人员,因此设计决策最终应该为他们考虑。
如今,模块化在很大程度上被誉为区块链扩展的主要方式。在这篇文章中,我将从基本原则出发质疑这种假设,揭示模块化系统的文化神话和隐藏成本,并分享我在过去六年中对这一辩论进行思考后得出的结论。
模块化系统增加了开发人员的复杂性
到目前为止,模块化系统最大的隐性成本是开发人员的复杂性。
模块化系统大大增加了应用程序开发人员必须管理的复杂性,无论是在他们自己的应用程序的上下文中(技术复杂性),还是在与其他应用程序和状态块交互的接口上下文中(社会复杂性)。
在加密系统的背景下,我们今天看到的模块化区块链在理论上允许更多的专业化,但代价是创造新的复杂性。这种复杂性——本质上是技术上的和社会上的——正在向上传递给应用程序开发人员,这最终使构建变得更加困难。
例如,考虑OP堆栈,截至2023年8月,它似乎是领先的模块化框架。OP堆栈迫使开发人员选择加入链条法则(正如其名称所暗示的那样,它带来了很多社会复杂性),或者在独立的基础上分叉并管理OP堆栈。这两种选择都给构建器带来了大量的下游复杂性。如果你选择走自己的路线,你是否会从其他生态系统参与者(CEX, 法币入口等)那里获得技术支持,这些参与者必须承担成本才能符合新的技术标准?如果你选择了链条法则,你在今天,甚至更重要的是,在明天给自己设置了什么规则和约束?
现代操作系统(OS)是由数百个子系统组成的大型复杂系统。现代操作系统处理上图中的2-6层。这是集成模块化组件以管理通过堆栈向应用程序开发人员公开的复杂性的典型示例。应用程序开发人员不想处理第7层以下的任何东西,这正是操作系统存在的原因:操作系统管理下面层的复杂性,这样应用程序开发人员就不必这样做了。因此,模块化本身不应该是目标,而应该是达到目的的一种手段。
当今世界上每一个主要的软件系统——云后端、操作系统、数据库引擎、游戏引擎等——都是高度集成的,同时由许多模块化子系统组成。软件系统倾向于长期集成,以最大化性能并最小化开发人员的复杂性。区块链也不会有什么不同。
(顺便说一句,以太坊的主要突破是降低了2011-2014年比特币分叉时代出现的复杂性。模块化的支持者经常强调开放系统互连(OSI)模型,认为数据可用性(DA)和执行应该分开,然而,这一观点被广泛误解。对当前问题的正确一阶理解会导致相反的结论:使用OSI作为模拟是集成系统而不是模块化系统的论据。)
模块化链无法更快地执行代码
根据设计,“模块化链”的通用定义是数据可用性(DA)和执行的分离:一组节点执行DA,而另一组(或多组)执行执行。节点集不必有任何重叠,但它们可以。
在实践中,分离数据处理和执行并不能从本质上提高两者的性能,在一天结束的时候,世界上某个地方的某些硬件必须执行数据处理,某个地方的某些硬件必须执行执行。分离这些功能不会提高任何一个的性能。然而,分离可以降低计算成本,但只能通过集中执行来实现。
同样,值得重申的是:无论模块化还是集成架构,某些硬件必须在某个地方完成工作,并且将数据处理和执行推到单独的硬件上,本质上既不会加速也不会增加系统的总容量。
一些人认为,模块化允许许多EVM以Rollup方式并行运行,从而使执行能够水平扩展。虽然这在理论上是正确的,但这个评论实际上强调了EVM作为单线程处理器的约束,而不是在扩展总系统吞吐量的背景下解决分离数据处理和执行的基本前提。
模块化本身并不能提高吞吐量。
模块化增加了用户的交易成本
根据定义,每个L1和L2都是具有自己状态的不同资产账本。这些独立的状态块可以通信,尽管有更多的延迟和更多的开发人员和用户复杂性(即,通过桥,如LayerZero和Wormhole)。
资产账本越多,所有账户碎片的全局状态就越多。这对链和用户来说是都是可怕的。碎片状态导致
1.流动性减少,因此对投资者来说价差更高
2.更多的总gas消耗(因为根据定义,跨链交易需要在至少两个资产账本上至少进行两次交易)。
3.跨资产账本的更多重复计算(从而降低系统总吞吐量):当ETH-USDC的价格在Binance或Coinbase上变动时,所有资产账本的每个ETH-USDC池都有套利机会。(你可以很容易地想象这样一个世界:每当ETH-USDC价格在Binance或Coinbase上波动时,各种资产账本上就会有10多个交易。由于碎片化状态,保持价格一致是对区块空间的一种极其低效的使用。)
重要的是要认识到,创建更多的资产账本会明显地增加了所有这些方面的成本,特别是与DeFi相关的成本。
DeFi的主要输入是链上状态(即谁拥有哪些资产)。当团队启动应用链/Rollup时,他们自然会产生状态碎片,这对DeFi非常不利,无论是在管理应用程序开发人员(桥接,钱包,延迟,跨链MEV等)和用户的复杂性方面(更广泛的传播,更长的结算时间)。
当资产在单个资产账本上发布并且交易在单个状态机内发生时,DeFi效果最好。资产账本越多,应用程序开发人员必须管理的复杂性就越高,用户必须承担的成本也就越多。
应用Rollup不能为开发者创造新的盈利机会
应用链/Rollup的支持者认为,激励机制将引导应用开发者构建Rollup,而不是在L1或L2上,这样他们就可以将MEV捕获回自己的代币。然而,这种想法是有缺陷的,因为运行应用rollup并不是将MEV捕获回应用程序层代币的唯一方法,而且在大多数情况下,这不是最佳方法。应用层代币可以通过在通用链上的智能合约中编码逻辑,将MEV捕获回自己的代币。让我们考虑几个例子:
1.清算——如果Compound或Aave DAO想要获取清算机器人的部分MEV,他们可以更新各自的合约,以支付当前流向清算人并路由至DAO的一定比例的费用。不需要新的链/Rollup。
2.预言机(Oracle)——预言机代币可以通过提供后台运行即服务(back-running-as-a-service)来捕获MEV。除了价格更新之外,预言机还可以绑定任何保证在价格更新后立即运行的链上交易。因此,预言机可以通过向搜索者、区块构建者等提供后台运行即服务(back-running-as-a-service)来获取MEV。
3.NFT铸造——NFT Mint充斥着倒卖机器人。这很容易通过简单地编码将利润下降计入再分配来缓解。例如,如果有人试图在NFT Mint的两周内转售他们的NFT,那么100%的收入可以被重新返还给mint的人或DAO。随着时间的推移,该百分比可能会有所不同。
对于将MEV捕获到应用程序层代币,没有通用的答案。然而,只要稍加思考,应用程序开发人员就可以轻松地将MEV捕获回通用链上自己的代币。启动一个全新的链是完全没有必要的,这会给开发人员带来额外的技术和社会复杂性,并给用户带来更多的钱包和流动性挑战。
应用rollup无法解决跨应用程序拥塞问题
许多人认为,应用链/ rollup可以确保特定应用不受其他链上活动(如流行的NFT Mint)造成的gas峰值的影响。这种观点部分正确,但大部分是错误的。
这一直是一个问题,主要是因为EVM的单线程特性,而不是因为缺乏数据处理和执行的分离。所有的L2都向L1支付费用,L1的费用可以随时增加。在今年早些时候的Meme币热潮中,Arbitrum和Optimism的交易费用超过了10美元。最近,在Worldcoin推出后,Optimism的费用飙升。
解决费用飙升的唯一方法是:1)最大化L1 DA, 2)使费用市场尽可能细化。
如果L1的资源受到限制,那么各个L2的使用高峰将会影响到L1,这将给所有其他L2带来更高的成本。因此,应用链/ rollup也不能幸免于gas 峰值的影响。
许多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.需要以某种方式利用阈值签名方案(TSS)的基础设施。这方面的例子有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目前提供的DA大约为125 MB/s(每个块32,000个分片,每个分片1,280字节,每秒2.5个块)。Solana比以太坊和EigenDA效率高得多,因为它的涡轮块传播协议已经生产了3年。此外,Solana的DA随着时间的推移与尼尔森定律保持一致(与摩尔定律不同,摩尔定律在十年前就因单线程计算而过时了)。
有很多方法可以通过重新质押和模块化来扩展DA,但是这些机制在今天是完全不必要的,并且会带来很大的技术和社会复杂性。
为应用程序开发人员构建
经过多年的思考,我得出结论:模块化本身不应该是一个目标。
区块链必须服务于他们的客户,因此,区块链应该抽象基础设施级别的复杂性,以便企业家可以专注于构建世界级的应用程序。
模块化构建模块很棒。但是,构建成功技术的关键是弄清楚要整合堆栈中的哪些部分需要集成,以及将哪些部分留给其他人。就目前而言,集成DA和执行的链本质上提供了更简单的最终用户和开发人员体验,并最终将为一流的应用程序提供更好的基础。
感谢Alana Levin, Tarun Chitra, Karthik Senthil, Mert Mumtaz, Ceteris, Jon Charbonneau, John Robert Reed和Ani Pai对本文提供的反馈。
本文来自Marsbit,经授权后发布,本文观点不代表星空财经BlockGlobe立场,转载请联系原作者。