Appearance
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 复投时机选择
- 基于手续费阈值:累积手续费达到最小阈值
- 基于时间间隔:距离上次复投超过最小时间间隔
- 基于市场状态:当前价格波动在合理范围内
- 基于 Gas 成本:当前 Gas 价格合适
2. 数学模型
2.1 手续费计算
在 $x^N \cdot y = k$ 曲线中,手续费的计算如下:
Swap 手续费:
fee_amount = amount_in * fee_rate累积手续费:
accumulated_fee0 += fee_amount0 accumulated_fee1 += fee_amount1
2.2 最优价格区间计算
基于当前价格和手续费分布计算最优的复投价格区间:
当前价格:
current_price = (N * y) / x价值比例:
value0 = fee0 * current_price value1 = fee1 ratio = value0 / (value0 + value1)2.3 流动性计算
基于选定的价格区间计算最优流动性:
可用流动性:
L = min( fee0 * fifrt_price_x96 / (fifrt_upper_x96 - fifrt_price_x96), fee1 / (fifrt_price_x96 - fifrt_lower_x96) )实际添加的代币数量:
amount0 = L * (fifrt_upper_x96 - fifrt_price_x96) / fifrt_price_x96 amount1 = L * (fifrt_price_x96 - fifrt_lower_x96)