Sushiswap V2 router路由地址合约函数功能解析说明

  • A+
所属分类:Coinbase(BASE)

chatGPT账号

Sushiswap V2 router路由地址合约函数功能解析说明

V2路由器02

V2Router02用作与流动性池交互的中间合约,或者较低级别的V2Pair合约。该合约可用于互换、增加流动性、提取流动性。该合约还包含这三个任务的许多变体,可用于每种独特的情况,例如使用原生 Gas 代币(即 ETH),以及在转账发生时征税的转账费用代币。

完整的合同可以在这里找到。

只读函数

工厂

function factory() external pure returns (address);

返回工厂地址

韦斯

function WETH() external pure returns (address);

返回以太坊主网上的规范 WETH 地址,或部署合约的网络的规范本机包装地址。

报价

参见报价

获取金额

请参阅getAmountOut

获取金额

请参阅getAmountIn

获取金额

function getAmountsOut(uint amountIn, address[] memory path) public view returns (uint[] memory amounts);

请参阅getAmountsOut

获取金额

function getAmountsIn(uint amountOut, address[] memory path) public view returns (uint[] memory amounts);

请参阅getAmountsIn

状态改变函数

添加流动性

function addLiquidity(
  address tokenA,
  address tokenB,
  uint amountADesired,
  uint amountBDesired,
  uint amountAMin,
  uint amountBMin,
  address to,
  uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);

为 ERC-20⇄ERC-20 池添加流动性。

  • 为了涵盖所有可能的场景,msg.sender应该已经在 tokenA/tokenB 上为路由器提供了至少 amountADesired/amountBDesired 的余量。
  • 始终根据交易执行时的价格,以理想的比例添加资产。
  • 如果传递的代币池不存在,则会自动创建一个池,并准确添加 amountADesired/amountBDesired 代币。
  • amountAMin并可amountBMin用于防滑保护。
  • deadline用于设置执行 tx 所需时间的时间限制。

参数

姓名 类型 描述
tokenA 地址 该对中其中一个代币的地址
tokenB 地址 该对中另一个令牌的地址
amountADesired 单位 如果 B/A 价格 <= amountBDesired/amountADesired (A 贬值),则作为流动性添加的代币 A 数量
amountBDesired 单位 如果 A/B 价格 <= amountADesired/amountBDesired (B 贬值),则作为流动性添加的代币 B 数量
amountAMin 单位 限制了交易恢复之前 B/A 价格可以上涨的程度。必须 <= amountADesired
amountBMin 单位 限制了交易恢复之前 A/B 价格可以上涨的程度。必须 <= amountBDesired
to 地址 流动性代币的接收者
deadline 单位 unix 时间戳,之后事务将恢复

退货

姓名 类型 描述
amountA 单位 添加到该对的 tokenA 数量
amountB 单位 添加到该货币对的 tokenB 数量
liquidity 单位 铸造的流动性代币数量

添加流动性ETH

function addLiquidityETH(
  address token,
  uint amountTokenDesired,
  uint amountTokenMin,
  uint amountETHMin,
  address to,
  uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);

使用 ETH 向 ERC-20⇄WETH 池添加流动性。

  • 为了涵盖所有可能的场景,msg.sender应该已经为路由器提供了至少 amountTokenDesired 的令牌余量。
  • 始终根据交易执行时的价格,以理想的比例添加资产。
  • msg.value被视为所需的 ETH 金额。
  • 剩余的 ETH(如果有)将返回到msg.sender
  • 如果传递的代币和 WETH 的池不存在,则会自动创建一个池,并msg.value添加正好 amountTokenDesired/ 代币。
  • amountTokenMin并可amountETHMin用于防滑保护。
  • deadline用于设置执行 tx 所需时间的时间限制。

参数

姓名 类型 描述
token 地址 货币对中除 WETH 之外的其他代币
amountTokenDesired 单位 如果 WETH/代币价格 <= msg.value/amountTokenDesired (代币贬值),则作为流动性添加的代币数量
amountTokenMin 单位 msg.value如果代币/WETH 价格 <= amountTokenDesired/ (WETH 贬值),则作为流动性添加的 ETH 数量
amountETHMin 单位 限制了交易恢复之前 WETH/代币价格可以上涨的程度。必须 <= amountTokenDesire
to 地址 流动性代币的接收者
deadline 单位 unix 时间戳,之后事务将恢复

