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);
每次通过mint、burn、swap或sync更新储备时发出。
只读函数
最低流动性
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 |
单位 | 该对中另一个令牌的地址 |
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;
}
评论前必须登录!
注册