Skip to content

Coinfair 手续费复投方案

1. 概述

1.1 基本原理

Coinfair CLMM 协议中,每次 swap 会产生手续费,这些手续费会累积在池子中。通过 Hook 机制,我们可以在每次 swap 后自动检测手续费,并在满足条件时将其转换为流动性,实现自动复投。

1.2 Hook 机制工作流程

mermaid
graph TD
    A[用户发起Swap] --> B[执行Swap交易]
    B --> C[触发afterSwap Hook]
    C --> D[检查手续费]
    D --> E{是否满足复投条件?}
    E -->|是| F[计算最优复投策略]
    F --> G[执行复投]
    E -->|否| H[结束]
    G --> I[更新状态]

1.3 复投时机选择

  1. 基于手续费阈值:累积手续费达到最小阈值
  2. 基于时间间隔:距离上次复投超过最小时间间隔
  3. 基于市场状态:当前价格波动在合理范围内
  4. 基于 Gas 成本:当前 Gas 价格合适

2. 数学模型

2.1 手续费计算

在 $x^N \cdot y = k$ 曲线中,手续费的计算如下:

  1. Swap 手续费

    fee_amount = amount_in * fee_rate
  2. 累积手续费

    accumulated_fee0 += fee_amount0
    accumulated_fee1 += fee_amount1

2.2 最优价格区间计算

基于当前价格和手续费分布计算最优的复投价格区间:

  1. 当前价格

    current_price = (N * y) / x
  2. 价值比例

    value0 = fee0 * current_price
    value1 = fee1
    ratio = value0 / (value0 + value1)
  3. 2.3 流动性计算

基于选定的价格区间计算最优流动性:

  1. 可用流动性

    L = min(
        fee0 * fifrt_price_x96 / (fifrt_upper_x96 - fifrt_price_x96),
        fee1 / (fifrt_price_x96 - fifrt_lower_x96)
    )
  2. 实际添加的代币数量

    amount0 = L * (fifrt_upper_x96 - fifrt_price_x96) / fifrt_price_x96
    amount1 = L * (fifrt_price_x96 - fifrt_lower_x96)