第1章:核心概念与数学基础
大家好,我是你们的老朋友。今天咱们来聊聊流动性挖矿最底层的那些事儿。
说实话,很多人一上来就冲进流动性挖矿,结果亏得莫名其妙。为什么?因为没搞懂AMM的原理。我当年第一次接触Uniswap时,也觉得不就是个兑换嘛,后来踩了坑才明白——数学这东西,真不能跳过。
1.1 自动做市商(AMM)原理
传统交易所,比如币安,用的是订单簿模式。你挂买单,我挂卖单,撮合成功才能成交。但DeFi世界里,链上交易太慢了,订单簿根本跑不动。
于是有人想了个办法:让算法来做市。这就是AMM——自动做市商。
说白了,AMM就是一个智能合约,里面锁着两种代币。比如ETH和USDC。你想用ETH换USDC,直接跟合约交易就行。合约里的价格,由数学公式决定。
我个人习惯把AMM理解成一个「机器人做市商」。它24小时在线,从不休息,也不跟你讨价还价。你给多少ETH,它按公式算出该给你多少USDC,成交。
核心要点:AMM用算法替代了传统做市商,实现了去中心化、无许可的链上交易。
1.2 恒定乘积公式(x*y=k)
这是AMM最经典的公式,也是Uniswap V2的核心。
公式很简单:x * y = k
- x = 池子里代币A的数量
- y = 池子里代币B的数量
- k = 一个常数(交易前后保持不变)
举个例子。假设一个ETH/USDC池子里有10个ETH和20,000个USDC。那么k = 10 * 20000 = 200,000。
现在你想用1个ETH换USDC。交易后,池子里ETH变成11个。为了保持k不变,USDC的数量必须变成:200,000 / 11 ≈ 18,181.82。
所以你得到的USDC = 20,000 - 18,181.82 = 1,818.18。
嗯,这里要注意:你换到的USDC并不是按池子当前价格(2000 USDC/ETH)计算的。因为你的交易改变了池子的比例,价格也变了。
// 恒定乘积公式的简单实现
function swap(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) public pure returns (uint256 amountOut) {
require(amountIn > 0, 'Insufficient input amount');
uint256 amountInWithFee = amountIn * 997; // 0.3%手续费
uint256 numerator = amountInWithFee * reserveOut;
uint256 denominator = reserveIn * 1000 + amountInWithFee;
amountOut = numerator / denominator;
}
我的经验:写这个公式时,一定要注意精度问题。Solidity没有浮点数,我建议用乘除法顺序来避免溢出。曾经有个项目因为除法的顺序写反了,导致用户多拿了10%的代币——审计都没查出来。
1.3 滑点与无常损失
这两个概念,是流动性挖矿的「隐形杀手」。
滑点(Slippage)
滑点就是你下单时的预期价格,和实际成交价格之间的差额。
为什么会这样?因为你的交易改变了池子的比例。交易量越大,滑点越高。
你想想看,如果你在一个小池子里砸100个ETH,价格可能直接被打飞。这就是为什么大额交易要拆单,或者用聚合器。
避坑指南:我曾经见过一个用户,在滑点设置里填了50%。结果遇到三明治攻击,一笔交易被吃了30%的滑点。我建议:滑点容忍度不要超过1%,除非你很清楚自己在做什么。
无常损失(Impermanent Loss)
这个词听起来很吓人,其实说白了就是:你提供流动性赚的手续费,可能还没你直接拿着代币涨得多。
举个例子。你往ETH/USDC池子里各放50%价值的资产。如果ETH价格翻倍,池子会自动卖出部分ETH来维持平衡。结果你发现,池子里的ETH变少了,USDC变多了。虽然总价值涨了,但如果你当初直接持有ETH,赚得更多。
这个「少赚的部分」,就是无常损失。
| 价格变化幅度 | 无常损失比例 |
|---|---|
| ±10% | 约0.5% |
| ±25% | 约3.0% |
| ±50% | 约11.1% |
| ±100% | 约28.6% |
看到没?价格波动越大,无常损失越夸张。所以稳定币对(比如USDC/DAI)几乎没无常损失,而ETH/BTC这种波动大的对,风险就高。
我的建议:如果你做流动性挖矿,优先选稳定币对,或者波动小的主流币对。别为了高APY去冲那些垃圾币池子——手续费赚的,可能还不够无常损失赔的。
1.4 资金池深度与流动性
资金池深度,说白了就是池子里有多少钱。深度越深,滑点越小,交易体验越好。
举个例子。一个深度1000万USDC的ETH池子,你交易1万USDC,滑点可能只有0.1%。但一个深度只有10万USDC的池子,同样交易1万USDC,滑点可能高达5%。
流动性,就是池子里的总锁仓价值(TVL)。TVL越高,深度越好,越能吸引大额交易者。这是个正向循环。
实操技巧:我一般用Dune Analytics或者DeFi Llama看池子的深度。如果某个池子的TVL低于100万美金,我基本不会碰——除非是刚上线的新项目,想博个早期红利。
知识体系总览
下面这张图,是我自己画的AMM核心逻辑。你看一遍,基本就能串起来了。
好了,这一章的内容就到这儿。记住:AMM不是魔法,是数学。搞懂了x*y=k,你就掌握了DeFi世界的底层密码。
本章小结:
- AMM用算法替代传统做市商,实现去中心化交易
- 恒定乘积公式x*y=k是Uniswap的核心,决定了价格和滑点
- 滑点是大额交易的隐形杀手,建议设置1%以内的容忍度
- 无常损失在价格波动大时尤其明显,稳定币对是最安全的选择
- 资金池深度(TVL)直接影响交易体验,低于100万美金的池子要谨慎