Across is now live on BNB Smart Chain!
Bridge Now!
Across Documentation
V3 Developer Docs
V3 Developer Docs
  • 👋Introduction
    • Welcome to Across
    • What is Across?
    • Technical FAQ
    • Migration Guides
      • Migration from V2 to V3
      • Migration to CCTP
        • Migration Guide for Relayers
        • Migration Guide for API Users
      • Migration Guide for Non-EVM and Prefills
        • Breaking Changes for Indexers
        • Breaking Changes for API Users
        • Breaking Changes for Relayers
        • Testnet Environment for Migration
      • Solana Migration Guide
      • BNB Smart Chain Migration Guide
  • 🌟EXCLUSIVE
    • Integrate BNB Smart Chain
  • 🔗Use Cases
    • Instant Bridging in your Application
      • Bridge Integration Guide
      • Multichain Bridge UI Guide
      • Single Chain Bridge UI Guide
    • Embedded Crosschain Actions
      • Crosschain Actions Integration Guide
        • Using the Generic Multicaller Handler Contract
        • Using a Custom Handler Contract
      • Crosschain Actions UI Guide
    • Settle Crosschain Intents
    • ERC-7683 in Production
  • 🧠Concepts
    • What are Crosschain Intents?
    • Intents Architecture in Across
    • Intent Lifecycle in Across
    • Canonical Asset Maximalism
  • 🛠️Reference
    • API Reference
    • App SDK Reference
    • Contracts
      • Aleph Zero
      • Arbitrum
      • Base
      • BNB Smart Chain
      • Blast
      • Ethereum
      • Linea
      • Ink
      • Lens
      • Lisk
      • Mode
      • Optimism
      • Polygon
      • Redstone
      • Scroll
      • Soneium
      • Unichain
      • World Chain
      • zkSync
      • Zora
    • Selected Contract Functions
    • Supported Chains
    • Fees in the System
    • Actors in the System
    • Security Model and Verification
      • Disputing Root Bundles
      • Validating Root Bundles
    • Tracking Events
  • 🔁Relayers
    • Running a Relayer
    • Relayer Nomination
  • 📚Resources
    • Release Notes
    • Developer Support
    • Bug Bounty
    • Audits
Powered by GitBook
On this page
  1. 👋Introduction
  2. Migration Guides
  3. Migration to CCTP

Migration Guide for Relayers

PreviousMigration to CCTPNextMigration Guide for API Users

Last updated 1 year ago

LogoLogo

Products

  • Across Bridge
  • Across+
  • Across Settlement

Socials

  • Discord
  • Twitter
  • Medium
  • Forum

Resources

  • Blog
  • Across Brand Assets
  • Github

Routes

  • Bridge to Unichain
  • Bridge to Arbitrum
  • Bridge to Optimism
  • Bridge to Linea
  • Bridge to Polygon
  • Bridge to Base
  • Bridge to World Chain
  • Bridge to zkSync

Supporting deposits where outputToken is not the same as inputToken.

This is a feature highlighted in the Across V3's but it is currently not supported in the example Relayer implementation. Upon the CCTP migration, deposits will begin to be sent with inputToken = USDC and outputToken = Bridged USDC.

Eventually, Across will encourage depositors to take advantage of this feature and send other types of cross chain token swaps, for example setting input to USDC and output to WETH. Therefore, relayers should update their code to handle the case when the input USDC (Native) is not the same as the output USDC (Bridged) with an eye towards generalizing the code to handle arbitrary output tokens. But, relayer implementations can choose to temporarily hardcode this specific USDC to Bridged USDC deposit route.

Note, the inputToken must always be a token that Across natively supports. This is why Bridged USDC cannot be an inputToken. However, outputToken can technically be any ERC20 that exists on the destination chain.

Relayers should at minimum be prepared to compute the price of the outputToken relative to the price of the inputToken and normalize the inputAmount and outputAmount to avoid filling unprofitable deposits. To support CCTP, relayers should also be prepared to hold inventory in both Bridged and Native USDC on CCTP-enabled chains.

depositV3 function