Multicoin创始人:细数模块化区块链的七大隐性成本
在过去两年里,关于扩展的争论范围逐渐缩小,最后集中在模块化与集成的核心问题上。
(请注意,加密领域用语经常将“单体”和“集成”系统混为一谈。在过去的40年里,堆栈各层的集成系统和模块化系统都存在很多技术争论。加密领域里的这种对话也应该通过同样的视角来构建;这绝非一场全新的争论)。
在考虑模块化与集成时,一个链可以做出的最重要的设计决策就是让应用程序开发人员承担多大的复杂性。区块链的客户是应用程序开发人员,因此设计决策最终应该考虑到他们的需求。
如今,模块化在很大程度上被誉为区块链扩展的主要方式。本文,我将从第一性原理出发质疑该假设,揭示模块化系统的隐性成本,并分享我过去六年来对这一争论的思考和结论。
1、模块化系统增加了开发人员复杂性
到目前为止,模块化系统最大的隐性成本是开发人员面临的复杂性。
模块化系统大大增加了应用程序开发人员必须管理的复杂性,无论是他们自己的应用程序(技术复杂性),还是与其他应用程序和状态块的交互(社会复杂性)。
在加密系统的背景下,我们今天看到的模块化区块链在理论上支持更大的专业化程度,但代价却是产生新的复杂性。这种复杂性——本质上是技术上和社会上的——正在向上传递给应用程序开发人员,最终使开发建设变得更加困难。
例如,拿OP Stack来说,它似乎是2023年8月领先的模块化框架。OP Stack迫使开发人员选入Law of chains(正如其名称所暗示的那样,它带来了很多社会复杂性),或者是独立分叉并管理OP Stack。这两种选择都给builder带来了大量的下游复杂性。如果你选择分叉走自己的路线,你是否会从其他生态系统参与者(CEX、法币入金等)那里获得技术支持?如果你选入Law of Chains,你在今天,甚至更重要的是,在明天给自己设置了什么样的规则和约束?
(图片来源:OSI模型)
Modern操作系统(OSes)是由数百个子系统组成的大型复杂系统。Modern OSes处理上图中的2-6层。这是集成模块化组件以管理堆栈带给应用程序开发人员复杂性的典型示例。应用程序开发人员不想处理第7层以下的任何东西,这正是OSes存在的原因:OSes管理下面各层的复杂性,这样应用程序开发人员就不必这样做了。因此,模块化本身不应该是目的,而应该是达到目的的一种手段。
当今世界上每一个主要的软件系统——云后端、OSes、数据库引擎、游戏引擎等——都是高度集成的,同时由许多模块化子系统组成。软件系统倾向于长期集成,以最大化性能并最小化开发人员面临的复杂性。区块链也不会有什么不同。
(顺便说一句,以太坊的主要突破是降低了2011-2014年比特币分叉时代出现的复杂性。模块化支持者经常强调开放系统互联(OSI)模型,认为数据可用性(DA)和执行应该分离;然而,这一观点被广泛误解。对手头问题有正确的优先项理解会导致相反的结论:使用OSI作为类比是集成系统而非模块化系统的论据。)
2、模块化链不能更快地执行代码
根据设计,“模块化链”的通用定义是数据可用性(DA)和执行相分离:一组节点执行DA,而另一组(或多组)执行执行。节点集之间不必有任何重叠,但它们可以重叠。
在实践中,分离DA和执行并不能从本质上提高两者的性能;最终,世界上某个地方的某些硬件必须执行DA,某个地方的某些硬件必须执行执行。分离这些功能不会提高任何一方的性能。然而,分离可以降低计算成本,但只能通过中心化执行来实现。
同样,值得重申的是:无论是模块化还是集成架构,某处的某些硬件必须完成工作,并且将DA和执行推送到单独的硬件上,本质上既不会让系统提速也不会增加系统的整体性能。
一些人认为,模块化允许大量EVM以rollup方式并行运行,从而使执行能够水平扩展。虽然这在理论上是正确的,但这个说法实际上强调了EVM作为单线程处理器而非在扩展总系统吞吐量的情况下解决DA和执行的基本前提。
模块化本身并不能提高吞吐量。
3、模块化增加了用户交易成本
根据定义,每个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表现最佳。资产账本越多,应用程序开发人员必须管理的复杂性就越高,用户要承担的成本也就越多。
4、App rollup不能为开发人员创造新的盈利机会
App链/rollup的支持者认为,激励机制将引导应用开发人员构建rollup,这样他们就可以为自己的代币捕获MEV。然而,这种想法是有问题的,因为运行app rollup并不是将MEV捕获回应用层代币的唯一方法,而且在大多数情况下,这不是最佳方法。应用层代币可以简单地通过在通用链上的智能合约中进行逻辑编码,将MEV捕获回自己的代币。让我们来看几个例子:
(1)清算——如果Compound或Aave DAO想要获取清算机器人的部分MEV,他们可以更新各自的合约,支付当前清算人路由到DAO的费用的一定百分比。不需要新链/rollup。
(2)Oracle——Oracle代币可以通过提供BRaaS来捕获MEV。除了价格更新之外,oracle还可以绑定任何保证在价格更新后立即运行的链上交易。因此,oracle可以通过向搜寻者、区块构建者等提供BRaaS来获取MEV。
(3)NFT铸造——NFT铸造充斥着恶意机器人。这可以简单地通过一个逐渐降低的利润再分配编码来缓解。例如,如果有人试图在NFT铸造的两周内转售他们的NFT,那么100%的收入可以被重新捕获回NFT创建者或DAO。这个比例会随时间变化而变化。
对于将MEV捕获到应用层代币,没有通用答案。然而,只要稍加思考,应用程序开发人员就可以轻松地将MEV捕获回通用链上自己的代币中。启动一个全新的链是完全没有必要的,这会给开发人员带来额外的技术和社会复杂性,并给用户带来更多的钱包和流动性挑战。
5、App rollup不能解决应用间拥塞问题
许多人认为,app链/ rollup可以确保特定应用不受其他链上活动(如流行的NFT铸造)造成的gas峰值的影响。这种观点一部分是正确的,但大部分是错误的。
这个问题之所以一直存在,主要是因为EVM的单线程特性,而不是因为DA和执行没有分离。所有的L2都向L1支付费用,L1的费用可以随时增加。在今年早些时候的meme币热潮中,Arbitrum和Optimism上的交易费超过了10美元。最近,在Worldcoin发布后,Optimism的费用飙升。
解决费用飙升的唯一方法是:既要最大化L1 DA,又要使费用市场尽可能细化:
如果L1的资源受到限制,那么各个L2的使用高峰将会影响到L1,这将给所有其他L2带来更高的成本。因此,app链/rollup也不能幸免于gas费飙升。
许多EVM L2的共存只是试图将费用市场本地化的一种原始方式。它比将所有内容放在单个EVM L1中要好,但不能从第一性原理出发解决核心问题。当你认识到解决方案是将费用市场本地化时,逻辑端点是各状态块的费用市场(而不是各L2的费用市场)。
其他链已经得出了这个结论。Solana和Aptos都自然而然地将收费市场本地化。这需要多年来对各自的执行环境进行大量的工程工作。大多数模块化的支持者严重低估了解决工程难题的重要性和难度,这些问题使超级本地收费市场成为可能。
通过启动许多资产账本,开发人员自然会增加技术和社会复杂性,而不会释放真正的性能收益,即使在其他应用推动交易量增加的时候亦如此。
6、灵活性被高估
模块化链的支持者认为模块化架构更加灵活。这种说法显然是正确的。但目前还不清楚这是否是重要的。
六年来,我一直在努力寻找这样的应用程序开发人员,他们所需的灵活性是有重大意义的,是通用L1无法提供的。但到目前为止,除了三个非常具体的用例之外,还没有一个清晰的表述可以说明灵活性为什么重要,也没有说明它如何可以直接帮助扩展。我发现的关于灵活性很重要的三个具体用例如下:
(1)利用“热”状态的应用程序。热状态是一些操作的实时协调所必需的状态,但最终不会在链上永久提交。下面是热状态的几个例子:
-- DEX(如dYdX和Sei)中的限价订单(许多限价订单最终被取消)。
-- 实时协调以及dFlow的订单流交付识别(dFlow是一种协议,用于促进做市商和钱包之间的去中心化订单流市场)。
-- Pyth之类的oracle(一个低延迟的oracle)。Pyth是一个独立的SVM链。Pyth产生了如此多的数据,以至于核心Pyth团队决定最好将高频价格更新发送到一个独立的链,然后根据需要使用Wormhole将价格桥接到其他链。
(2)更改共识的链。这方面最好的例子是Osmosis(其中所有交易在发送给验证者之前都是加密的)和Thorchain(根据所付费用对区块内的交易进行优先级排序)。
(3)需要以某种方式利用阈值签名方案(TSS)的基础设施。这方面的例子有Sommelier、Thorchain、Osmosis、Wormhole和Web3Auth。
除了Pyth和Wormhole之外,上面列出的所有示例都是使用Cosmos SDK构建的,并且作为独立链运行。这充分说明了Cosmos SDK在所有三个用例中的质量和可扩展性:热状态、共识修改和阈值签名方案(TSS)系统。
然而,上述三部分中的大多数项目都不是app,而是基础设施。
Pyth和dFlow不是app,它们是基础设施。Sommelier(链条,而不是收益优化前端)、Wormhole、Sei和Web3Auth都不是app,它们是基础设施。而那些面向用户的app都是一种特定类型:DEX(dYdX、Osmosis、Thorchain)。
六年来,我一直在询问Cosmos和Polkadot的支持者,他们提供的灵活性释放了哪些用例。我认为有足够的数据可以做出如下推断:
首先,基础设施示例不应该以rollup的形式存在,因为它们要么产生太多的低价值数据(例如,热状态,热状态的重点是数据没有提交回L1),要么因为它们执行一些有意与资产分账本上的状态更新垂直的功能(例如,所有TSS用例)。
其次,我所看到的唯一一种能够有效改变核心系统设计的应用便是DEX。这是有道理的,因为DEX充斥着MEV,而且从定义上讲,通用链无法匹配CEX的延迟。共识是交易执行质量和MEV的基础,因此基于对共识的改变,DEX自然就有很多创新机会。然而,正如本文前面所指出的,现货DEX的主要输入是正在交易的资产。DEX之间会竞争资产,因此也竞争资产发行人。在这种框架下,独立的DEX链不太可能获取成功,因为资产发行人在发行资产时考虑的主要变量不是DEX相关的MEV,而是通用智能合约功能以及将该功能纳入应用程序开发人员各自的app中。
然而,这种DEX竞争资产发行人的框架与衍生品DEX无关,衍生品DEX主要依赖于USDC抵押品和oracle喂价源,并且本质上必须锁定用户资产以担保衍生品头寸。因此,在某种程度上,独立的DEX链是有意义的,它们最有可能适用于以衍生品为重心的DEX,如dYdX和Sei。
相反,让我们来考虑一下目前存在的跨通用集成L1的app。例如:游戏、Audius、DeSoc系统(如Farcaster和Lens)、DePIN协议(如Helium、Hivemapper、Render Network、DIMO和Daylight)、声音、NFT交易等。这些都没有特别受益于共识更改带来的灵活性,它们各自的资产账本都有相当简单、明显的共同需求:低费用、低延迟、访问现货DEX、获取稳定币以及法币入金渠道(如CEX)。
我相信我们现在有足够的数据可以在一定程度上自信地说,绝大多数面向用户的应用程序都具有与上述相同的需求。虽然一些应用程序可以通过自定义对其他变量进行优化,但是这些自定义经利弊权衡通常是不值得的(更多的桥接、更少的钱包支持、更少的索引/查询提供商支持等)。
启动新的资产账本是实现灵活性的一种方式,但它却很少增加价值,而且几乎总是为应用程序开发人员创造技术和社会复杂性的同时获得的收益却微乎其微。
7、扩展DA不需要再质押
你还会听到模块化支持者探讨在扩展背景下的再质押。这是模块化链支持者提出的最值得商榷的论点,但值得关注。
它大致指出,由于再质押(例如,通过像EigenLayer这样的系统),加密生态系统作为一个整体可以无限次地再质押ETH,为无限数量的DA层(例如,EigenDA)和执行层提供支持。因此,在确保ETH增值的同时,可扩展性在各个方面都得到了解决。
尽管在现状和理论上的未来之间还存在大量的不确定性,但我们可以理所当然地认为所有分层假设都像宣传的那样。
目前以太坊的DA约为83 KB/s。在今年晚些时候发布EIP 4844后,将翻一番,约为166 KB/s。EigenDA虽然采用了不同的安全假设(并非所有ETH都将再质押回EigenDA),但其增加了额外的10MB/s。
相比之下,Solana今天提供的DA约为125 MB/s(每区块32,000个分片,每分片1,280个字节,每秒2.5个区块)。Solana比以太坊和EigenDA效率高得多,因为其Turbine区块传播协议,该协议已经问世3年了。此外,Solana的DA采用尼尔森定律(Nielsen’s Law)将随时间的推移而扩展(与摩尔定律不同,其在十年前就因单线程计算而过时了)。
有很多方法可以通过再质押和模块化来扩展DA,但是这些机制在今天是完全没必要的,而且会带来很大的技术和社会复杂性。
8、为应用程序开发人员而建设
经过多年思考,我得出的结论是:模块化本身不应该是一个目标。
区块链必须服务于区块链用户——也就是应用程序开发人员——因此,区块链应该在基础设施级别抽离出复杂性,以便企业家可以专注于开发建设世界一流的应用程序。
模块化构建块很棒。但是,构建成功技术的关键是弄清楚要整合堆栈中的哪些部分,以及将哪些部分留给其他人。就目前而言,集成DA和执行的链本质上提供了更简便的终端用户和开发者体验,最终将为一流的应用程序打下更好的基础。
微信扫描关注公众号,及时掌握新动向
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场