为什么 Solana 充满了 Prop AMM,而 EVM 却一片空白?
Blockbeats原文标题:Monad 主网发布后必看的 dApp
原文作者:@0xOptimus
原文翻译:叮当、Odaily星球日报
自有 AMM 迅速占据了 Solana 总交易量的 40%。为什么它们还没有出现在 EVM 上?
自有自动做市商 (Prop AMM) 正迅速成为 Solana DeFi 生态系统的主导力量,目前贡献了主要交易对 40% 以上的交易量。这些由专业做市商运营的流动性场所可以提供深度流动性和更具竞争力的定价。关键在于,它们显著降低了做市商被利用“过时报价”进行抢先套利的风险。

图片来源:dune.com
然而,他们的成功几乎完全局限于 Solana。即使在像 Base 或 Optimism 这样快速且低成本的 Layer 2 网络上,Prop AMM 在 EVM 生态系统中的存在也非常罕见。为什么它们没有在 EVM 上扎根呢?
本文主要探讨三个问题:Prop AMM 是什么、它们在 EVM 链上面临的技术和经济障碍,以及最终可能将它们带到 EVM DeFi 前沿的有前景的新架构。
什么是 Prop AMM?
专有 AMM 是一种自动化做市商,其中单个专业做市商主动管理流动性和定价,而不是像传统 AMM 那样由公众被动提供资金。
传统的 AMM(例如 Uniswap v2)通常使用公式 x * y = k 来确定价格,其中 x 和 y 代表池中两种资产的数量,k 为常数。在 Prop AMM 中,定价公式并非固定不变,而是频繁更新(通常每秒多次)。由于大多数 Prop AMM 的内部机制被视为“黑匣子”,外界无法得知它们使用的具体算法。然而,Obric 的 Sui 链上的 Prop AMM 智能合约代码是公开的(感谢 @markoggwp 的发现),其中不变量 k 取决于内部变量 mult_x、mult_y 和 concentration。下图展示了做市商如何持续更新这些变量。

需要澄清的一点是,Obric 定价曲线左侧的公式比简单的 x*y 更复杂。然而,理解 Prop AMM 的关键在于,它始终等于一个可变不变量 k,流动性提供者不断更新这个 k 来调整价格曲线。
回顾:AMM 如何确定价格?

在本文中,我们将多次提及“价格曲线”的概念。价格曲线决定了用户使用 AMM 进行交易时需要支付的价格,也是 Prop AMM 中流动性提供者持续更新的部分。为了更好地理解这一点,我们可以先回顾一下传统 AMM 的定价机制。
以 Uniswap v2 上的 WETH-USDC 池为例(假设无手续费)。其价格由公式 x * y = k 被动确定。假设池中有 100 WETH 和 400,000 USDC,则当前曲线点为 x = 100,y = 400,000,对应的初始价格为 400,000 / 100 = 4,000 USDC/WETH。由此得出常数 k = 100 * 400,000 = 40,000,000。
如果交易者希望购买 1 WETH,他们需要向池中添加 USDC,从而使池中的 WETH 数量减少到 99。为了保持乘积 k 不变,新的点 (x, y) 必须仍然位于曲线上,因此 y 必须变为 40,000,000 / 99 ≈ 404,040.40。这意味着交易者为 1 WETH 支付了约 4,040.40 USDC,略高于初始价格。这种现象被称为“价格滑点”。这就是为什么 x*y=k 被称为“价格曲线”的原因:任何可交易的价格都必须落在这条曲线上。
为什么流动性提供者选择 AMM 设计而不是中心化订单簿(CLOB)?
让我们解释一下为什么流动性提供者想要使用 AMM 设计来提供流动性。假设你是一位在链上中央限价订单簿 (CLOB) 上报价的做市商。如果你想更新报价,你需要取消并替换数千个限价订单。如果你有 N 个订单,更新成本是 O(N) 操作,这在链上既慢又贵。
但是,如果可以用一条数学曲线来表示所有报价呢?只需更新定义该曲线的几个关键参数,就可以将 O(N) 复杂度的操作转换为常数 O(1) 复杂度。
为了直观地展示“价格曲线”如何对应不同的有效价格区间,我们可以参考 Ellipsis Labs 创建的 SolFi——一个基于 Solana 的 Prop AMM。虽然其具体的价格曲线未知且隐藏,但 Ghostlabs 创建了一个图表,显示在特定 Solana slot(区块时间段)内,将不同数量的 SOL 兑换为 USDC 时的有效价格。每条线代表一个不同的 WSOL/USDC 池,表明多个价格层级可以共存。随着流动性提供者更新价格曲线,此有效价格图也会在不同 slot 之间发生变化。

