Uniswap专项
恒定乘积自动做市商算法
核心公式
恒定乘积做市商的核心公式是:x * y = k
其中:
- ( x ) 是第一种资产的数量(如ETH)
- ( y ) 是第二种资产的数量(如USDT)
- ( k ) 是常数乘积
价格变动机制
当交易发生时,资产数量的变化遵循:
[ (x + dx)(y - dy) = k ]
[ (x - dx)(y + dy) = k ]
滑点计算
滑点计算公式(纯文本格式)
滑点(S) = [(实际执行价格 - 预期价格) / 预期价格] × 100%
变量说明:
- 滑点(S):以百分比(%)表示的价格偏差
- 实际执行价格:交易实际成交的价格
- 预期价格:交易发起时预期的市场价格
示例:
如果预期价格是2000 USDT,实际执行价格是2666.66 USDT,那么:
滑点 = [(2666.66 - 2000)/2000] × 100% = 33.33%
公式解读:
- 先计算实际价格与预期价格的差值
- 将差值除以预期价格,得到相对偏差
- 乘以100%转换为百分比形式
注意事项:
- 正值表示实际价格高于预期(对买方不利)
- 负值表示实际价格低于预期(对卖方不利)
- 滑点大小反映市场流动性和交易规模的影响
交易案例
假定一个交易对 tokenA / tokenB
有 10A 200B
则k = 10 * 200 =2000
情况
- 用户卖出5个A
(10 + 5 ) * (200 - dy)= 2000
得 dy = 66.667B
实际卖出价格:
- 恢复初始状态,用户此时持有100B,想买入A
(10 - dx) * (200+100) = 2000
得dx = 3.33A
- 极端场景:用户卖出1000个A
(10 + 1000) * (200 - dy) = 2000
得dy = 200 - 20/11 = 198B
spot price
PA = B / A = 200 / 10 = 20
PB = A / B = 10 / 200 = 0.05
重要概念
- 流动性池:由两种资产组成,数量乘积保持恒定
- 价格影响:大额交易会导致显著的价格滑点
- 交易执行:实际执行价格可能与预期价格有差异
注意事项
- 大额交易(交易额占池子总数比较大)在AMM中会产生较高的滑点
- 流动性深度影响价格稳定性
- 公式中的k值代表流动性池的规模,k越大,同等交易量下的滑点越小
流动性参数 L
恒定乘积公式的两种表示方法
1. 传统形式 (x × y = k)
- k是一个常数,代表流动性池中两种资产数量的乘积
- 当交易发生时,k值保持不变
- 资产数量x和y会呈反向变化关系
- 这是最基本的自动做市商(AMM)模型公式
2. 改进形式 (x × y = L²)
- L被定义为”流动性深度”(Liquidity)
- L等于k的平方根(L = √k)
- 这种表示法直接将流动性L与资产数量关联
- 便于更直观地计算价格和滑点
使用L²表示的优势
(1) 几何意义
- 公式x × y = L²描述的是双曲线
- L值决定了曲线的”宽度”
- L越大,曲线越平缓(流动性越深),价格滑点越小
(2) 统一流动性度量
- 在Uniswap V3等先进模型中,明确将L定义为√(x × y)
- 这样做的好处包括:
- 添加/移除流动性时,可以直接通过L计算所需资产量
- 可以实现不同价格区间的流动性分段计算(集中流动性)
(3) 简化价格计算
- 资产价格P(如ETH/USDT价格)可以表示为:
P = y/x = L²/x² - 这种表示方法能更直观地反映价格与流动性的关系
两种表示法的比较
特性 | x × y = k | x × y = L² |
---|---|---|
常数意义 | k是任意乘积常数 | L明确代表流动性深度 |
价格影响 | 滑点取决于k大小 | 滑点由L直接控制 |
适用性 | 基础AMM模型 | 高级模型(如Uniswap V3) |
实际应用示例
假设一个ETH/USDT交易池:
- 传统模型:100 ETH × 400,000 USDT = 40,000,000 (k值)
- 流动性模型:√40,000,000 ≈ 6,324.56 (L值)
当用户买入10 ETH时:
- 两种公式计算结果相同
- 但L²形式能更直观显示流动性变化
LP 和 LPT 解释
1. LP(Liquidity Provider,流动性提供者)
- 定义:向去中心化交易所(DEX)或自动做市商(AMM)资金池存入代币的用户。
- 作用:提供交易对的流动性(如 ETH/USDT),使其他用户能顺利交易。
- 收益:
- 赚取交易手续费(通常 0.1%-0.3% 每笔)。
- 可能获得流动性挖矿的额外代币奖励。
- 风险:
- 无常损失(Impermanent Loss):当代币价格剧烈波动时,LP 的资产价值可能低于单纯持有。
- 智能合约风险:资金池可能被黑客攻击或存在漏洞。
2. LPT(Liquidity Provider Token,流动性提供者代币)
- 定义:当用户成为 LP 时,系统发放的凭证代币,代表其在资金池中的份额。
- 功能:
- 赎回权:凭 LPT 可随时取回自己存入的资产(按比例计算)。
- 流动性证明:用于参与治理或质押挖矿(如 Curve 的 veCRV)。
- 示例:
- Uniswap 的 LP 会收到
UNI-V2
代币。 - PancakeSwap 的 LP 会收到
CAKE-LP
代币。
- Uniswap 的 LP 会收到
关键区别
术语 | 含义 | 作用 |
---|---|---|
LP | 流动性提供者(人/地址) | 存入代币,赚取手续费 |
LPT | 流动性凭证(代币) | 证明份额,用于赎回或质押 |
为什么需要 LPT?
- 追踪份额:资金池中资产价格变动时,LPT 确保 LP 能按比例取回资产。
- 可组合性:LPT 可质押到其他协议(如 Yearn Finance)进行二次收益 farming。
- 去中心化治理:部分项目的 LPT 具有投票权(如 SushiSwap 的
SLP
)。
实际案例
- 在 Uniswap 添加流动性:
- 存入 1 ETH + 2000 USDT → 获得
UNI-V2
LPT。 - 交易手续费按 LPT 占比分配。
- 存入 1 ETH + 2000 USDT → 获得
- 赎回资产:
- 销毁
UNI-V2
LPT → 取回 ETH 和 USDT(可能因价格变动数量不同)。
- 销毁
注意事项
- 无常损失:价格波动越大,LP 的潜在损失风险越高。
- LPT 价值:本身可在二级市场交易(如 SushiSwap 的
SLP
),但通常与底层资产挂钩。
添加流动性(Adding Liquidity)
1. 基本概念
添加流动性 是指用户向去中心化交易所(DEX)或自动做市商(AMM)的资金池存入一定比例的两种代币,成为流动性提供者(LP),以支持该交易对的交易活动。作为回报,LP 会获得交易手续费分成和可能的额外奖励。
2. 核心原理
恒定乘积公式(AMM 模型):
添加流动性时:
用户必须按当前池中资产的比例同时存入两种代币。例如:- 如果池中有 100 ETH 和 200,000 USDT(比例 1:2000),用户需按相同比例存入(如 1 ETH + 2000 USDT)。
(x +dx) / (y + dy) = x / y
3. 操作步骤(以 Uniswap 为例)
- 选择交易对:如 ETH/USDT。
- 输入存入数量:系统会自动计算另一种代币的所需数量(保持比例一致)。
- 授权代币:首次需授权智能合约访问你的代币。
- 确认添加:完成交易后,你会收到 LP Token(LPT) 作为凭证。
4. 为什么需要添加流动性?
- 支持交易:没有流动性,用户无法在 DEX 中买卖代币。
- 赚取收益:
- 手续费:每笔交易收取 0.01%-0.3% 的费用,按 LP 份额分配。
- 挖矿奖励:部分项目额外发放治理代币(如 UNI、CAKE)。
5. 风险与注意事项
- 无常损失(Impermanent Loss):
当代币价格剧烈波动时,LP 取回的资产价值可能低于单纯持有。
示例:存入 ETH/USDT 后,若 ETH 价格暴涨,部分 ETH 会被自动卖出,导致 LP 的 ETH 数量减少。 - 智能合约风险:资金池可能存在漏洞或被黑客攻击。
- 代币选择风险:为低流动性或诈骗代币提供流动性可能导致重大损失。
6. 实际案例
- 场景:
你向 ETH/USDT 池存入 1 ETH(价值 2000 USDT)和 2000 USDT。 - 结果:
- 获得
UNI-V2
LP Token。 - 若池中总流动性为 100 ETH + 200,000 USDT,你的份额是 1%。
- 每笔交易手续费(如 0.3%)的 1% 归你所有。
- 获得
7. 常见问题
- Q:能否只存一种代币?
A:不能,必须按比例存入两种(AMM 机制要求)。 - Q:如何计算收益?
A:收益来自手续费 + 挖矿奖励,可通过 DEX 的仪表盘实时查看。 - Q:何时取出流动性?
A:当手续费收益覆盖无常损失,或需要收回资金时。
添加流动性是 DeFi 生态的核心操作之一,通过提供代币支持交易并获得被动收益,但需谨慎评估无常损失和项目风险。对于新手,建议从主流交易对(如 ETH/USDT)开始,并充分理解机制后再参与。
添加初始流动性决定了一个token的初始价格
添加流动性时,不可以改变/影响价格
移除流动性(Removing Liquidity)
1. 基本概念
移除流动性 是指流动性提供者(LP)从去中心化交易所(DEX)的资金池中取回自己原先存入的代币,并销毁对应的 LP Token(LPT)。这一操作会减少资金池的流动性,同时 LP 停止赚取手续费收益。
2. 核心原理
赎回比例:
移除流动性时,你能取回的代币数量取决于:- 当前资金池的资产比例(可能因交易和价格波动而变化)。
- 你持有的 LPT 占总 LPT 的比例。
公式:你的代币数量 = (你的 LPT 数量 / 总 LPT) × 池中代币余额
无常损失的影响:
如果代币价格波动较大,取回的代币数量可能与最初存入时不同(通常少于单纯持有)。
3. 操作步骤(以 Uniswap 为例)
- 连接钱包:访问 DEX 的「Pool」或「流动性管理」页面。
- 选择要移除的流动性池:如 ETH/USDT。
- 输入移除数量:选择销毁全部或部分 LPT。
- 预览赎回资产:系统会显示可取回的两种代币数量(可能因价格变化与最初不同)。
- 确认移除:完成交易后,LPT 被销毁,代币返回钱包。
4. 为什么需要移除流动性?
- 提取收益:将积累的手续费和本金变现。
- 规避风险:避免无常损失进一步扩大,或应对市场剧烈波动。
- 调整投资策略:将资金转移到其他池子或退出 DeFi 市场。
5. 关键注意事项
- 价格影响:
移除大额流动性可能导致池内资产比例失衡,短暂影响价格(滑点增大)。 - 手续费:
部分平台会收取少量交易费(如以太坊的 Gas 费)。 - 税收:
某些地区将移除流动性视为应税事件(需咨询专业人士)。
6. 实际案例
- 场景:
你最初存入 1 ETH + 2000 USDT,获得 10 枚UNI-V2
LPT(占总 LPT 的 1%)。
现在池中有 100 ETH + 400,000 USDT(ETH 价格上涨至 4000 USDT)。 - 移除操作:
- 销毁全部 10 枚 LPT。
- 取回数量:
ETH = 1% × 100 = 1 ETH
USDT = 1% × 400,000 = 4000 USDT
- 结果:
你最终获得 1 ETH + 4000 USDT(总价值 8000 USDT),比最初存入的 4000 USDT 翻倍(但 ETH 数量未变,存在无常损失)。
7. 常见问题
- Q:移除流动性后,LPT 会消失吗?
A:是的,LPT 会被销毁,无法再次使用。 - Q:能否分批移除流动性?
A:可以,自由选择销毁部分 LPT。 - Q:移除时价格如何计算?
A:按移除时池中的实时资产比例计算(非存入时的价格)。
impermanentloss.com提前模拟收益与风险。
移除流动性时,不可以改变/影响价格
撤底池(移除全部)
添加/移除流动性时候,k都是有变化的
k的恒定是指在swap时候是恒定不变的