When adding a new or existing liquidity pool, the initial step is typically to verify if the liquidity pool already exists before determining the next course of action. The factory contract provides a method to retrieve the pool address, if it exists, as shown below.
Checking if the liquidity pool exists using SaucerSwapโs REST API is also a suitable alternative. For more information, see Get V1 liquidity pools
Get the Existing Liquidity Pool if it Exists
โฝ No gas cost
Get the existing liquidity poolโs CREATE2 EVM address if it exists. If the pool does not exist on-chain, a zero address will be returned.
Function name: getPair
Parameter Name | Description |
---|
address tokenA | EVM address of the first token |
address tokenB | EVM address of the second token |
function getPair(
address tokenA,
address tokenB
) external view returns (address pair);
The ordering of tokens for tokenA and tokenB does not matter.
When working with HBAR, use the wrapped HBAR token ID (WHBAR) for either tokenA or tokenB.
Code Overview
Resources:
import * as ethers from 'ethers'; //V6
//Set one of Hedera's JSON RPC Relay as the provider
const provider = new ethers.JsonRpcProvider(hederaJsonRelayUrl, '', {
batchMaxCount: 1, //workaround for V6
});
//load ABI data containing the Factory's getPair function
const interfaces = new ethers.Interface(abi);
const factoryContract = new ethers.Contract(factoryEvmAddress, interfaces.fragments, provider);
const result = await factoryContract.getPair(tokenA, tokenB); //(tokenB, tokenA) will give same result
const poolEvmAddress = result; //address pool
Resources:
import * as ethers from 'ethers'; //V6
//Set one of Hedera's JSON RPC Relay as the provider
const provider = new ethers.JsonRpcProvider(hederaJsonRelayUrl, '', {
batchMaxCount: 1, //workaround for V6
});
//load ABI data containing the Factory's getPair function
const interfaces = new ethers.Interface(abi);
const factoryContract = new ethers.Contract(factoryEvmAddress, interfaces.fragments, provider);
const result = await factoryContract.getPair(tokenA, tokenB); //(tokenB, tokenA) will give same result
const poolEvmAddress = result; //address pool