WhiteSwap
  • About WhiteSwap
  • Protocol Overview
    • How WhiteSwap Works
    • Eсosystem Participants
    • Smart Contracts
    • Glossary
  • Core Concepts
    • Swaps
    • Pools
    • Flash Swaps
    • Oracles
    • Farming
    • WSD Staking
  • Advanced Topics
    • Fees
    • Pricing
    • Understanding Returns
    • Security
    • Research
  • Governance
    • Overview
    • Process
    • Glossary
  • Governance Token
    • Introducing WSD
    • Allocation & Vesting
    • Community Treasury
  • Developer Guides
    • Token Listing
    • Javascript SDK
      • SDK Quick Start
      • Fetching Data
      • Pricing
      • Trading
      • Pair Addresses
  • Reference
    • API
      • API Overview
      • Entities
      • Queries
    • SDK
      • Getting Started
      • Token
      • Pair
      • Route
      • Trade
      • Fractions
      • Fetcher
      • Other Exports
    • Smart Contracts
Powered by GitBook
On this page
  • getPair
  • CREATE2
  • Examples

Was this helpful?

  1. Developer Guides
  2. Javascript SDK

Pair Addresses

PreviousTradingNextAPI

Last updated 4 years ago

Was this helpful?

getPair

The most obvious way to get the address for a pair is to call getPair on the factory. If the pair exists, this function will return its address, else address(0) (0x0000000000000000000000000000000000000000).

  • The “canonical” way to determine whether or not a pair exists.

  • Requires an on-chain lookup.

CREATE2

Thanks to some , we can also compute pair addresses without any on-chain lookups because of . The following values are required for this technique:

address

salt

keccak256(abi.encodePacked(token0, token1))

keccak256(init_code)

0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f

  • token0 must be strictly less than token1 by sort order.

  • Can be computed offline.

  • Requires the ability to perform keccak256.

Examples

TypeScript

import { FACTORY_ADDRESS, INIT_CODE_HASH } from '@whiteswap/sdk'
import { pack, keccak256 } from '@ethersproject/solidity'
import { getCreate2Address } from '@ethersproject/address'

const token0 = '0xCAFE000000000000000000000000000000000000' // change me!
const token1 = '0xF00D000000000000000000000000000000000000' // change me!

const pair = getCreate2Address(
  FACTORY_ADDRESS,
  keccak256(['bytes'], [pack(['address', 'address'], [token0, token1])]),
  INIT_CODE_HASH'
)

The

This example makes use of the . In reality, the SDK computes pair addresses behind the scenes, obviating the need to compute them manually like this.

fancy footwork in the factory
CREATE2
WhiteSwap SDK
factory address