LogoLogo
  • CrossCurve MetaLayer
    • βš™οΈWhat is CrossCurve MetaLayer
      • CrossCurve Consensus bridge
      • CrossCurve Pools v2
    • πŸ—ΊοΈRoadmap
      • 2024
  • 🏒CrossCurve DAO
    • Overview of CrossCurve DAO
    • Voting
    • Obtaining veEYWA and Calculating the Boost
    • Staking mechanics
    • NFTs
      • CrossCurve DAO NFT
      • EYWA NFT Collection
  • πŸ’ΌEarn with CrossCurve
    • Staking in CrossCurve
    • Providing Liquidity to CrossCurve Pools
    • Voting for Incentives
  • πŸ“–user documentation
    • πŸ›ΈMigration to Sonic
      • Why are we moving to Sonic
      • Sonic Upgrade Stages
      • Liquidity transfer from Fantom to Sonic
      • Sonic Incentives on CrossCurve MetaLayer
    • πŸ”ƒSwap interface
      • How to trade
      • Slippage settings
      • Routing
    • 🌊Liquidity Interface
      • Easy mode
      • via Curve (Balanced)
      • Liquidity provision use cases
        • Deposit
          • Easy mode (Imbalanced)
          • via Curve (Balanced)
        • Withdraw
          • Easy mode (Imbalanced)
          • via Curve (Balanced)
        • Curve Knowledge Database
          • Balanced liquidity provision
          • Guide to transferring CRV from Fantom chain to Ethereum mainnet
          • Disclamer
    • 🏒DAO
      • Locker Interface
      • Vote Interface
      • Incentives Interface
      • Working with the EYWA Locker contract in Arbiscan.
    • 🌾Yield
      • Farms Interface
        • Staking liquidity and earning rewards
      • APR Calculator
      • EYWA pool via Convex
    • πŸ’ΌVesting
      • Claim portal interface
      • Early farming program interface
    • EYWA NFT
      • Bridge interface in the Aurora chain
      • Merge interface in the Arbitrum chain
      • EYWA NFT Manager interface
      • Dashboard interface
    • Leaderboard
    • ❄️Outdated
      • Early farming program
  • πŸ“–Developer documentation
    • Pools/asset contracts
      • Hubchain Pools and Assets
      • πŸ’±Supported tokens
    • πŸ”—CrossCurve smart contracts
    • πŸ’»Guide for Developers
      • Technical Documentation for CrossCurve DAO Smart Contracts
        • CalldataHelperV1
        • DelegationManagerV1
        • DelegationConditionValidatorV1
        • EmissionManagerV1
        • EscrowManager
        • EscrowVoteManagerV1
        • GaugeFactoryV1
        • GaugeV1
        • IncentiveRewardsDistributor
        • LockHolderFactoryV1
        • LockHolderV1
        • ProposalManager
        • RebaseRewardsDistributorV1
        • RewardsDistributorFactoryV1
        • Treasury
      • πŸ”ƒMake cross-chain swap
      • πŸ”¦Tracking cross-chain swap
      • πŸ“”Pusher API Reference
      • πŸ“Glossary
      • API Specification
  • πŸ“£About CrossCurve
    • πŸ›‘οΈSecurity audits
    • 🧠Team
    • Project History
    • Website
    • Telegram
    • Twitter
    • Medium
    • Discord
    • YouTube
    • LinkedIn
    • GitHub
Powered by GitBook
On this page
  • Brief list of all actions for Liquidity Transfer
  • Detailed description of Liquidity Transfer actions
  • Obtaining Universal tokens for paired pools
  • Obtaining LP xfrxUSD
  • Obtaining xfrxUSD via the Curve App interface
  • Obtaining LP xfrxETH
  • Obtaining xfrxETH via the Curve App Interface
  • Obtaining scBTC
  • Obtaining a Synthetic Derivative
  • Obtaining sUSDC_arb
  • Providing Liquidity to pools on Sonic
  • Obtaining LP xsArbitrum via Curve
  • Obtaining LP xsArbitrum via CrossCurve
  • Depositing LP xsArbitrum into the CrossCurve Stable ARB Pool
Export as PDF
  1. user documentation
  2. Migration to Sonic

Liquidity transfer from Fantom to Sonic

PreviousSonic Upgrade StagesNextSonic Incentives on CrossCurve MetaLayer

Last updated 1 day ago

