> ## Documentation Index
> Fetch the complete documentation index at: https://docs.geode.ag/llms.txt
> Use this file to discover all available pages before exploring further.

# ClearingPriceLib.sol

> 纯函数库，实现标准模式批量拍卖的统一出清价格算法。

## 概述

`ClearingPriceLib` 是一个纯 Solidity 库，处理**标准模式**池（具有真实 LP 流动性的 Uniswap v4 AMM）的批量结算数学。它使用 AMM 的当前现货价格作为统一出清价格，确定哪些意图成交，计算内部匹配量，并计算路由到 AMM 的剩余量。

<Warning>
  **仅限标准模式。** 此库不用于曲线（发行模式）池。曲线池使用 `ConstantProductCurveLib.computeLaunchSettlement()`，出清价格来自联合曲线的现货价格。
</Warning>

### 两条结算路径

|           | 标准模式                               | 发行模式 (Geocurve)              |
| --------- | ---------------------------------- | ---------------------------- |
| **库**     | `ClearingPriceLib`                 | `ConstantProductCurveLib`    |
| **出清价格**  | 来自 `slot0.sqrtPriceX96` 的 AMM 现货价格 | 曲线现货价格 `(Ve + E) / (Vt - S)` |
| **剩余路由到** | Uniswap v4 AMM 交换                  | Hook 储备（曲线分发/吸收）             |
| **要求**    | 池中有真实 LP 流动性                       | 无 LP — Hook 是做市商             |

## 核心函数

### `computeClearingPrice()`

```solidity theme={null}
function computeClearingPrice(
    GeodeIntent[] memory buys,
    GeodeIntent[] memory sells,
    uint256 maxBatchSize,
    uint256 ammSpotPriceQ128,
    uint256 settlementFeeBps
) internal pure returns (
    SettlementResult memory result,
    bool[] memory buyFills,
    bool[] memory sellFills
)
```

## 算法

<Steps>
  <Step title="强制批次大小">
    任一侧超过 `maxBatchSize`（默认：128，绝对最大：256）则回滚。
  </Step>

  <Step title="验证排序">
    买入意图必须按限价降序排列。卖出意图必须按限价升序排列。
  </Step>

  <Step title="设置出清价格">
    出清价格设为 AMM 的当前现货价格。
  </Step>

  <Step title="确定成交">
    对每个意图，计算隐含限价并与出清价格比较。不满足的意图被跳过。
  </Step>

  <Step title="计算费用">
    结算费用在路由前从每个已成交意图的输入中扣除。
  </Step>

  <Step title="计算内部匹配">
    将净卖出量转换为买方单位并确定匹配量和剩余方向。
  </Step>
</Steps>

## 关键属性

<CardGroup cols={2}>
  <Card title="纯函数" icon="flask">
    无状态读写。整个计算从输入确定性完成。
  </Card>

  <Card title="存款计价" icon="coins">
    所有输出量以精确存款单位计。不预测 AMM 输出。
  </Card>

  <Card title="输入侧费用" icon="receipt">
    费用从总输入中扣除后再撮合。净输入驱动所有路由决策。
  </Card>

  <Card title="结算者竞争" icon="users">
    恶意结算者可以遗漏意图操纵出清价格。缓解措施是竞争——任何结算者都可以提交更完整的批次。
  </Card>
</CardGroup>

## 源代码

<Card title="ClearingPriceLib.sol" icon="github" href="https://github.com/Geode-vAMM/geodex/blob/main/contracts/src/libraries/ClearingPriceLib.sol">
  在 GitHub 上查看完整源代码（约 143 行）。
</Card>
