Prop AMM已迅速占据Solana全部交易量的40%。为何它们尚未登陆EVM?
Proprietary AMM(Prop AMM)正快速成为Solana DeFi生态的主导力量,主要交易对的成交量占比已超40%。这些由专业做市商运营的专属平台,通过降低做市商被套利者利用过时报价抢跑的风险,提供了深度流动性和极具竞争力的定价。
https://dune.com/the_defi_report/prop-amms
但Prop AMM的成功几乎仅限于Solana。即使在Base或Optimism等高效且低成本的Layer 2上,Prop AMM也未能在EVM生态落地,原因何在?
本文将系统解析Prop AMM的原理、其在EVM链面临的技术与经济障碍,以及一种有望推动其在EVM DeFi领域崛起的新架构。
什么是Prop AMM?
Prop AMM是一种自动化做市商机制,其池子的流动性和定价由单一专业做市商主动管理,而非由公众被动提供。
与传统AMM采用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中持续调整的核心参数。深入理解Prop AMM前,先回顾AMM的定价机制。例如Uniswap v2的WETH-USDC池(无手续费),价格由x * y = k公式被动决定,x和y是两种资产数量,k为常数。只有曲线上的点才是用户可成交的价格。
举例,WETH-USDC池有100 WETH和400,000 USDC,当前曲线点为x = 100 WETH,y = 400,000 USDC,初始价格为400,000 USDC / 100 WETH = 4,000 USDC/WETH。常积k为xy = k = 40,000,000。若交易者买入1 WETH,需向池中添加USDC,WETH余额降至99。为保持k不变,新的x、y需仍在曲线上,因此USDC余额需增至40,000,000 / 99 ≈ 404,040.40 USDC。交易者为1 WETH实际支付了4,040.40 USDC,价格高于初始4,000美元,原因是滑点。这也是x y = k被称为价格曲线的原因,池子的任何成交价都必须是曲线上的一个点。
为什么做市商倾向于AMM设计而非CLOB?
我们来分析做市商为何选择AMM机制。假如你是链上中央限价订单簿(CLOB)做市商,更新报价需取消并替换数千个限价订单。如果有N个订单,这是O(N)线性操作,链上执行既慢又消耗算力。
如果能用一条数学曲线表示所有报价,只需调整定义曲线的几个参数,而无需管理N个订单。这样O(N)问题变成O(1)常数操作。
为直观展示价格曲线(如x*y = k)如何形成不同有效价格,我们以Ellipsis Labs开发的Prop AMM——SolFi为例。虽然价格曲线未公开,Ghostlabs绘制的下图展示了在某一Solana slot上,不同数量SOL兑换USDC的有效价格。(对EVM读者而言,slot号类似于区块号。)每条线代表不同WSOL/USDC池,展示了多层次定价。做市商动态调整价格曲线,下方有效价格图会随slot变化。
https://github.com/tryghostxyz/solfi-sim/blob/main/static/curves_333436948.png
核心在于,做市商只需更新几个价格曲线参数,就能灵活调整定价,而无需维护N个订单。这是Prop AMM的最大优势,使做市商能以极高资本和算力效率提供深度、动态流动性。
Solana架构为何适合Prop AMM
Prop AMM需要主动管理,这依赖两点:低成本更新和优先执行。在Solana,低成本更新直接带来优先执行。
做市商为何需要这两点?首先,做市商会根据链速、库存和资产指数价格(如中心化交易所)动态调整价格曲线。在Solana等高性能链上,如果更新成本高,做市商将难以频繁调整。
其次,若做市商无法让更新排在区块顶部,过时报价将被套利者“捡漏”,导致必然亏损。
缺少这两项能力,做市商效率下降,用户成交价也会变差。
例如,Solana上的Prop AMM HumidiFi每秒可更新报价74次(感谢@ SliceAnalytics数据),如下图:
https://dune.com/queries/5980584/9644764
来自EVM领域的人可能会问:“Solana slot约400ms,Prop AMM如何在单个slot内多次更新价格?”
答案在于Solana的连续架构,与EVM的离散区块模型有本质区别。
- EVM:交易通常在完整区块提议并最终确定后顺序执行,区块中途发出的更新需等下一个区块才生效。
- Solana:主验证者不等待完整区块,而是将交易拆分为“shred”小包,持续流式传递全网。一个slot内可有多次兑换,shred #1的价格更新只影响兑换#1,shred #2只影响兑换#2。
注意:Flashblocks等方案类似Solana的shreds。根据@ Ashwinningg在CBER会议上的演讲,每400ms slot最多可有32,000个shred,即每毫秒最多80个shred!200ms Flashblock速度是否能与Solana连续架构媲美,仍有待验证。
那么Solana上的更新为何如此便宜,又如何带来优先执行?
首先,虽然Solana上的Prop AMM实现为黑盒,但如Pinocchio等库可用于CU优化的Solana程序开发。Helius博客有详细介绍(链接),可将Solana程序从约4000 CU优化至约100 CU。
https://github.com/febo/p-token?tab=readme-ov-file#compute-units
再来看第二点。Solana在高层面上通过选择Fee / Computer Units(Compute Units类似EVM的Gas)最高的交易优先执行,机制与EVM类似。
- 使用Jito时,公式为Jito Tip / Compute Units,
- 否则为Priority = (Prioritization fee + Base fee) / (1 + CU limit + Signature CUs + Write lock CUs)(官方文档)
Prop AMM更新与Jupiter Swap的Compute Units对比,前者极为便宜,比例达1:1000。
Prop AMM更新:简单曲线更新极其低耗。Wintermute的更新仅需109 CU,交易总费用仅0.000007506 SOL。
https://orb.helius.dev/tx/325EwPasEyXYuVqow9aGT44i17cZzd9G5GYPHxJr1JmLKwyWTS6rJgV6EP1svqExo9TnoqqmMF15si17x2s7wnSu?cluster=mainnet-beta&advanced=true&tab=summary
Jupiter Swap:通过Jupiter路由的兑换可能高达~100,000 CU,交易总费用仅0.000005 SOL。
https://orb.helius.dev/tx/4SbYyAEq6QBNv5YW517fLRatEPvBvh1kDit3C8NL84uBRXuE7FFEsVuX6BDG44reXtMt5WZCGxN7rS38jt4RSNY9?cluster=mainnet-beta&advanced=true&tab=summary)
由于这种巨大差异,做市商只需为更新交易支付微量费用,即可实现远高于兑换者的Fee/CU比,确保更新优先、低成本执行,始终排在区块顶部,有效防止被“有害流量”套利。
为什么Prop AMM尚未在EVM落地?
假设Prop AMM的更新涉及写入决定交易对价格曲线的变量。Solana上的Prop AMM代码为黑盒,做市商希望保密其策略,但通过Sui链Obric的Prop AMM实现可见,价格变量通过更新函数写入智能合约。
https://suiscan.xyz/mainnet/object/0xb84e63d22ea4822a0a333c250e790f69bf5c2ef0c63f4e120e05a6415991368f/contracts
感谢@ markoggwp的发现!
基于此假设,EVM架构成为阻碍Solana Prop AMM模式在EVM落地的主要障碍。
回顾OP-Stack Layer 2链如Base和Unichain,交易按Priority Fee per Gas排序(类似Solana按Fee / CU优先)。
在EVM,写操作的gas消耗极高。通过SSTORE操作码写入一个值的存储成本远高于Solana上的更新。
- SSTORE(零到非零值):约22,100 gas
- SSTORE(非零到非零):约5,000 gas
- 典型AMM兑换:约200,000 - 300,000 gas
Gas在EVM中等同于Solana的Compute Units。
上述SSTORE gas数据假设每笔交易仅有一次写入(冷写),这是合理的,因为一次交易不会发送多个更新。
虽然更新仍比兑换便宜,但gas消耗比例仅约10倍(且一次更新可能用到多个SSTORE),而Solana约为1000倍。
这导致两点结论,使Solana Prop AMM模式在EVM上风险更高:
- 由于gas消耗本身高,少量优先费难以实现高Priority Fee / Gas。确保更新不被抢跑并排在区块顶部需支付更高优先费,成本显著提升。
- 由于EVM上更新与兑换的gas比例仅1:10,而Solana为1:1000,套利者只需将优先费提高到更新交易的10倍即可超越并抢跑做市商的更新,而Solana则需提升至1000倍。在EVM的低比例环境下,套利者更容易抢跑价格更新,获取过时报价,成本并不高。
像EIP-1153(TSTORE用于瞬时存储)创新带来100 gas写入,但该存储仅在单笔交易期间有效,无法用于持久化价格更新以供后续兑换交易(如一个区块期间)。
如何推动Prop AMM在EVM落地?
在回答此问题前,先明确“为什么”。用户始终追求更优报价,Prop AMM在以太坊及Layer 2链上的落地,将为用户带来更具竞争力的交易体验,否则这些优势仅在Solana和中心化交易所出现。
要让Prop AMM在EVM可行,回顾Solana Prop AMM成功的核心原因之一:
- Prop AMM更新在Solana区块顶部,保护做市商免受抢跑。更新之所以能排在顶部,是因为极低Compute Units消耗,低费用即可获得高Fee / CU,远高于兑换。
那么如何让Prop AMM更新在Layer 2 EVM链也能排在区块顶部?有两种路径:降低写入成本,或为Prop AMM更新创建优先通道。
降低写入成本因EVM的状态膨胀问题难以落地,廉价SSTORE可能导致状态垃圾泛滥。
我们建议采用第二种方案,为Prop AMM更新创建优先通道。
Uniswap团队的@ MarkToda提出了一种新架构,通过链上Global Storage智能合约(代码仓库)结合专用builder策略实现。
https://github.com/flashbots/global-storage-smart-contract
具体流程如下:
- Global Storage合约:部署一个简单智能合约作为公用键值存储。做市商将价格曲线参数写入该合约(如set(ETH-USDC_CONCENTRATION, 4000))。
Builder策略:这是关键的链下组件。区块构建者会实施策略,识别发送至Global Storage合约地址的交易。策略自动为这些更新交易预留区块gas的前5-10%,并按优先费排序,以防止垃圾信息。
注意,交易的to地址必须为Global Storage合约,确保只有直接发送至此地址且不调用其他兑换函数的交易能排在区块顶部。
- 下方为使用rblib自定义区块构建算法的示例。
- Prop AMM集成:做市商的Prop AMM合约设计为在兑换时,从Global Storage合约读取价格曲线参数,动态决定用户报价。
该架构优雅地解决了两个核心问题:
- 保护性:builder策略创建了“快车道”,确保区块内所有价格更新在兑换前执行,彻底消除同一区块内被抢跑风险。
- 成本效率:做市商无需与所有DeFi用户争夺区块顶部,只需与其他更新交易在本地费用市场竞争预留区块顶部区域,极大降低优先执行成本。
用户兑换将基于做市商在区块起始时更新的价格曲线执行,确保报价新鲜且受保护。该模式有效复刻了Solana Prop AMM低成本、高优先级更新的环境,为EVM市场效率开启新纪元。
不过,该模式也存在一些开放问题,留待文末讨论。
结论
Proprietary AMM的可行性取决于能否解决核心经济难题:以极低成本实现优先执行,防止抢跑。
标准EVM架构让这一目标成本高昂且风险巨大,而新架构为此问题提供了创新解法。通过链上Global Storage合约与链下builder策略结合,可为价格更新打造专属“快车道”,不仅保证oracle更新的区块顶部执行,还建立了本地、封闭的费用市场,直接攻克核心障碍,使Prop AMM及所有依赖区块顶部oracle更新的EVM DeFi类型不仅成为可能,更有望引领行业变革。
开放问题
- Prop AMM在EVM上的200ms Flashblock速度,能否与Solana的连续架构竞争?
- 在Solana,AMM订单流主要由聚合器Jupiter提供,且有SDK可供AMM集成。而Layer 2 EVM链则分散在多个聚合器,且无公开SDK,这是否会成为Prop AMM落地EVM的障碍?
- Prop AMM为何能在Solana仅用~100 CU完成更新?
- 所提快车道模型仅让Prop AMM更新排在区块顶部。若Flashblock仅200ms,可能出现多个兑换在一个Flashblock内,做市商希望在这些交易之间动态调整价格,该如何实现?
- Yul或Huff等语言能否用于编写高效EVM程序,类似Pinocchio优化Solana程序?
- Prop AMM与RFQ机制有何本质区别?
- 如何防止做市商在区块N给出极优报价吸引用户发交易到区块N+1,然后在N+1更新为极差报价?Jupiter如何防范此类行为?
- Jupiter的Ultra V3引入了“Ultra Signaling”,允许Prop AMM区分有害流量与非有害流量,从而提供更紧报价(3个基点)。聚合器此类功能对Prop AMM落地EVM有多重要?
P.S:我正在寻求会议演讲机会,欢迎Devconnect期间相关活动主办方联系我交流!
免责声明:
- 本文转载自[0xOptimus]。所有版权归原作者[0xOptimus]所有。如对转载有异议,请联系Gate Learn团队,团队将及时处理。
- 免责申明:本文所表达的观点和意见仅代表作者个人,不构成任何投资建议。
- 本文其他语言译文由Gate Learn团队完成。除特别说明外,禁止复制、分发或抄袭译文内容。