CrossCurve liquidity pools are starting their migration from the Fantom network to the Sonic network (learn more here). In this step-by-step guide, we will explore how to safely and profitably transfer your liquidity.

Please carefully read the entire list of required actions for transferring liquidity before starting the process.

When migrating to Sonic, the architecture of the pools changesβ€”instead of pools with 8 directions, paired pools are now used. Therefore, before transferring liquidity, please decide which paired pools you will transfer your liquidity to and how you will do it:

  • You can simply withdraw liquidity from a pool with 8 tokens and distribute it across 8 corresponding paired pools.

  • Alternatively, you can divert all liquidity from such a pool to a single paired pool or split it across several.

It’s also important to understand that, unlike the previous architecture, paired pools now include not only the directional token (synthetic) but also a "universal" token (xfrxUSD for USD, xfrxETH for ETH, and scBTC for BTC assets). Thus, transferring liquidity will require both the destination token and the "local universal" token.

Learn more about the changes in pool architecture.

Pool Hub-Chain Structure Update

This update will also affect the structure of the pool hub-chain. The previous pool system used Curve stable pools with 8 assets, connected via liquidity provider (LP) tokens from one or more pools:

V1 Pools (xSTABLE, xSTABLE2, xSTABLE3) consist of 8 synthetic derivatives backed by the original asset locked in LP tokens on Curve.

CrossCurve MetaLayer introduces a fundamentally new approachβ€”liquidity isolation, where each pool contains liquidity for only one direction:

V2 Each paired pool in the hub-chain consists of two tokens:

  • A universal tokenβ€”an asset from Sonic, common for all pools of the same type (xfrxUSD for USD assets, xfrxETH for ETH, and scBTC for BTC).

  • A synthetic derivative, backed by the original asset locked in the Consensus Bridge. This can be either a single asset or LP tokens from Curve.

As a result, all xSTABLE pools will transform into 20+ paired pools. When transferring liquidity, it won’t be possible to do a one-to-one transfer, as paired pools require an additional "universal" pool token.

There are numerous ways to transfer liquidity, and it’s impossible to describe every scenario, so we’ll outline the key general steps:

  1. Choose the pool to which liquidity will be transferred, for example, xsArbitrum.

  2. Determine how many of each token is needed. In the Arbitrum example, you’ll need 25% frxUSD tokens and 25% scUSD tokens to obtain 50% xfrxUSD and 50% sUSDC_arb (percentages are based on the total liquidity planned for transfer to the xsArbitrum pool).

  3. Obtain the synthetic token corresponding to this directionβ€”in this case, sUSDC_arb.

  4. For USD and ETH pools, you’ll need to obtain xfrxUSD or xfrxETH tokens, respectively. To do this, in Sonic, you need to acquire frxUSD, scUSD, frxETH, and scETH accordingly. For example, you’ll need equal amounts of frxUSD and scUSD to deposit into the CrossCurve frxUSD pool.

  5. Deposit the universal token and the destination token (synthetic) into the paired pool. In our example, you’ll need to deposit xfrxUSD and sUSDC_arb into the CrossCurve Stable ARB pool.

Brief list of all actions for Liquidity Transfer

If you provided liquidity to CrossCurve pools on the Farms tab in the Fantom network, you’ll need to follow these steps to transfer your funds from the Fantom network to the Sonic network:

  1. Unstake your position on the Farms page.

  2. Decide which pools your liquidity will be transferred to:

  • You can distribute liquidity across 8 directions.

  • You can choose one or several directions.

  1. Decide which method you’ll use to transfer liquidity:

    • In Easy Mode, directly swap LP tokens from the pool for the required tokens.

Note: This may result in losses due to conversion and slippage. For low liquidity pools and large amounts, losses can be significant.

Examples of swap directions in Easy Mode:

  • xSTABLE β†’ sUSDT_eth

  • xSTABLE3 β†’ sUSDC_arb

  • xSTABLE2 β†’ sUSDC_ba

    • In Balanced Mode, withdraw 8 synthetic tokens from the LP token and swap them directly.

This method is more labor-intensive but allows for the most cost-effective swaps and is better suited for large liquidity amounts.