退货

姓名 类型 描述
amountToken 单位 发送给该货币对的代币数量
amountETH 单位 转换为 WETH 并发送到池中的 ETH 数量
liquidity 单位 铸造的流动性代币数量

移除流动性

function removeLiquidity(
  address tokenA,
  address tokenB,
  uint liquidity,
  uint amountAMin,
  uint amountBMin,
  address to,
  uint deadline
) external returns (uint amountA, uint amountB);

从 ERC-20⇄ERC-20 池中移除流动性。

  • msg.sender应该已经为路由器提供了池中至少流动性的津贴。
  • amountAMin并可amountBMin用于防滑保护。
  • deadline用于设置执行 tx 所需时间的时间限制。

参数

姓名 类型 描述
tokenA 地址 该对中其中一个代币的地址
tokenB 地址 该对中另一个令牌的地址
liquidity 单位 要移除或销毁的流动性代币数量
amountAMin 单位 为使交易不恢复而必须接收的最小 tokenA 数量
amountBMin 单位 为使交易不恢复而必须接收的最小 tokenB 数量
to 地址 标的资产的接收者
deadline 单位 unix 时间戳,之后事务将恢复

退货

姓名 类型 描述
amountA 单位 收到的tokenA数量
amountB 单位 收到的tokenB数量

移除流动性ETH

function removeLiquidityETH(
  address token,
  uint liquidity,
  uint amountTokenMin,
  uint amountETHMin,
  address to,
  uint deadline
) external returns (uint amountToken, uint amountETH);

从 ERC-20⇄WETH 池中移除流动性并接收 ETH。

  • msg.sender应该已经为路由器提供了池中至少流动性的津贴。
  • amountTokenMin并可amountETHMin用于防滑保护。
  • deadline用于设置执行 tx 所需时间的时间限制。

参数

姓名 类型 描述
token 地址 货币对中除 ETH 之外的其他代币
liquidity 单位 要移除或销毁的流动性代币数量
amountTokenMin 单位 为使交易不恢复而必须接收的最小代币数量
amountETHMin 单位 交易必须收到的最低 ETH 金额才能不恢复
to 单位 标的资产的接收者
deadline 单位 unix 时间戳,之后事务将恢复

退货

姓名 类型 描述
amountToken 单位 收到的代币数量
amountETH 单位 收到的 ETH 数量

通过许可删除流动性

function removeLiquidityWithPermit(
  address tokenA,
  address tokenB,
  uint liquidity,
  uint amountAMin,
  uint amountBMin,
  address to,
  uint deadline,
  bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);

无需预先批准即可从 ERC-20⇄ERC-20 池中移除流动性。

  • amountAMin并可amountBMin用于防滑保护。
  • deadline用于设置执行 tx 所需时间的时间限制。

参数

姓名 类型 描述
tokenA 地址 该对中其中一个代币的地址
tokenB 地址 该对中另一个令牌的地址
liquidity 单位 要移除的流动性代币数量
amountAMin 单位 为使交易不恢复而必须接收的最小 tokenA 数量
amountBMin 单位 为使交易不恢复而必须接收的最小 tokenB 数量
to 地址 标的资产的接收者
deadline 单位 unix 时间戳,之后事务将恢复
approveMax 布尔值 签名中的批准金额是否用于流动性或uint(-1)
v uint8 v 许可证签名的组成部分
r 字节32 许可证签名的 r 部分
s 字节32 s 许可证签名的组成部分

退货

姓名 类型 描述
amountA 单位 收到的tokenA数量
amountB 单位 收到的tokenB数量

删除LiquidityETHWithPermit

function removeLiquidityETHWithPermit(
  address token,
  uint liquidity,
  uint amountTokenMin,
  uint amountETHMin,
  address to,
  uint deadline,
  bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);

