跳转到主要内容

V2 Router

V2 Router 提供了用于在 V2 流动性池中添加和移除流动性的辅助函数。它负责处理代币排序、交易对创建(如果需要)以及最优存入计算。
进行兑换操作时,请使用 Universal Router。V2 Router 主要用于流动性操作

核心函数

addLiquidity

向 ERC-20 / ERC-20 交易对添加流动性。如果交易对不存在则自动创建。
function addLiquidity(
    address tokenA,
    address tokenB,
    uint256 amountADesired,
    uint256 amountBDesired,
    uint256 amountAMin,
    uint256 amountBMin,
    address to,
    uint256 deadline
) external returns (
    uint256 amountA,
    uint256 amountB,
    uint256 liquidity
);
参数描述
tokenA, tokenB代币地址
amountADesired, amountBDesired期望存入的数量
amountAMin, amountBMin最小接受数量(滑点保护)
toLP 代币的接收地址
deadline交易截止时间(Unix 时间戳)

addLiquidityETH

向 KAS / ERC-20 交易对添加流动性。通过 msg.value 发送原生 KAS。
function addLiquidityETH(
    address token,
    uint256 amountTokenDesired,
    uint256 amountTokenMin,
    uint256 amountETHMin,
    address to,
    uint256 deadline
) external payable returns (
    uint256 amountToken,
    uint256 amountETH,
    uint256 liquidity
);

removeLiquidity

销毁 LP 代币并返回两种底层代币。
function removeLiquidity(
    address tokenA,
    address tokenB,
    uint256 liquidity,
    uint256 amountAMin,
    uint256 amountBMin,
    address to,
    uint256 deadline
) external returns (
    uint256 amountA,
    uint256 amountB
);

removeLiquidityETH

销毁 KAS 交易对的 LP 代币,返回原生 KAS 和 ERC-20 代币。
function removeLiquidityETH(
    address token,
    uint256 liquidity,
    uint256 amountTokenMin,
    uint256 amountETHMin,
    address to,
    uint256 deadline
) external returns (
    uint256 amountToken,
    uint256 amountETH
);

ABI

[
  "function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns (uint256 amountA, uint256 amountB, uint256 liquidity)",
  "function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity)",
  "function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns (uint256 amountA, uint256 amountB)",
  "function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) returns (uint256 amountToken, uint256 amountETH)"
]

代币授权

调用 addLiquidity 之前,需要将两个代币授权给 V2 Router:
await tokenA.approve(V2_ROUTER, amountA);
await tokenB.approve(V2_ROUTER, amountB);
调用 removeLiquidity 之前,需要将 LP 代币授权给 V2 Router:
await lpToken.approve(V2_ROUTER, lpAmount);