Examples of swap directions in Balanced Mode:

  • s3CRV_e β†’ sUSDT_eth

  • s2CRV_ar β†’ sUSDC_arb

  • s4pool_b β†’ sUSDC_ba

  1. Swap your FTM for S (or obtain S) to pay for gas (gwei).

  2. Obtain the universal token for paired pools:

  • For USD pools, obtain the LP token xfrxUSD.

  • For ETH pools, obtain the LP token xfrxETH.

  • For BTC pools, obtain the scBTC token.

  1. Obtain a synthetic token corresponding to the desired direction (e.g., sUSDT_eth, sUSDC_arb, sUSDC_ba, etc.)

  2. Deposit liquidity into the pools:

  • To obtain xfrxUSD, deposit frxUSD and scUSD into the pool.

  • To obtain xfrxETH, deposit frxETH and scETH into the pool.

  1. Lock liquidity in the new pools on the Sonic network to earn profits.

Important Note: Rewards distribution in CrossCurve pools on the Fantom network will end at the conclusion of the current epoch. Voting for these pools and reward distribution to DAO participants in these pools will be paused. Starting from the next epoch, voting for reward allocation in the new pools on the Sonic network will begin.

Detailed description of Liquidity Transfer actions

Unstake LP tokens from CrossCurve Pools on Fantom

Go to the Farms staking page to view all available pools and the size of your positions in them.

  1. First, withdraw accumulated rewards by clicking Claim in all pools and signing the transaction in your wallet.

  1. After successfully claiming rewards from the pool, click Unstake to withdraw LP tokens from staking.

  1. In the modal window, to select the maximum number of LP tokens to withdraw, click MAX next to the token balance in your wallet, then click Unstake to withdraw your liquidity from the pool and receive LP tokens on the Fantom network.

  1. Sign the transaction in your wallet.

Withdraw Liquidity from LP Tokens in the Pool

After receiving LP tokens, there are two methods to withdraw your liquidity:

  • Easy Mode via CrossCurve into a single asset of your choice (may incur penalties due to slippage).

  • Balanced Mode on Curve into the assets composing the LP in the pool (the most cost-effective method).

  1. Easy Mode via CrossCurve

To quickly withdraw liquidity using Easy Mode, go to the Liquidity page under the Yield tab.

In the pool list, under Choose pool, select the pool where you provided liquidity and have LP tokens.

Select the withdrawal mode Withdraw, operation type Easy Mode, and click Next to proceed.

Choose the asset you want to swap your LP token for by opening the selection list.

Enter the amount of LP tokens to swap or click MAX to select the entire balance from your wallet. Click Approve and confirm the LP token spending operation in your wallet.

After confirming the spending operation, click Swap to perform the exchange and sign the transaction in your wallet.

Wait for the transaction to be processed on-chain.

  1. Balanced Mode via Curve

To withdraw liquidity in Balanced Mode, go to the page of the pool you’re interested in on the Curve app using the quick link.

If you haven’t performed an unstake in the CrossCurve app, go to the Withdrawal/Claim menu under the Unstake tab. Enter the number of LP tokens to unstake, click Unstake, and sign the transaction in your wallet.

After the transaction is successfully confirmed on-chain, you’ll see a notification: Unstake Complete.

Claim the rewards on the Claim Rewards tab by clicking Claim and signing the transaction in your wallet.

To withdraw liquidity, go to the Withdraw tab, enter the number of LP tokens, select Balanced mode, and click Withdraw. Sign the transaction in your wallet.

After the transaction is successfully confirmed on-chain, you’ll see a notification: Withdraw Complete.

Obtaining Universal tokens for paired pools

Each paired pool in the Sonic hub-chain consists of two tokens:

  • A universal tokenβ€”an asset from Sonic, common for all pools of the same type (xfrxUSD for USD assets, xfrxETH for ETH, and scBTC for BTC).

  • A synthetic derivative, backed by the original asset locked in the Consensus Bridge. This can be either a single asset or LP tokens from Curve.

Universal tokens come in three types:

  • For USD pools: LP token xfrxUSD.

  • For ETH pools: LP token xfrxETH.

  • For BTC pools: scBTC token.

Obtaining LP xfrxUSD

To obtain xfrxUSD, follow these three steps:

  1. Obtain frxUSD on Sonic.

  2. Obtain scUSD on Sonic.

  3. Deposit frxUSD and scUSD into the CrossCurve frxUSD pool to receive xfrxUSD.

You can obtain frxUSD and scUSD in various ways; below are a few methods.

Obtaining frxUSD on Sonic using CrossCurve and Frax bridge

Obtaining scUSD on Sonic using CrossCurve and Rings app

Obtaining frxUSD and scUSD using other bridges for Sonic