从 ERC-20⇄WETTH 池中移除流动性并无需预先批准即可接收 ETH。

  • amountAMin并可amountBMin用于防滑保护。
  • deadline用于设置执行 tx 所需时间的时间限制。

参数

姓名 类型 描述
token 地址 货币对中除 WETH 之外的其他代币
liquidity 单位 要移除的流动性代币数量
amountTokenMin 单位 为使交易不恢复而必须接收的最小代币数量
amountETHMin 单位 交易必须收到的最低 ETH 金额才能不恢复
to 地址 标的资产的接收者
deadline 单位 unix 时间戳,之后事务将恢复
approveMax 布尔值 签名中的批准金额是否用于流动性或uint(-1)
v uint8 v 许可证签名的组成部分
r 字节32 许可证签名的 r 部分
s 字节32 s 许可证签名的组成部分

退货

姓名 类型 描述
amountToken 单位 收到的代币数量
amountETH 单位 收到的 ETH 数量

删除LiquidityETHSupportingFeeOnTransferTokens

function removeLiquidityETHSupportingFeeOnTransferTokens(
  address token,
  uint liquidity,
  uint amountTokenMin,
  uint amountETHMin,
  address to,
  uint deadline
) external returns (uint amountETH);

与removeLiquidityETH相同,但对于转账时收取费用的代币会成功。

参数

姓名 类型 描述
token 地址 货币对中除 WETH 之外的其他代币
liquidity 单位 要移除的流动性代币数量
amountTokenMin 单位 为使交易不恢复而必须接收的最小代币数量
amountETHMin 单位 交易必须收到的最低 ETH 金额才能不恢复
to 地址 标的资产的接收者
deadline 单位 unix 时间戳,之后事务将恢复

退货

姓名 类型 描述
amountETH 单位 收到的 ETH 数量

删除LiquidityETHWithPermitSupportingFeeOnTransferTokens

function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
  address token,
  uint liquidity,
  uint amountTokenMin,
  uint amountETHMin,
  address to,
  uint deadline,
  bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);

与removeLiquidityETHWithPermit相同,但对于在转账时收取费用的代币会成功。

参数

姓名 类型 描述
token 地址 货币对中除 WETH 之外的其他代币
liquidity 单位 要移除的流动性代币数量
amountTokenMin 单位 为使交易不恢复而必须接收的最小代币数量
amountETHMin 单位 交易必须收到的最低 ETH 金额才能不恢复
to 地址 标的资产的接收者
deadline 单位 unix 时间戳,之后事务将恢复
approveMax 布尔值 签名中的批准金额是否用于流动性或uint(-1)
v uint8 v 许可证签名的组成部分
r 字节32 许可证签名的 r 部分
s 字节32 s 许可证签名的组成部分

退货

姓名 类型 描述
amountETH 单位 收到的 ETH 数量。

交换ExactTokensForTokens

function swapExactTokensForTokens(
  uint amountIn,
  uint amountOutMin,
  address[] calldata path,
  address to,
  uint deadline
) external returns (uint[] memory amounts);

沿着路径确定的路线,将精确数量的输入令牌交换为尽可能多的输出令牌。路径的第一个元素是输入令牌,最后一个元素是输出令牌,任何中间元素表示要进行交易的中间对(例如,如果不存在直接对)。

  • path.length必须 >= 2。每对连续地址的池必须存在并且具有流动性。
  • msg.sender应该已经在输入令牌上为路由器提供了至少 amountIn 的余量。
  • amountOutMin可用于防滑保护。
  • deadline用于设置执行 tx 所需时间的时间限制。

参数

姓名 类型 描述
amountIn 单位 要发送的输入令牌数量
amountOutMin 单位 为使交易不恢复而必须接收的最小输出代币数量
path 地址[] 呼叫数据 令牌地址数组
to 地址 输出令牌的接收者
deadline 单位 unix 时间戳,之后事务将恢复

退货

姓名 类型 描述
amounts uint[]内存 输入代币金额和所有后续输出代币金额。

swapTokensForExactTokens

function swapTokensForExactTokens(
  uint amountOut,
  uint amountInMax,
  address[] calldata path,
  address to,
  uint deadline
) external returns (uint[] memory amounts);