图片来源:GitHub
这里的关键在于,只需更新少量价格曲线参数,流动性提供者即可随时动态调整有效价格分布,而无需逐一修改 N 个订单。这正是 Prop AMM 的核心价值主张——它使流动性提供者能够以更高的资本和计算效率提供动态且深度的流动性。
为什么 Solana 的架构非常适合 Prop AMM?
Prop AMM 是一个“主动管理”的系统,这意味着它需要两个关键条件:
1. 更新成本低
2. 优先执行
在 Solana 中,这两个方面是相互交织的:低成本的更新通常意味着更新可以优先执行。
但流动性提供者为什么需要这两点呢?首先,他们会根据库存变化或资产指数价格(例如中心化交易所价格)的波动,以区块链的速度持续更新价格曲线。在像 Solana 这样的高频链上,如果更新成本过高,实现高频调整将极具挑战性。
其次,如果流动性提供者无法将其更新的报价包含在区块顶部,其旧报价将被套利者“抢先交易”,从而导致不可避免的损失。如果没有这两个特性,流动性提供者就无法有效运营,用户将获得更糟糕的交易价格。
以 Solana 上的 Prop AMM HumidiFi 为例,根据 @SliceAnalytics 的数据,流动性提供者每秒最多更新其报价 74 次。

来自 EVM 的玩家可能会问:“Solana 的 slot 大约是 400ms,Prop AMM 如何在单个 slot 内多次更新价格?”
答案在于 Solana 的连续架构,它与 EVM 的离散区块模型有着根本的不同。
· EVM:交易通常在完整区块被提出并最终确认后按顺序执行。这意味着在中间发送的更新将在下一个区块中生效。
Solana:领导者验证者节点无需等待完整的区块;相反,它们会将交易分解成小数据包(称为“碎片”),并持续向网络广播。在一个 slot 内,可能会有多个交易所,但碎片 #1 中的价格更新会影响交换 #1,而碎片 #2 中的价格更新会影响交换 #2。
注:Flashblocks 与 Solana 的碎片 (Shred) 类似。根据 Anza Labs 的 @Ashwinningg 在 CBER 会议上的说法,该插槽每 400 毫秒 32,000 个碎片的限制相当于每毫秒 80 个碎片。与 Solana 的连续架构相比,200 毫秒的 Flashblocks 是否足够快以满足流动性提供者的要求仍是一个悬而未决的问题。
那么,为什么 Solana 上的更新如此便宜?又是什么导致它们被优先执行?
首先,虽然 Prop AMM 在 Solana 上的实现是一个黑盒,但有一个像 Pinocchio 这样的库可以优化 Solana 程序中 CU 的编写方式。Helius 的博客对此进行了精彩的解释。通过这个库,Solana 程序的 CU 消耗可以从大约 4000 个 CU 减少到大约 100 个 CU。

图片来源:github
现在我们来看第二部分。在更高的层面上,Solana 通过选择具有最高费用/计算单元比率(计算单元类似于 EVM 的 Gas)的交易来对交易进行优先级排序,类似于 EVM。
· 具体来说,如果使用 Jito,公式为 Jito Tip / Compute Units
· 否则:优先级 = (小费 + 基本费用) / (1 + CU 限制 + 签名 CU + 写锁 CU)
将 Prop AMM 更新的计算单元与 Jupiter Swap 进行比较,显然更新非常便宜,比例为 1:1000。
Prop AMM 更新:简单的曲线更新非常便宜。Wintermute 的更新低至 109 CU,总成本仅为 0.000007506 SOL

