uniswap V2 合约调用关系
2023-02-21 14:28:59 0 举报
uniswap V2 合约调用关系
作者其他创作
大纲/内容
获取Token对合约的已有储备量
getReserves
tokenA tokenA地址tokenB tokenB地址liquidity 流动性数量amountAMin 最小数量AamountBMin 最小数量Bto to地址
如果涉及ETH,则从WETH取款ETH数量并发送到to地址
确保数值amount0、amount1大于最小值amountAMin、amountBMin
_swap
createPair
计算交换路径path数组
路由合约
swap交换
safeTransferFrom/safeTransferETH
amounts=getAmountsOut
getPair
addLiquidity
mint
判断token对是否存在
IN =>OUT 根据精确的token交换尽量多的tokenOUT=>IN 使用尽量少的token交换精确的tokenETH=>OUT 根据精确的ETH交换尽量多的tokenETH=>IN 使用尽量少的token交换精确的ETHIN=>ETH 根据精确的token交换尽量多的ETHOUT=>ETH 使用尽量少的ETH交换精确的token
initialize
计算路径中每个token的数量
添加流动性
tokenA tokenA地址tokenB tokenB地址amountADesired 期望数量AamountBDesired 期望数量BamountAMin 最小数量AamountBMin 最小数量Bto to地址deadline 最后期限
根据path、amounts 递归swap
通过tokenA,tokenB从映射里查询
safeTransferFrom/transfer/withdraw
swap
为调用者铸造LP
前端
销毁流动性数量,并将通过流动性数量计算出来的数量amount0的tokenA、amount1的tokenB发送到to地址
reserveA==0&&reserveB == 0
N
提取流动性
transferFrom
amountA数量的TokenA存到pairamountB数量的TokenB存到pair如果使用ETH,则会涉及到ETH<=>WETH兑换
burn
工厂合约
Y初次存入流动性
将流动性数量从用户发送到pair地址
Y
合约
removeLiquidity
配对合约
0 条评论
下一页