Sushiswap V2 pair资金池交易对合约函数功能解析说明

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

chatGPT账号

Sushiswap V2 pair资金池交易对合约函数功能解析说明

V2对

V2Pair 合约负责所有配对逻辑,包括:流动性提供、交换和重新平衡配对。

V2Pair合约继承了ERC20功能,因此所有常见的ERC20都可以与pair代币一起使用。

本文档涵盖矿池特定功能,可以在此处找到完整的合同。

活动

薄荷

event Mint(address indexed sender, uint amount0, uint amount1);

每次通过铸币厂创建流动性代币时都会发出

烧伤

event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);

每次通过销毁销毁流动性代币时发出。

交换

event Swap(
  address indexed sender,
  uint amount0In,
  uint amount1In,
  uint amount0Out,
  uint amount1Out,
  address indexed to
);

每次通过swap发生交换时发出。

同步

event Sync(uint112 reserve0, uint112 reserve1);

每次通过mintburnswapsync更新储备时发出。

只读函数

最低流动性

function MINIMUM_LIQUIDITY() external pure returns (uint);

返回1000所有对。

  • 为了改善舍入误差并增加流动性供应的理论最小刻度大小,货币对会销毁第一个 MINIMUM_LIQUIDITY 池代币。
  • 在第一次提供流动性期间自动发生。

工厂

function factory() external view returns (address);

返回工厂地址。

代币0

function token0() external view returns (address);

返回排序顺序较低的配对标记的地址。

代币1

function token1() external view returns (address);

返回排序顺序较高的配对令牌的地址。

获取储备金

function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

返回用于定价交易和分配流动性的 token0 和 token1 的储备。还返回该对发生交互的最后一个块的block.timestamp(mod )。2**32

价格0累计最后

function price0CumulativeLast() external view returns (uint);

返回合约整个历史记录中每秒代币价格的总和。

  • 可用于跟踪任何时间间隔内的准确时间加权平均价格 (TWAP)。
  • TWAP 是通过读取所需 TWAP 间隔开始和结束时的累积价格来构建的。然后,可以将该累积价格的差异除以间隔长度,以创建该期间的 TWAP。

价格1累计最后

function price1CumulativeLast() external view returns (uint);

返回合约整个历史记录中每秒代币价格的总和。

k最后

function kLast() external view returns (uint);

返回截至最近的流动性事件的准备金乘积。

状态改变函数

薄荷

function mint(address to) external returns (uint liquidity);

创建池代币。

参数

姓名 类型 描述
to 地址 矿池代币接收者地址

退货

姓名 类型 描述
liquidity 单位 创建的流动性代币数量

烧伤

function burn(address to) external returns (uint amount0, uint amount1);

销毁矿池代币。

参数

姓名 类型 描述
to 地址 token0和token1的接收者地址

退货

姓名 类型 描述
amount0 单位 燃烧返回的 token0 数量
amount1 单位 燃烧返回的 token1 数量

交换

function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;

交换代币。对于定期交换,data.length必须是0.

  • 发出交换同步
  • 调用时 amount0Out 或 amount1Out 将为 0,具体取决于交换的来源和目的地。

参数

姓名 类型 描述
amount0Out 单位 矿池代币接收者地址
amount1Out 单位 该对中另一个令牌的地址
to 地址 令牌接收者地址
data 字节 calldata 交换后转发的数据

略读

function skim(address to) external;

允许用户将货币对当前余额之间的差额提取2^112 - 1给调用者(如果该差额大于 0)。

  • 用作恢复机制,以防足够的代币发送到一对以溢出储备的两个 uint112 存储槽,否则可能导致交易失败。

参数

姓名 类型 描述
to 地址 令牌浏览地址

同步

function sync() external;

存在将合约的准备金设置为当前余额。

  • 发出Sync
  • 在代币异步减少货币对余额的情况下用作恢复机制。

接口

pragma solidity >=0.5.0;

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}
pragma solidity >=0.5.0;

interface IUniswapV2ERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
}
免责声明

免责声明:

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

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

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

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

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

本文是全系列中第220 / 237篇:通证发行

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

发表评论

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