Skip to main content

Pool (ERC-20)

This documentation covers ERC-20 functionality for denominating pool tokens. For DMM-specific functionality, see Pool.

Code#

The typical ERC20 functions are inherited from OpenZeppelin's ERC20 token implementation. In adiition, the ERC20Permit library containing a permit function for meta-approvals is used.

ERC20Permit.sol

Events#

Approval#

event Approval(address indexed owner, address indexed spender, uint value);

Emitted each time an approval occurs via approve or permit.

Transfer#

event Transfer(address indexed from, address indexed to, uint value);

Emitted each time a transfer occurs via transfer, transferFrom, mint, or burn.

Read-Only Functions#

name#

function name() external pure returns (string memory);

Returns KyberDMM LP for all pools.

symbol#

function symbol() external pure returns (string memory);

Returns DMM-LP for all pools.

decimals#

function decimals() external pure returns (uint8);

Returns 18 for all pools.

totalSupply#

function totalSupply() external view returns (uint);

Returns the total amount of LP tokens for a pools.

balanceOf#

function balanceOf(address owner) external view returns (uint);

Returns the amount of LP tokens owned by an address.

allowance#

function allowance(address owner, address spender) external view returns (uint);

Returns the amount of liquidity tokens owned by an address that a spender is allowed to transfer via transferFrom.

DOMAIN_SEPARATOR#

function DOMAIN_SEPARATOR() external view returns (bytes32);

Returns a domain separator for use in permit.

PERMIT_TYPEHASH#

function PERMIT_TYPEHASH() external view returns (bytes32);

Returns a typehash for use in permit.

nonces#

function nonces(address owner) external view returns (uint);

Returns the current nonce for an address for use in permit.

State-Changing Functions#

approve#

function approve(address spender, uint value) external returns (bool);

Lets msg.sender set their allowance for a spender.

transfer#

function transfer(address to, uint value) external returns (bool);

Lets msg.sender send pool tokens to an address.

transferFrom#

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

Sends pool tokens from one address to another.

permit#

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

Sets the allowance for a spender where approval is granted via a signature.

Interface#

import '@dynamic-amm/smart-contracts/contracts/interfaces/IERC20Permit.sol';
pragma solidity 0.6.6;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
interface IERC20Permit is IERC20 {
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
}

ABI#

import IERC20Permit from '@dynamic-amm/smart-contracts/artifacts/contracts/interfaces/IERC20Permit.sol/IERC20Permit.json'

https://unpkg.com/@dynamic-amm/smart-contracts/artifacts/contracts/interfaces/IERC20Permit.sol/IERC20Permit.json