Obtaining frxUSD and scUSD Using the Jumper.exchange Aggregator

Obtaining xfrxUSD via the Curve App interface

In the first transaction, confirm the spending of funds by clicking Approve Spending and signing the transaction in your wallet.

In the second transaction, deposit the funds by clicking Deposit and signing the transaction in your wallet.

After the transaction is successfully confirmed on-chain, your wallet will display the amount of received xfrxUSD LP tokens.

Obtaining LP xfrxETH

To obtain xfrxETH, follow these three steps:

  1. Obtain frxETH on Sonic.

  2. Obtain scETH on Sonic.

  3. Deposit frxETH and scETH into the CrossCurve frxETH pool to receive xfrxETH.

You can obtain frxETH and scETH in various ways; below are a few methods.

Obtaining frxETH on Sonic using CrossCurve and Frax bridge

Obtaining scETH on Sonic using CrossCurve and Rings app

Obtaining scETH or frxETH on Sonic using other bridges for Sonic

Obtaining scETH or frxETH Using the Jumper.exchange aggregator

Obtaining xfrxETH via the Curve App Interface

In the first transaction, confirm the spending of funds by clicking Approve Spending and signing the transaction in your wallet.

In the second transaction, deposit the funds by clicking Deposit and signing the transaction in your wallet.

After the transaction is successfully confirmed on-chain, your wallet will display the amount of received xfrxETH LP tokens.

Obtaining scBTC

You can obtain scBTC using the official Rings issuer app. Alternatively, you can use third-party services listed below.

Obtaining scBTC on Sonic using CrossCurve and Rings app

Obtaining scBTC on Sonic using other bridges for Sonic

Obtaining scBTC using the Jumper.exchange aggregator

Obtaining a Synthetic Derivative

Each paired pool on the Sonic hub-chain consists of two tokens:

  • A universal token – an asset from Sonic, uniform across all pools of the same type (e.g., xfrxUSD for USD assets, xfrxETH for ETH, and scBTC for BTC).

  • A synthetic derivative, backed by the original asset locked in the Consensus Bridge. These can be either single assets or LP tokens from Curve.

Synthetic tokens are categorized into three types:

  • s_Stable_chain, where Stable represents a USD asset variant, and chain is the network where the asset is used.

  • s_WETH_network, where WETH represents ETH backing, and chain is the network where the asset is used.

  • s_WBTC_network, where WBTC represents BTC backing, and chain is the network where the asset is used.

Each type of synthetic token corresponds to a pool where it can be paired in an LP token:

  • xs_chain, where xs is a stable pool, and chain is the network where the asset is used.

  • xe_chain, where xe is a volatile pool, and chain is the network where the asset is used.

  • xb_chain, where xb is a volatile pool, and chain is the network where the asset is used.

Obtaining sUSDC_arb

  1. Navigate to the Liquidity tab in the Yield section. Select the Balanced mode and click Next.

Enter the desired amount to swap, approve the spending by clicking Approve, and sign the transaction in your wallet.

Click Swap to execute the exchange and confirm the transaction in your wallet.

Note: Some directions may experience high slippage!

Providing Liquidity to pools on Sonic

To provide liquidity to Sonic pools:

  • Select the pool where you want to transfer liquidity, e.g., xsArbitrum.

  • Determine the required token amounts.

For the Arbitrum example, you need 25% frxUSD and 25% scUSD to obtain 50% xfrxUSD and 50% sUSDC_arb (percentages are based on the total liquidity you plan to transfer to the xsArbitrum pool).

  • Deposit the universal token and the directional (synthetic) token into the paired pool.

In our example, deposit xfrxUSD and sUSDC_arb into the CrossCurve Stable ARB pool.

Obtaining LP xsArbitrum via Curve

In the first transaction, approve the spending by clicking Approve Spending and sign the transaction in your wallet.

In the second transaction, deposit the funds by clicking Deposit and sign the transaction in your wallet.

After the transaction is confirmed on-chain, the amount of received xsArbitrum LP tokens will appear in your wallet.

Obtaining LP xsArbitrum via CrossCurve

Go to the Liquidity tab in the Yield section. Select the Easy mode and click Next.

Choose the available asset for the swap.

Enter the desired amount to swap, approve the spending by clicking Approve, and sign the transaction in your wallet.

Click Swap to execute the exchange and confirm the transaction in your wallet.

