LogoLogo
  • Introduction
  • Network
    • SXP
    • Staking
    • Governance
    • API
  • Swap
    • Smart Contract
      • Implement a Swap
      • Providing Liquidity
      • Building an Oracle
      • Flash Swaps
      • Pair Addresses
      • Supporting meta transactions
    • Subgraph API
      • Exchange
        • Entities
        • Queries
      • MasterChef
        • Entities
        • Queries
    • Reference
      • Smart Contracts
  • Swipechain
    • Introduction
    • Swipe Nodes
      • Churn
      • Bitfrost
      • Transactions
      • Continuous Liquidity Pools
      • Incentivizes
      • Governance
    • Run SwipeChain
      • Build on Source Code
      • Build with Script
    • Developers
      • How to contribute
      • Connecting to SwipeNode
  • Staking
  • Staking Details
    • Swipe Network
    • SXP Bonding
    • Unbond SXP
  • Metamask
    • Add Swipe Token
    • Deposit SXP
    • Connect MetaMask
    • Stake SXP
  • Trust Wallet
    • Add Swipe Token
    • Deposit SXP
    • Connect Trust Wallet
    • Stake SXP
  • Ledger
    • Connect Ledger
    • Add Swipe Token
    • Deposit SXP
    • Connect to Swipe
    • Stake SXP
  • View your Rewards
  • Claim Your Rewards
  • Governance
    • Vote
    • Proposals
  • FAQ
    • Frequently Asked Questions
Powered by GitBook
On this page
  • getPair
  • CREATE2
  • Examples

Was this helpful?

  1. Swap
  2. Smart Contract

Pair Addresses

PreviousFlash SwapsNextSupporting meta transactions

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

Solidity

address factory = 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f;
address token0 = 0xCAFE000000000000000000000000000000000000; // change me!
address token1 = 0xF00D000000000000000000000000000000000000; // change me!

address pair = address(uint(keccak256(abi.encodePacked(
  hex'ff',
  factory,
  keccak256(abi.encodePacked(token0, token1)),
  hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f'
))));

The

fancy footwork in the factory
CREATE2
factory address