沿着路径确定的路线,以尽可能少的输入令牌接收准确数量的输出令牌。路径的第一个元素是输入令牌,最后一个元素是输出令牌,任何中间元素表示要进行交易的中间令牌(例如,如果不存在直接对)。

  • path.length必须 >= 2。每对连续地址的池必须存在并且具有流动性。
  • msg.sender应该已经在输入令牌上为路由器提供了至少 amountIn 的余量。
  • amountInMax可用于防滑保护。
  • deadline用于设置执行 tx 所需时间的时间限制。

参数

姓名 类型 描述
金额输出 单位 接收的输出代币数量
最大金额 单位 交易恢复之前需要的最大输入代币数量
小路 地址[] 呼叫数据 令牌地址数组
地址 输出令牌的接收者
最后期限 单位 unix 时间戳,之后事务将恢复

退货

姓名 类型 描述
金额 uint[]内存 输入代币金额和所有后续输出代币金额

交换ExactETHForTokens

function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
  external
  payable
  returns (uint[] memory amounts);

沿着路径确定的路线,将确切数量的 ETH 交换为尽可能多的输出代币。路径的第一个元素必须是WETH,最后一个是输出代币,任何中间元素代表要进行交易的中间对(例如,如果不存在直接对)。

  • path.length必须 >= 2。每对连续地址的池必须存在并且具有流动性。
  • amountOutMin可用于防滑保护。
  • deadline用于设置执行 tx 所需时间的时间限制。

参数

姓名 类型 描述
msg.value(金额) 单位 要发送的 ETH 数量
amountOutMin uint 为使交易不恢复而必须接收的最小输出代币数量
path address[] calldata 令牌地址数组
to address 输出令牌的接收者
deadline uint unix 时间戳,之后事务将恢复

退货

姓名 类型 描述
金额 uint[] memory 输入代币金额和所有后续输出代币金额

swapTokensForExactETH

function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
  external
  returns (uint[] memory amounts);

沿着路径确定的路线,以尽可能少的输入代币接收准确数量的 ETH。路径的第一个元素是输入令牌,最后一个元素必须是WETH,任何中间元素表示要进行交易的中间对(例如,如果不存在直接对)。

  • msg.sender应该已经在输入令牌上为路由器提供了至少 amountInMax 的容差。
  • 如果to地址是智能合约,它必须具有接收ETH的能力。
  • path.length必须 >= 2。每对连续地址的池必须存在并且具有流动性。
  • amountInMax可用于防滑保护。
  • deadline用于设置执行 tx 所需时间的时间限制。

参数

姓名 类型 描述
amountOut 单位 接收的 ETH 数量
amountInMax 单位 交易恢复之前需要的最大输入代币数量
path 地址[] 呼叫数据 令牌地址数组
to 地址 ETH 接收者
deadline 单位 unix 时间戳,之后事务将恢复

退货

姓名 类型 描述
amounts uint[]内存 输入代币金额和所有后续输出代币金额

swapExactTokensForETH

function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
  external
  returns (uint[] memory amounts);

沿着路径确定的路线,将准确数量的代币兑换成尽可能多的 ETH。路径的第一个元素是输入令牌,最后一个元素必须是WETH,任何中间元素表示要进行交易的中间对(例如,如果不存在直接对)。

  • 如果to地址是智能合约,它必须具有接收ETH的能力。
  • path.length必须 >= 2。每对连续地址的池必须存在并且具有流动性。
  • amountOutMin可用于防滑保护。
  • deadline用于设置执行 tx 所需时间的时间限制。

参数

姓名 类型 描述
amountIn 单位 要发送的输入令牌数量
amountOutMin 单位 为使交易不恢复而必须接收的最小输出代币数量
path 地址[] 呼叫数据 令牌地址数组
to 地址 ETH 的接收者
deadline 单位 unix 时间戳,之后事务将恢复

退货

姓名 类型 描述
amounts uint[]内存 输入代币金额和所有后续输出代币金额

swapETHForExactTokens

function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
  external
  payable
  returns (uint[] memory amounts);

