UnifiPair.sol
Primary Uses - UnifiPair.sol is responsible for many of the functionalities of liquidity pool tokens and UP tokens. First, it is responsible for the issuing and burning of Liquidity Pool Tokens (uTokens). In addition, it allows for direct reads of the reserves and ratio of the liquidity pool, as well as swaps. Lastly, it is where UP claims are processed.
uTrade V2 Pair Code / Interfaces
uTrade V2 Pair (Solidity) | |
uTrade V2 Pair Interface as JSON | Link Here |
uTrade V2 Pair as Typescript | Link Here |
Import statement codeblock (when available) |
uTrade V2 Pair Contract Addresses
Each uTrade V2 Liquidity Pool uses the uTrade V2 ERC20 Interface in the contract. An example would be 0x96351b805FB389B761c1318B43a7dC0C679BEd5E
(Link) for the UNIFI / ETH pair on Ethereum Main Net.
Events
Mint
The Mint
event is emitted any time liquidity tokens are created via the mint
function. In other words, when a user adds liquidity to a pair, then they will receive LP tokens, therefore the Mint
event will be emitted.
Burn
The Burn
event is emitted any time liquidity tokens are burned via the burn
function. In other words, when a user removes liquidity from a pair, their LP tokens will be burned, therefore the Burn
event will be emitted.
Swap
The Swap
event is emitted any time the swap
function is used. Under the hood, all trades on uTrade V2 are swaps. Therefore, any time somebody trades on the pair, the uTrade contract for that pair will emit a Swap
event.
Sync
The Sync
event is emitted anytime a function occurs that may change the reserves of a token pair. In other words, anytime the amount of the two tokens within a liquidity pool may change. Therefore, whenever amint
, burn
, swap
, or sync
function is called, the Sync
event will be emitted.
Read-Only Functions
MINIMUM_LIQUIDITY
The MINIMUM_LIQUIDITY
function will always return 1000. The function itself refers to the burning of initial LP tokens that occurs once when a pool is created. This burn of a tiny amount allows for cleaner LP token numbers therefore avoiding LP tokens being represented as very small decimals value. This allows the tick size to be more precise and prevents rounding errors.
factory
The factory
function will return the current factory address for uTrade V2.
WBNB
The WETH
function will return the address of WETH on Ethereum. As this does not change, it will always return 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
.
token0
The token0
function will return the contract address of the first token that makes up the liquidity pair. In other words, if the liquidity pool is made up of USDT / USDC, it will return the contract address of USDT.
token1
The token1
function will return the contract address of the first token that makes up the liquidity pair. In other words, if the liquidity pool is made up of USDT / USDC, it will return the contract address of USDC.
getReserves
The getReserves
function returns the reserves of the two tokens that make up the liquidity pool as reserve0 and reserve1. These two values can be helpful in determining the current price of each asset. The function also returns a timestamp with the block number.
price0CumulativeLast
The price0CumulativeLast
function is for Oracle usage on uTrade V2. The value of token0 is captured at the end of each block, and can be called using this function to feed into an Oracle to determine a more time-weighted 'average' price.
price1CumulativeLast
The price1CumulativeLast
function is for Oracle usage on uTrade V2. The value of token1 is captured at the end of each block, and can be called using this function to feed into an Oracle to determine a more time-weighted 'average' price.
kLast
The kLast
function returns the value of reserve0 * reserve1, after any event that may have triggered a change in the liquidity. For example, the execution of a swap function or a mint function.
State-Changing Functions
mint
The mint
function creates the LP tokens that represent a user's tokens in a liquidity pool. For example, if a user provides 1 ETH and 2000 USDT liquidity to a pool, the Unifi Pair Smart Contract will mint an amount of uUSDT tokens. Will emit the Mint
, Sync
, and Transfer
events.
burn
The burn
function destroys the LP tokens that represent a user's token in a liquidity pool. For example, if a user removes 1 ETH and 2000 USDT liquidity to a pool, the Unifi Pair Smart Contract will burn an amount of uUSDT tokens. Will emit the Burn
, Sync
, and Transfer
events.
claimUP
The claimUP
function claims any UP earned from providing liquidity if any exists, and sends the UP to the address provided.
swap
The swap
function exchanges one token for another. Under the hood, all trades on uTrade V2 use this function. The calldata must be 0 during a normal swap, but must contain data if executing a flash loan. Emits the Swap
and Sync
events.
skim
The skim
function operates as a safeguard if the amount of tokens causes a data error due to too large of a number in the reserves pools. In this unusual circumstance, this will trigger failures in trades. The skim
function can be called to return the overflowed tokens to the caller.
sync
The sync
function operates as a safeguard in certain events where the token balance changes outside of normal trading. An example would be an algorithmic stablecoin re-balancing, therefore lowering or raising the amount of the algorithmic stablecoin in the pool. The sync
function may be called to reset the price ratio to the new reserves. Emits the Sync
event.
Interface Code
Last updated