Skip to content
This repository has been archived by the owner on Apr 25, 2024. It is now read-only.

Commit

Permalink
Use default FACTORY_ADDRESS if the chain is not in the map
Browse files Browse the repository at this point in the history
  • Loading branch information
mikeki committed Feb 16, 2024
1 parent e1b062d commit 7e0f6da
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 16 deletions.
16 changes: 12 additions & 4 deletions src/entities/pair.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { ChainId, CurrencyAmount, Price, Token, WETH9 } from '@uniswap/sdk-core'
import { InsufficientInputAmountError } from '../errors'
import { computePairAddress, Pair } from './pair'
import { BigNumber } from '@ethersproject/bignumber'
import {BigNumber} from '@ethersproject/bignumber'
import {ChainId, CurrencyAmount, Price, Token, WETH9} from '@uniswap/sdk-core'
import {FACTORY_ADDRESS} from 'constants';
import {InsufficientInputAmountError} from '../errors'
import {computePairAddress, Pair} from './pair'

describe('computePairAddress', () => {
it('should correctly compute the pool address', () => {
Expand Down Expand Up @@ -42,6 +43,9 @@ describe('Pair', () => {
const USDC = new Token(1, '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 18, 'USDC', 'USD Coin')
const DAI = new Token(1, '0x6B175474E89094C44Da98b954EedeAC495271d0F', 18, 'DAI', 'DAI Stablecoin')

const USDC_SEPOLIA = new Token(11155111, '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 18, 'USDC', 'USD Coin')
const DAI_SEPOLIA = new Token(11155111, '0x6B175474E89094C44Da98b954EedeAC495271d0F', 18, 'DAI', 'DAI Stablecoin')

describe('constructor', () => {
it('cannot be used for tokens on different chains', () => {
expect(
Expand All @@ -54,6 +58,10 @@ describe('Pair', () => {
it('returns the correct address', () => {
expect(Pair.getAddress(USDC, DAI)).toEqual('0xAE461cA67B15dc8dc81CE7615e0320dA1A9aB8D5')
})

it('returns the default address for a testnet not in the map', () => {
expect(Pair.getAddress(USDC_SEPOLIA, DAI_SEPOLIA)).toEqual(FACTORY_ADDRESS)
})
})

describe('#token0', () => {
Expand Down
26 changes: 14 additions & 12 deletions src/entities/pair.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,25 @@
import { BigintIsh, Price, sqrt, Token, CurrencyAmount, Percent } from '@uniswap/sdk-core'
import invariant from 'tiny-invariant'
import {getCreate2Address} from '@ethersproject/address'
import {BigNumber} from '@ethersproject/bignumber'
import {keccak256, pack} from '@ethersproject/solidity'
import {BigintIsh, CurrencyAmount, Percent, Price, sqrt, Token} from '@uniswap/sdk-core'
import JSBI from 'jsbi'
import { pack, keccak256 } from '@ethersproject/solidity'
import { getCreate2Address } from '@ethersproject/address'
import { BigNumber } from '@ethersproject/bignumber'
import invariant from 'tiny-invariant'

import {
_1000,
_997,
BASIS_POINTS,
FACTORY_ADDRESS,
FACTORY_ADDRESS_MAP,
FIVE,
INIT_CODE_HASH,
MINIMUM_LIQUIDITY,
FIVE,
_997,
_1000,
ONE,
ZERO,
BASIS_POINTS,
ONE_HUNDRED_PERCENT,
ZERO,
ZERO_PERCENT
} from '../constants'
import { InsufficientReservesError, InsufficientInputAmountError } from '../errors'
import {InsufficientInputAmountError, InsufficientReservesError} from '../errors'

export const computePairAddress = ({
factoryAddress,
Expand All @@ -41,7 +42,8 @@ export class Pair {
private readonly tokenAmounts: [CurrencyAmount<Token>, CurrencyAmount<Token>]

public static getAddress(tokenA: Token, tokenB: Token): string {
return computePairAddress({ factoryAddress: FACTORY_ADDRESS_MAP[tokenA.chainId], tokenA, tokenB })
const factoryAddress = FACTORY_ADDRESS_MAP[tokenA.chainId] ?? FACTORY_ADDRESS
return computePairAddress({ factoryAddress, tokenA, tokenB })
}

public constructor(currencyAmountA: CurrencyAmount<Token>, tokenAmountB: CurrencyAmount<Token>) {
Expand Down

0 comments on commit 7e0f6da

Please sign in to comment.