Depositing LP xsArbitrum into the CrossCurve Stable ARB Pool

In the xsArbitrum pool tab, click Stake LP and get rewards.

Enter the deposit amount, approve the spending by clicking Approve, and sign the transaction in your wallet.

After successful confirmation, deposit the funds by clicking Stake and sign the transaction in your wallet.

The deposited amount will appear in the Staked field.

You can view the current vAPR and accrued rewards in the selected pool by clicking on the APY icon.

frxUSD tokens on the Fraxtal network can be swapped from any available asset in the app.

Then, bridge them to the Sonic network on .

In the app, you can transfer any available asset to the Ethereum network, receiving USDT, USDC, or DAI.

Then, scUSD tokens can be swapped in the app by depositing the available assets as collateral.

Choose your preferred app from the list of bridges in the section under Apps in the Bridge category.

Swaps are also available on the aggregator for any available assets.

To obtain the LP token xfrxUSD, you need to provide liquidity in the pool:.

Go to the pool page and connect your wallet.

Enter the desired deposit amount on the Deposit tab. To avoid losses due to slippage, it’s recommended to deposit funds in a balanced manner by clicking Add all coins in a balanced proportion (learn more ).

If your wallet doesn’t support automatic token addition, add it manually as a custom token with the contract address on the Sonic network.

wfrxETH tokens on the Fraxtal network can be swapped from any available asset in the app.

Then, bridge them to the Sonic network on .

In the app, you can transfer any available asset to the Ethereum network, receiving WETH or ETH.

Then, scETH tokens can be swapped in the app by depositing the available assets as collateral.

Choose your preferred app from the list of bridges in the section under Apps in the Bridge category.

Swaps are also available on the aggregator for any available assets.

To obtain the LP token xfrxETH, you need to provide liquidity in the pool:.

Go to the pool page and connect your wallet.

Enter the desired deposit amount on the Deposit tab. To avoid losses due to slippage, it’s recommended to deposit funds in a balanced manner by clicking Add all coins in a balanced proportion (learn more ).

If your wallet doesn’t support automatic token addition, add it manually as a custom token with the contract address on the Sonic network.

In the app, you can transfer any available asset to the Ethereum network, receiving WBTC.

Then, scBTC tokens can be swapped in the app by depositing WBTC on the Ethereum network as collateral.

Choose your preferred app from the list of bridges in the section under Apps in the Bridge category.

Swaps are also available on the aggregator for any available assets.

sUSDC_arb tokens on the Sonic network can be swapped from any available asset in the xsArbitrum pool via the app.

If you know the swap direction, you can also perform the exchange in the tab using any available asset.

Obtain the synthetic token for this direction, in this case, .

For USD pools, acquire tokens. For example, deposit an equal amount of and into the pool.

Navigate to the pool page: and connect your wallet.

Enter the desired deposit amount in the Deposit tab. To avoid losses due to slippage, it’s recommended to deposit using the balanced method by clicking Add all coins in a balanced proportion (more details ).

If your wallet doesn’t automatically add the token, manually add it as a custom token using the contract address on the Sonic network.

LP xsArbitrum tokens on the Sonic network can be swapped from any available asset in the xsArbitrum pool via the app.

To provide liquidity to CrossCurve pools navigate to the Farms page in the Yield section: and connect your wallet.

πŸ“–
πŸ›Έ
CrossCurve
Frax.com
CrossCurve
Rings
mySonic
Jumper.exchange
CrossCurve frxUSD
https://curve.finance/dex/sonic/pools/factory-stable-ng-25/deposit/
CrossCurve frxUSD
here
0xf1232a1ab5661abdd6e02c6d8ac9940a23bb0b84
CrossCurve
Frax.com
CrossCurve
Rings
mySonic
Jumper.exchange
CrossCurve frxETH
https://curve.finance/dex/sonic/pools/factory-stable-ng-26/deposit/
CrossCurve frxETH
here
0x346704605c72d9f5f9F02D651e5A3DccE6964F3d
CrossCurve
Rings
mySonic
Jumper.exchange
CrossCurve
Trade
sUSDC_arb
xfrxUSD
frxUSD
scUSD
CrossCurve frxUSD
CrossCurve Stable ARB
https://curve.finance/dex/sonic/pools/factory-stable-ng-73/deposit/
here
0x440bcab62d629ba60ca56b80e565636e0c404e60
CrossCurve
https://app.crosscurve.fi/farm