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 |
单位 |
铸造的流动性代币数量 |
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数量 |
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数量 |
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 数量 |
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 数量 |
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 数量。 |
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[]内存 |
输入代币金额和所有后续输出代币金额。 |
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[]内存 |
输入代币金额和所有后续输出代币金额 |
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 |
输入代币金额和所有后续输出代币金额 |
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[]内存 |
输入代币金额和所有后续输出代币金额 |
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[]内存 |
输入代币金额和所有后续输出代币金额 |
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[]内存 |
输入代币金额和所有后续输出代币金额 |
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
与swapExactTokensForTokens相同,但对于在转账时收取费用的代币会成功。
msg.sender
应该已经在输入令牌上为路由器提供了至少 amountIn 的余量。
姓名 |
类型 |
描述 |
amountIn |
单位 |
要发送的输入令牌数量。 |
amountOutMin |
单位 |
为使交易不恢复而必须接收的最小输出代币数量。 |
path |
地址[] 呼叫数据 |
令牌地址数组 |
to |
地址 |
输出令牌的接收者 |
deadline |
单位 |
unix 时间戳,之后事务将恢复 |
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
与swapExactETHForTokens相同,但对于在转账时收取费用的代币会成功。
姓名 |
类型 |
描述 |
msg.value (金额) |
单位 |
要发送的 ETH 数量 |
amountOutMin |
单位 |
为使交易不恢复而必须接收的最小输出代币数量 |
path |
地址[] 呼叫数据 |
令牌地址数组 |
to |
地址 |
输出令牌的接收者 |
deadline |
单位 |
unix 时间戳,之后事务将恢复 |
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;
}
免责声明
发文时比特币价格:$29249
免责声明:
本文不代表行至网立场,且不构成投资建议,请谨慎对待。用户由此造成的损失由用户自行承担,与行至网没有任何关系;
行至网不对网站所发布内容的准确性,真实性等任何方面做任何形式的承诺和保障;
网站内所有涉及到的区块链(衍生)项目,行至网对项目的真实性,准确性等任何方面均不做任何形式的承诺和保障;
网站内所有涉及到的区块链(衍生)项目,行至网不对其构成任何投资建议,用户由此造成的损失由用户自行承担,与行至网没有任何关系;
行至区块链研究院声明:行至区块链研究院内容由行至网发布,部分来源于互联网和行业分析师投稿收录,内容为行至区块链研究院加盟专职分析师独立观点,不代表行至网立场。
版权声明:本文采用知识共享
署名4.0国际许可协议 [BY-NC-SA] 进行授权,未经允许不得转载。
文章名称:《Sushiswap V2 router路由地址合约函数功能解析说明》
文章链接:
https://www.xingzhi.io/definance/21809.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
评论前必须登录!
注册