Ethereum-Solidity 测验 Q16:什么是 impermanent loss?
Source: Dev.to
什么是暂时性损失?
暂时性损失是指如果你仅持有代币与将其作为流动性提供给自动做市商(AMM)之间的价值差异。
它是如何产生的
当你向 AMM 提供流动性时,需要存入价值相等的两种代币。AMM 会使用恒定乘积公式自动根据供需调整价格
[ x \times y = k ]
如果其中一种代币的价格出现显著变化,池子会重新平衡,使你的代币比例与最初不同。该比例的变化会导致相较于仅持有资产的价值出现损失。
为什么叫“暂时性”?
- 如果价格回到原来的比例,损失会消失。
- 只有在价格失衡时提取流动性,你才会实现损失。
- 池子赚取的交易费用可以抵消甚至超过暂时性损失。
示例:ETH‑USDC 池
初始存入
| 代币 | 数量 | 美元价值 |
|---|---|---|
| ETH | 1 | $2,000 |
| USDC | 2,000 | $2,000 |
| 总计 | — | $4,000 |
恒定乘积为
[ k = 1 \times 2{,}000 = 2{,}000 ]
价格变化:ETH 上涨至 $4,000
使用恒定乘积公式 (x \times y = k) 并代入新的价格比例 (y/x = 4{,}000):
x × y = 2,000
y = 4,000x
x × 4,000x = 2,000
4,000x² = 2,000
x² = 0.5
x = √0.5 ≈ 0.707 ETH
y = 4,000 × 0.707 ≈ 2,828 USDC
新的 LP 持仓
- ETH: 0.707 ETH(损失 0.293 ETH)
- USDC: 2,828 USDC(获得 828 USDC)
价值:
[ (0.707 \text{ ETH} \times $4{,}000) + (2{,}828 \text{ USDC} \times $1) = $2{,}828 + $2{,}828 = $5{,}656 ]
对比
| 场景 | ETH(价值) | USDC(价值) | 总价值 |
|---|---|---|---|
| 仅持有 | 1 ETH = $4,000 | 2,000 USDC = $2,000 | $6,000 |
| 提供流动性 | 0.707 ETH = $2,828 | 2,828 USDC = $2,828 | $5,656 |
暂时性损失计算
[ \text{暂时性损失} = $6{,}000 - $5{,}656 = $344 \approx 5.7% ]
实际发生的情况
- 损失: 0.293 ETH(在价格上涨时被卖出)
- 获得: 828 USDC(在价格上涨时被买入)
AMM 为保持恒定乘积而重新平衡了仓位,等于是以低于市场峰值的价格卖出 ETH。池子赚取的交易费用可以减轻这部分损失。