UnifiERC20.sol
Primary Uses - UnifiERC20.sol essentially ports the properties of HRC-20 tokens on to Unifi LP Tokens, or uTokens. An example of this in practice would be the 'approve' transaction.

uTrade V2 UnifiERC20 Code / Interfaces

uTrade V2 UnifiERC20 (Solidity)
Link Here
uTrade V2 UnifiERC20 Interface as JSON
Link Here
uTrade V2 UnifiERC20 as Typescript
Link Here
Import statement codeblock (when available)

uTrade V2 UnifiERC20 Contract Addresses

Each uTrade V2 Liquidity Pool uses the uTrade V2 ERC20 Interface in the contract. An example would be one1suatku23s9ll76a683lmzffqn8ppp29sdtn6xj or 0x873abb7151817fff6bba3c7fb1252099c210a8b0 (Link) for the UP / WONE pair.

Events

Approval

event Approval(address indexed owner, address indexed spender, uint value);
The Approval event is emitted anytime an approve or permit function is called.

Transfer

event Transfer(address indexed from, address indexed to, uint value);
The Transfer event is emitted anytime a transfer of LP tokens occurs, by the transfer, transferFrom, mint, or burn functions.

Read-Only Functions

name

function name() external pure returns (string memory);
The name function will return "Unifi LPs" for all liquidity pool contracts.

symbol

function symbol() external pure returns (string memory);
The symbol function will return "Unifi-LP" for all liquidity pool contracts.

decimals

function decimals() external pure returns (uint8);
The decimals function returns "18" as a uint8 value, which is the precision for each uToken on uTrade V2.

totalSupply

function totalSupply() external view returns (uint);
The totalSupply function returns the total amount uTokens for a pair.

balanceOf

function balanceOf(address owner) external view returns (uint);
The balanceOf function returns the balance of uTokens for the provided address.

allowance

function allowance(address owner, address spender) external view returns (uint);
The allowance function returns the amount of tokens an address is approved to transfer when using the transferFrom function.

DOMAIN_SEPARATOR

function DOMAIN_SEPARATOR() external view returns (bytes32);
The DOMAIN_SEPARATOR function is used in the permit function, and is one of the components that allows transactions to get through without a prior approve transaction. Calling a read function returns the bytes32 data that is required for use in permit function.

PERMIT_TYPEHASH

function PERMIT_TYPEHASH() external view returns (bytes32);
The PERMIT_TYPEHASH function is used in the permit function, and is one of the components that allows transactions to get through without a prior approve transaction. Calling a read function returns the bytes32 data that is required for use in the permit function.

nonces

function nonces(address owner) external view returns (uint);
The nonces function is used in the permit function. It returns the current nonce of the address provided.

State-Changing Functions

approve

function approve(address spender, uint value) external returns (bool);
The approve function sets a value for the amount of LP tokens the address provided is allowed to transfer. Returns a boolean value and emits the Approval event.

transfer

function transfer(address to, uint value) external returns (bool);
The transfer function lets an address send uTokens from one address to another, and returns a boolean value and emits a Transfer event.

transferFrom

function transferFrom(address from, address to, uint value) external returns (bool);
The transferFrom function sends uTokens from one address to another. This requires the sending address to have approval to send uTokens. Returns a boolean value and emits a Transferevent.

permit

function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
The permit function allows a sender to use a signature in lieu of an approval transaction, and sets the allowance for an address to send.

Function Parameter Breakdown

Parameter
Type
Description
owner
address
The owner of the address.
spender
address
The spender of the uTokens.
value
uint
The amount of uTokens to be transferred.
deadline
uint
The UNIX timestamp for which this transaction must be completed. If the transaction is mined after this deadline, the transaction will revert.
v
uint8
The v value of the permit. This is one of the three values that makes up the approval signature.
r
bytes32
The r value of the permit. This is one of the three values that makes up the approval signature.
s
bytes32
The s value of the permit. This is one of the three values that makes up the approval signature.

Interface Code

interface IUnifiERC20 {
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;
}
Copy link
Outline
uTrade V2 UnifiERC20 Code / Interfaces
uTrade V2 UnifiERC20 Contract Addresses
Events
Approval
Transfer
Read-Only Functions
name
symbol
decimals
totalSupply
balanceOf
allowance
DOMAIN_SEPARATOR
PERMIT_TYPEHASH
nonces
State-Changing Functions
approve
transfer
transferFrom
permit
Interface Code