一、AMM与流动性供给概述:从订单簿到AMM的演变
大家好,我是你们的老朋友。今天开始咱们聊AMM,也就是自动化做市商。说实话,这个领域我踩过不少坑,也赚过一些钱。今天先带大家把基础打牢。
1.1 从订单簿到AMM:一场交易范式的革命
传统交易所用的是订单簿模型。你挂买单,我挂卖单,系统撮合。这模式在传统金融里跑了几百年,没啥大毛病。但到了区块链上,问题就来了——链上确认慢、Gas费高,订单簿根本跑不动。
我记得2020年刚接触DeFi时,在某个订单簿DEX上挂了一笔单,等了一个小时才成交。Gas费花了我0.1个ETH,结果交易对价还滑点了。那感觉,就像你去菜市场买菜,付了打车费结果发现菜价涨了。
AMM的出现彻底改变了游戏规则。它不需要买卖双方同时在场。你只需要把资产存入一个池子,系统自动给你定价。说白了,AMM就是一个机器人做市商,24小时不休息,永远给你报价。
核心区别一句话总结:订单簿是「人找人」,AMM是「钱找钱」。流动性池子里的资金随时待命,交易者来了直接成交。
1.2 恒定乘积公式:x * y = k 的魔法
AMM最核心的公式就是 x * y = k。这个公式简单到令人发指,但背后藏着大智慧。
咱们拆开看:
- x:池子里代币A的数量
- y:池子里代币B的数量
- k:一个常数,交易前后保持不变
举个例子。假设一个ETH/USDC池子,里面有10个ETH和20000个USDC。那么k = 10 * 20000 = 200000。
现在你想用1个ETH换USDC。交易后池子里ETH变成11个,要保持k不变,USDC就得变成200000 / 11 ≈ 18181.82。所以你拿到的USDC是20000 - 18181.82 = 1818.18个。
嗯,这里要注意。你实际拿到的不是2000个USDC,而是1818个。为什么?因为你的交易改变了池子的比例,价格发生了滑点。
// 恒定乘积公式的简单实现
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) public pure returns (uint amountOut) {
require(amountIn > 0, 'Insufficient input amount');
uint amountInWithFee = amountIn * 997; // 0.3% 手续费
uint numerator = amountInWithFee * reserveOut;
uint denominator = reserveIn * 1000 + amountInWithFee;
amountOut = numerator / denominator;
}
我在做第一个AMM项目时,犯过一个低级错误——忘了加手续费。结果池子被套利机器人薅羊毛薅到崩溃。后来我学乖了,每次部署前先跑一遍模拟交易。
个人经验:写AMM合约时,一定要先算好精度。Solidity没有浮点数,所有计算都得用整数。我习惯把价格精度设到1e18,这样能避免很多精度损失的问题。
1.3 流动性池的基本结构
一个标准的AMM流动性池,其实就三个核心组件:
- 代币储备:两种代币的余额,存在合约里
- 流动性凭证:LP Token,代表你在池子里的份额
- 手续费机制:每笔交易收0.3%,分给LP
你想想看,你往池子里存了1个ETH和2000个USDC,合约会给你铸造一些LP Token。这些Token就是你流动性的凭证。别人交易产生的手续费,会按比例分给你。
我见过不少新手,以为存进去就完事了。其实不是。池子里的比例会随着交易变化。如果你存的时候是1:2000,过了一周可能变成1:2500。这时候你取出来,可能ETH变少了,USDC变多了。
避坑指南:我曾经在Uniswap V2上存了一笔ETH/DAI的流动性,当时觉得稳赚不赔。结果遇到312暴跌,ETH价格腰斩,我取出来时发现ETH少了30%,DAI多了不少。这就是无常损失。记住,做LP不是无风险的。
1.4 做市商角色的转变
传统做市商是什么人?是那些有大量资金、有专业算法、能同时挂几百个订单的机构。他们赚的是买卖价差,普通人根本玩不了。
AMM把做市商的门槛降到了零。你只要有闲钱,往池子里一存,你就是做市商。系统自动帮你报价、自动帮你成交、自动帮你收手续费。
但这里有个关键点:AMM做市商是被动的。你不能选择什么时候买、什么时候卖。你的资金24小时都在池子里,别人随时可以交易。这意味着你承担了所有市场波动的风险。
| 对比维度 | 传统做市商 | AMM流动性提供者 |
|---|---|---|
| 资金门槛 | 极高(百万美元起) | 极低(几美元即可) |
| 定价权 | 主动报价 | 被动接受公式定价 |
| 风险控制 | 可随时撤单 | 资金锁定在池中 |
| 收益来源 | 买卖价差 | 交易手续费 + 流动性挖矿 |
我个人觉得,AMM最大的贡献不是技术,而是让普通人也能参与做市。以前做市商是华尔街的专利,现在你我在家就能干。当然,赚不赚钱另说。
1.5 本章知识体系总览
下面这张图是我自己画的,把AMM的核心逻辑串起来了。你看一遍应该就能理解整个框架。
这张图把今天讲的内容串起来了。从订单簿到AMM,核心是x*y=k这个公式。流动性池的结构很简单,但做市商的角色发生了根本变化。记住这些,后面几章咱们才能深入聊策略。
本章核心要点:
- AMM解决了链上订单簿效率低的问题
- x*y=k是AMM的定价基础,交易会改变池子比例
- 流动性池由代币储备、LP Token、手续费三部分组成
- 做市商从专业机构变成了普通用户,但风险也随之转移
好了,第一章就聊到这儿。内容不多,但都是基础中的基础。下一章咱们聊流动性供给的收益模型,到时候我会分享一些实战数据。
公众号:蓝海资料掘金营,微信deep3321