沿着路径确定的路线,以尽可能少的 ETH 接收准确数量的代币。路径的第一个元素必须是WETH,最后一个是输出代币,任何中间元素代表要进行交易的中间对(例如,如果不存在直接对)。

  • 剩余的 ETH(如果有)将返回到msg.sender
  • path.length必须 >= 2。每对连续地址的池必须存在并且具有流动性。
  • deadline用于设置执行 tx 所需时间的时间限制。

参数

姓名 类型 描述
amountOut 单位 接收的代币数量
msg.value(最大金额) 单位 交易恢复之前可以要求的最大 ETH 金额
path 地址[] 呼叫数据 令牌地址数组
to 地址 输出令牌的接收者
deadline 单位 unix 时间戳,之后事务将恢复

退货

姓名 类型 描述
amounts uint[]内存 输入代币金额和所有后续输出代币金额

swapExactTokensForTokensSupportingFeeOnTransferTokens

function swapExactTokensForTokensSupportingFeeOnTransferTokens(
  uint amountIn,
  uint amountOutMin,
  address[] calldata path,
  address to,
  uint deadline
) external;

与swapExactTokensForTokens相同,但对于在转账时收取费用的代币会成功。

  • msg.sender应该已经在输入令牌上为路由器提供了至少 amountIn 的余量。

参数

姓名 类型 描述
amountIn 单位 要发送的输入令牌数量。
amountOutMin 单位 为使交易不恢复而必须接收的最小输出代币数量。
path 地址[] 呼叫数据 令牌地址数组
to 地址 输出令牌的接收者
deadline 单位 unix 时间戳,之后事务将恢复

swapExactETHForTokensSupportingFeeOnTransferTokens

function swapExactETHForTokensSupportingFeeOnTransferTokens(
  uint amountOutMin,
  address[] calldata path,
  address to,
  uint deadline
) external payable;

与swapExactETHForTokens相同,但对于在转账时收取费用的代币会成功。

参数

姓名 类型 描述
msg.value(金额) 单位 要发送的 ETH 数量
amountOutMin 单位 为使交易不恢复而必须接收的最小输出代币数量
path 地址[] 呼叫数据 令牌地址数组
to 地址 输出令牌的接收者
deadline 单位 unix 时间戳,之后事务将恢复

swapExactTokensForETHSupportingFeeOnTransferTokens

function swapExactTokensForETHSupportingFeeOnTransferTokens(
  uint amountIn,
  uint amountOutMin,
  address[] calldata path,
  address to,
  uint deadline
) external;

与swapExactTokensForETH相同,但对于转账时收取费用的代币会成功。

  • 如果to地址是智能合约,它必须具有接收ETH的能力。

参数

姓名 类型 描述
amountIn 单位 要发送的输入令牌数量
amountOutMin 单位 为使交易不恢复而必须接收的最小输出代币数量
path 地址[] 呼叫数据 令牌地址数组。path.length必须 >= 2
to 地址 ETH 的接收者
deadline 单位 unix 时间戳,之后事务将恢复

接口

pragma solidity >=0.6.2;

import './IUniswapV2Router01.sol';

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
免责声明

免责声明:

本文不代表知点网立场,且不构成投资建议,请谨慎对待。用户由此造成的损失由用户自行承担,与知点网没有任何关系;

知点网不对网站所发布内容的准确性,真实性等任何方面做任何形式的承诺和保障;

网站内所有涉及到的区块链(衍生)项目,知点网对项目的真实性,准确性等任何方面均不做任何形式的承诺和保障;

网站内所有涉及到的区块链(衍生)项目,知点网不对其构成任何投资建议,用户由此造成的损失由用户自行承担,与知点网没有任何关系;

知点区块链研究院声明:知点区块链研究院内容由知点网发布,部分来源于互联网和行业分析师投稿收录,内容为知点区块链研究院加盟专职分析师独立观点,不代表知点网立场。

本文是全系列中第104 / 239篇:行业技术

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的电报
  • 这是我的电报扫一扫
  • weinxin
chatGPT账号
知点

发表评论

您必须登录才能发表评论!