v1.0 Pair

The v1.0 Pair contracts are responsible for all pair logic including: liquidity provision, swapp

The v1.0Pair contracts are responsible for all pair logic including: liquidity provision, swapping, and rebalancing the pair.

The v1.0Pair contract inherits ERC20 functionality, so all usual ERC20 can be used with pair tokens.

This documentation covers pool specific functionality, where the full contract can be found here.

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

Emitted each time liquidity tokens are created via mint.

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

Emitted each time liquidity tokens are destroyed via burn.

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

Emitted each time a swap occurs via swap.

Emitted each time reserves are updated via mint, burn, swap, or sync.

Read-Only Functions​arrow-up-right

MINIMUM_LIQUIDITY​arrow-up-right

Returns 1000 for all pairs.

  • To ameliorate rounding errors and increase the theoretical minimum tick size for liquidity provision, pairs burn the first MINIMUM_LIQUIDITY pool tokens.

  • Happens automatically during the first liquidity provision.

Returns the factory address.

Returns the address of the pair token with the lower sort order.

Returns the address of the pair token with the higher sort order.

Returns the reserves of token0 and token1 used to price trades and distribute liquidity. Also returns the block.timestamp (mod 2**32) of the last block during which an interaction occurred for the pair.

price0CumulativeLast​arrow-up-right

Returns the sum of the token's price for every second in the entire history of the contract.

  • Can be used to track accurate time-weighted average prices (TWAP)s across any time interval.

  • The TWAP is constructed by reading the cumulative price at the beginning and at the end of the desired TWAP interval. The difference in this cumulative price can then be divided by the length of the interval to create a TWAP for that period.

price1CumulativeLast​arrow-up-right

Returns the sum of the token's price for every second in the entire history of the contract.

Returns the product of the reserves as of the most recent liquidity event.

State-Changing Functions​arrow-up-right

Creates pool tokens.

  • Emits mint, Transfer

Parameters​arrow-up-right

Name
Type
Description

to

address

address of the receiver of pool tokens

Returns​arrow-up-right

Name
Type
Description

liquidity

uint

amount of liquidity tokens created

Destroys pool tokens.

  • Emits burn, Transfer

Parameters​arrow-up-right

Name
Type
Description

to

address

address of the receiver of token0 and token1

Returns​arrow-up-right

Name
Type
Description

amount0

uint

amount of token0 returned from burn

amount1

uint

amount of token1 returned from burn

Swaps tokens. For regular swaps, data.length must be 0.

  • Emits swap

  • Either amount0Out or amount1Out will be 0 on calls depending on what the swap is from and to.

Parameters​arrow-up-right

Name
Type
Description

amount0Out

uint

address of the receiver of pool tokens

amount1Out

uint

address of the other token in the pair

to

address

address of the receiver of out token

data

bytes

calldata data to pass forward after the swap

Allows a user to withdraw the difference between the current balance of the pair and 2^112 - 1 to the caller, if that difference is greater than 0.

  • Used as a recovery mechanism in case enough tokens are sent to a pair to overflow the two uint112 storage slots for reserves, which could otherwise cause trades to fail.

Parameters​arrow-up-right

Name
Type
Description

to

address

address to skim tokens to

Exists to set the the reserve of the contract to the current balances.

  • Used as recovery mechanism in the case that a token asynchronously deflates the balance of a pair.

Last updated