木星交换:通过木星路线的交换可以达到~100,000 CU,总成本为 0.000005 SOL

由于这一显著差异,流动性提供者只需为更新交易支付最低费用,实现比交易所高得多的费用/CU比率,确保更新在区块顶部执行,保护自己免受套利攻击。
为什么 Prop AMM 尚未登陆 EVM?
假设 Prop AMM 的更新涉及写入一个决定资产对价格曲线的变量。尽管 Solana 上的 Prop AMM 代码是一个“黑匣子”,流动性提供者希望对其策略保密,但我们可以使用这个假设来理解 Obric 如何在 Sui 上实现 Prop AMM:决定资产对价格的变量通过更新函数写入智能合约。

感谢@markoggwp 的发现!
基于这一假设,我们发现 EVM 的架构中存在一个重大障碍,导致 Solana 的 Prop AMM 模型在 EVM 上不可行。
回想一下,在 OP-Stack Layer 2 区块链(例如 Base 和 Unichain)上,交易是根据每 Gas 费用进行优先排序的(类似于 Solana 的费用/CU 排序)。
在 EVM 上,写入操作的 Gas 成本极高。与 Solana 的更新相比,通过 SSTORE 操作码在 EVM 上写入值的成本高得惊人:
· SSTORE(0 → 非 0):~22,100 gas
· SSTORE(非0→非0):~5,000gas
· 典型的 AMM 交换:约 200,000–300,000 gas
注意:EVM 上的 Gas 与 Solana 上的计算单元 (CU) 类似。上述 SSTORE Gas 数值假设每笔交易仅包含一次写入(冷写入),这很合理,因为通常不会在一笔交易中发送多个更新。
虽然更新仍然比交换便宜,但 gas 效率只有 10 倍左右(更新可能涉及多个 SSTORE),而在 Solana 上,这个比例约为 1000 倍。
这导致了两个结论,使得相同的 Solana Prop AMM 模型在 EVM 上的风险更大:
1. 高昂的 Gas 费用难以确保更新优先级:较低的 Gas 费用无法确保较高的费用/Gas 比率。为了确保更新不会被抢先执行并被置于区块顶部,需要更高的 Gas 费用,这会增加成本。
2. EVM 上的套利风险更高:EVM 上更新 Gas 与交换 Gas 的比率仅为 1:10,而 Solana 上则为 1:1000。这意味着套利者只需将费用提高 10 倍即可抢先交易流动性提供者的更新,而 Solana 上则需要提高 1000 倍。在这种较低比率的情况下,由于成本较低,套利者更有可能抢先交易价格更新以获取过时的报价。
一些创新(例如 EIP-1153 的临时存储 TSTORE)提供了大约 100 gas 的写入成本,但这种存储是短暂的,仅在单个交易中有效,不能用于保存价格更新以供以后用于衍生品交易(例如,在整个区块期间)。
如何将 Prop AMM 引入 EVM?
在回答这个问题之前,我们先来聊聊“为什么这么做”:用户总是希望获得更优的交易报价,这意味着他们的钱能花得更值。以太坊和 Layer 2 的 Prop AMM 可以为用户提供之前只能在 Solana 或中心化交易所获得的有竞争力的报价。
为了使 Prop AMM 在 EVM 上可行,让我们回顾一下它在 Solana 上成功的原因之一:
· 区块顶部更新保护:在 Solana 上,Prop AMM 更新位于区块顶部,以保护流动性提供者免受抢先交易的影响。由于计算单位成本极低,因此即使费用较低也能实现较高的费用/CU 比率,尤其是与衍生品交易相比。
那么,我们如何将区块顶部的 Prop AMM 更新引入到 Layer 2 EVM 区块链中呢?有两种方法:降低写入成本或为 Prop AMM 更新创建优先通道。
由于 EVM 的状态增长问题,降低写入成本的方法不太可行,因为廉价的 SSTORE 会导致状态膨胀攻击。
我们建议创建一个 Prop AMM 更新的优先通道。这是一个可行的解决方案,也是本文的重点。
Uniswap 的 @MarkToda 提出了一种新方法,利用全局存储智能合约 + 专用区块构建器策略:

