乐于分享
好东西不私藏

Web3套利之源码分析-swap

本文最后更新于2025-12-09,某些文章具有时效性,若有错误或已失效,请在下方留言或联系老夜

Web3套利之源码分析-swap

Web3套利之源码分析-swap

Web3套利之源码分析-swap

池子交易的核心代码,每一次的交易对换取都必须经过这段代码。

AMM(自动做市商)的价格是由池子内部状态决定的,而外部市场(CEX、其他 DEX、预言机)可能给出不同价格。套利者的任务就是:
只要池子价格 ≠ 外部价格,就调用 swap() 推动池子价格回到真实价格,同时赚取差价利润。
也就是说 swap() 是 价格发现的执行器。

需要理解的重点
1. 驱动价格沿着一条双曲线移动
Uniswap V3 的价格不是一步到位,而是根据当前 price、liquidity 和输入量。swap 是“连续微小移动价格的过程”,直到满足输入/输出目标或触及 priceLimit。
2. 跨 tick 时自动更新流动性
tick 是 LP 区间的边界。当价格移动到某个 tick 边界时可能进入新的 LP 区间或离开某些 LP 的区间因此需要改变 state.liquidity。
3. 计算并分配手续费
每次 swap 步骤会计算输入金额消耗多少,扣多少 fee,fee 中多少属于 LP,fee 中多少属于协议
4. 写入 Oracle
Oracle 需要记录tick 累积值,secondsPerLiquidity 累积值,但只在 swap 跨过至少一个 tick 时才写。

5. 和用户做最终 token 结算(回调机制)
swap 不会提前从用户账户扣款,池子首先把输出 token 转给用户,调用者必须在 uniswapV3SwapCallback() 中把应付的 token 转进池子,swap() 最终检查余额是否满足要求。
#web3 #个人开发者 #量化交易 #软件开发 #程序员 #套利机器人 #独立开发者

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » Web3套利之源码分析-swap
×
订阅图标按钮