This contract deploys V3 pools and manages ownership and control over pool protocol fees
Events, Read-Only Functions, and State-Changing Functions
Events
PoolCreated
event PoolCreated(
address indexed token0,
address indexed token1,
uint24 indexed fee,
int24 tickSpacing,
address pool,
uint256 exid
)
Emitted when a pool is created
Parameters:
Name | Type | Description |
---|
| | The first token of the pool by address sort order |
| | The second token of the pool by address sort order |
| | The fee collected upon every swap in the pool, denominated in hundredths of a bip |
| | The minimum number of ticks between initialized ticks |
| | The address of the created pool |
event FeeAmountEnabled(
uint24 fee,
int24 tickSpacing
)
Emitted when a new fee amount is enabled for pool creation via the factory
Parameters:
Name | Type | Description |
---|
| | The enabled fee, denominated in hundredths of a bip |
| | The minimum number of ticks between initialized ticks for pools created with the given fee |
Read-Only Functions
getPoolCount
function getPoolCount() external view override returns (uint256);
Get the number of pools created in V3
Return Values:
Name | Type | Description |
---|
| | The number of pools created in V3 |
getPoolAddress
function getPoolAddress(uint256 idx) external view override returns (address);
Parameters:
Return Values:
function getPool(
address tokenA,
address tokenB,
uint24 fee
) external view returns (address pool)
Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist
tokenA and tokenB may be passed in either token0/token1 or token1/token0 order
Parameters:
Name | Type | Description |
---|
| | The contract address of either token0 or token1 |
| | The contract address of the other token |
| | The fee collected upon every swap in the pool, denominated in hundredths of a bip |
Return Values:
feeAmountTickSpacing
function feeAmountTickSpacing(
uint24 fee
) external view returns (int24)
Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled
A fee amount can never be removed, so this value should be hard coded or cached in the calling context
Parameters:
Name | Type | Description |
---|
| | The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee |
Return Values:
State-Changing Functions
createPool
function createPool(
address tokenA,
address tokenB,
uint24 fee
) external returns (address pool)
Creates a pool for the given two tokens and fee
tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved from the fee.
Parameters:
Name | Type | Description |
---|
| | One of the two tokens in the desired pool |
| | The other of the two tokens in the desired pool |
| | The desired fee for the pool |
Return Values:
Name | Type | Description |
---|
| | The address of the newly created pool |
function enableFeeAmount(
uint24 fee,
int24 tickSpacing
) external
Enables a fee amount with the given tickSpacing
Fee amounts may never be removed once enabled
Parameters:
Name | Type | Description |
---|
| | The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6) |
| | The spacing between ticks to be enforced for all pools created with the given fee amount |