它的工作原理如下:
· 全局存储合约:部署一个简单的智能合约作为公有键值存储。流动性提供者将价格曲线参数写入此合约(例如,set(ETH-USDC_CONCENTRATION, 4000))。
· 构建器策略:这是一个关键的链下组件。区块构建器会识别发送到全局存储合约的交易,并将区块 Gas 的 5% 到 10% 分配给这些更新交易,并根据费用确定优先级,并进行排序以防止垃圾交易。
请注意:交易必须直接发送到全局存储地址,以保证放置在区块顶部。
自定义块构建算法示例可以在 rblib 中找到。

Prop AMM 集成:流动性提供者的 Prop AMM 合约在互换时从全局存储合约读取价格曲线数据以提供报价。
该架构巧妙地解决了两个问题:
1. 保护:构建器策略创建了一条“快速通道”,以确保区块中的所有价格更新都在交易之前执行,从而消除了抢先交易风险。
2. 成本效率:流动性提供者不再与所有 DeFi 用户争夺高 Gas Price 以进入区块顶部;相反,他们只需要在本地费用市场中竞争为更新交易保留的区块顶部,从而大大降低了成本。
用户交易将根据流动性提供者在同一区块起始处设定的价格曲线执行,确保报价的新鲜度和安全性。该模型在 EVM 中复制了 Solana 上低成本、高优先级的更新环境,为 EVM 上的 Prop AMM 铺平了道路。
然而,这种模式也存在一些缺点,我将留在本文的底部进行讨论。
结论
Prop AMM 的可行性取决于解决一个核心经济问题:廉价且优先执行以防止抢先交易。
虽然标准 EVM 架构使得此类操作成本高昂且风险高昂,但新的设计提供了不同的方法来解决这个问题。通过在新设计中结合链上全局存储智能合约和链下构建器策略,可以创建一条专用的“快速通道”,以确保更新在区块顶部执行,同时建立一个本地可控的费用市场。这不仅使 Prop AMM 在 EVM 上可行,还可能彻底改变所有依赖区块顶部预言机更新的 EVM DeFi。
未解决的问题
· EVM 上的 Prop AMM 的 200ms Flashblock 速度是否足以与 Solana 的连续架构竞争?
在 Solana 上,大多数 AMM 流量来自一个名为 Jupiter 的聚合器,该聚合器提供了 SDK 以便于 AMM 集成。然而,在第二层 EVM 上,流量分散在多个聚合器上,并且没有公开的 SDK。这会对 Prop AMM 构成挑战吗?
· 在 Solana 上,Prop AMM 更新仅消耗约 100 个 CU。这种高效背后的实现机制是什么?
· 快速路径模型仅保证区块顶部的更新。如果一个 Flashblock 内有多个交易所,流动性提供者如何在这些交易所之间更新价格?
· 是否可以使用 Yul 或 Huff 等语言编写优化的 EVM 程序,类似于 Solana 的 Pinocchio 优化方法?
· Prop AMM 与 RFQ 相比如何?
· 如何防止流动性提供者在区块 N 中提供有竞争力的报价来吸引用户,然后在区块 N+1 中更新为无竞争力的报价?竹星链如何降低这种风险?
· Jupiter Ultra V3 的 Ultra Signaling 功能使 Prop AMM 能够区分有害流量和良性流量,从而提供更精准的报价。这些聚合器功能对于 EVM 上的 Prop AMM 有多重要?
原帖链接
欢迎加入 BlockBeats 官方社区:
Telegram 订阅群:https://t.me/theblockbeats
Telegram 讨论组:https://t.me/BlockBeats_App
官方推特账号:https://twitter.com/BlockBeatsAsia
以上内容仅用作资讯或教育之目的,不构成与BTCC相关的任何投资建议。BTCC竭力但不能保证上述全部内容的真实性、准确性和原创性。