概述
ClearingPriceLib 是一个纯 Solidity 库,处理标准模式池(具有真实 LP 流动性的 Uniswap v4 AMM)的批量结算数学。它使用 AMM 的当前现货价格作为统一出清价格,确定哪些意图成交,计算内部匹配量,并计算路由到 AMM 的剩余量。
两条结算路径
核心函数
computeClearingPrice()
算法
1
强制批次大小
任一侧超过
maxBatchSize(默认:128,绝对最大:256)则回滚。2
验证排序
买入意图必须按限价降序排列。卖出意图必须按限价升序排列。
3
设置出清价格
出清价格设为 AMM 的当前现货价格。
4
确定成交
对每个意图,计算隐含限价并与出清价格比较。不满足的意图被跳过。
5
计算费用
结算费用在路由前从每个已成交意图的输入中扣除。
6
计算内部匹配
将净卖出量转换为买方单位并确定匹配量和剩余方向。
关键属性
纯函数
无状态读写。整个计算从输入确定性完成。
存款计价
所有输出量以精确存款单位计。不预测 AMM 输出。
输入侧费用
费用从总输入中扣除后再撮合。净输入驱动所有路由决策。
结算者竞争
恶意结算者可以遗漏意图操纵出清价格。缓解措施是竞争——任何结算者都可以提交更完整的批次。
源代码
ClearingPriceLib.sol
在 GitHub 上查看完整源代码(约 143 行)。