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
  • 🚀DEVELOPER QUICKSTART
    • 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
      • Blast
      • BNB Smart Chain
      • Ethereum
      • Linea
      • Lens Chain
      • Ink
      • 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
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
On this page
  • Liquidity Provider Fees
  • Relayer Fees
  1. Reference

Fees in the System

PreviousSupported ChainsNextActors in the System

Last updated 8 months ago

Liquidity Provider Fees

We view using Across as being similar to lending protocols such as AAVE or Compound. When a user bridges a particular token from one chain to another, the fast bridge isn't "moving tokens from one chain to another" but, rather, it is a relayer or the protocol itself providing tokens on the destination chain in return for tokens on the origin chain. We choose to use a similar pricing model for our liquidity provider fees because of this parallel.

In summary, liquidity provider fees are charged on each transaction based on where the relayer decides to take repayment. If a relayer elects to take repayment on the origin chain, where the deposit occurred, then liquidity provider funds are not needed to repay the relayer because the repayment can be taken directly from the deposited funds. Therefore, liquidity provider fees in this case will be zero. On the other hand, a non-zero liquidity provider fee will be charged for any transaction based on the pricing model for the specific chain that the relayer elects to take repayment on. The following section outlines the parameters used to construct this pricing model; the parameters are different for each repayment chain based on how easy it is transfer funds out of that chain.

Utilization based pricing

We base our pricing model on the one described in . Let,

  • XXXdenote the size of a particular transaction someone is seeking to bridge

  • 0≤Ut≤10 \leq U_t \leq 10≤Ut​≤1denote the utilization of the liquidity providers' capital prior to the transaction, i.e. the amount of the liquidity providers' capital that is in use prior to the current transaction

  • 0≤U^t≤10 \leq \hat{U}_t \leq 10≤U^t​≤1denote the utilization of the liquidity providers' capital after to the transaction, i.e. the amount of the liquidity providers' capital that would be in use if the user chose to execute their transaction

  • Uˉ\bar{U}Uˉdenote the "kink utilization" where the slope on the interest rate changes

  • R0,R1,R2R_0, R_1, R_2R0​,R1​,R2​denote the parameters governing the interest rate model slopes

    • R0R_0R0​is the interest rate that would be charged at 0% utilization

    • R0+R1R_0 + R_1R0​+R1​is the interest rate that would be charged at Uˉ%\bar{U}\% Uˉ%utilization

    • R0+R1+R2R_0 + R_1 + R_2R0​+R1​+R2​is the interest rate that would be charged at 100% utilization

The (annualized) interest rate model is then defined by

R(Ut)=R0+min⁡(Uˉ,Ut)UˉR1+max⁡(0,Ut−Uˉ)1−UˉR2R(U_t) = R_0 + \frac{\min(\bar{U}, U_t)}{\bar{U}} R_1 + \frac{\max(0, U_t - \bar{U})}{1 - \bar{U}} R_2R(Ut​)=R0​+Uˉmin(Uˉ,Ut​)​R1​+1−Uˉmax(0,Ut​−Uˉ)​R2​

We calculate the (annualized) interest rate for a particular loan by aggregating the marginal increases of utilization by integrating over this function

Rta=1U^t−Ut∫UtU^tR(u)duR^a_t = \frac{1}{\hat{U}_t - U_t} \int_{U_t}^{\hat{U}_t} R(u) duRta​=U^t​−Ut​1​∫Ut​U^t​​R(u)du

The actual fee that is charged will be based on making a loan at this rate for a 1 week time-span. The rate that is charged can be computed from:

Rtw=(1+Rta)152−1R^w_t = (1 + R^a_t)^{\frac{1}{52}} - 1Rtw​=(1+Rta​)521​−1

and the fee would be

Fee=RtwX\text{Fee} = R^w_t XFee=Rtw​X

We chose to charge prices this way to ensure that users are paying a "fair" price for the amount of utilization that their bridge transaction incurs.

The parameters above are configured differently for each chain.

Relayer Fees

Relayer fees play a similar role in the Across ecosystem as gas fees play in the Ethereum ecosystem. Relayer fees are a fee that the user sets to incentivize relayers to relay your bridge transaction.

Relaying a transaction has three costs for relayers:

  1. Gas fees: The relayer pays gas to perform the relay and to claim their repayment.

  2. Capital opportunity costs: The fact that the relayer is using their capital to perform a relay means that they are not using it for other yield opportunities.

  3. Capital at risk: A relayer takes on certain risks by relaying funds. If they make a mistake when relaying that could jeopardize their repayment of the capital they invested.

Both Liquidity Provider fees and Relayer fees are implied from the spread between inputAmount and outputAmount in a depositV3 transaction. You can intuitively think of liquidity provider fees as being taken out of the full relayer fee. Therefore, relayers are expected to factor in the expected liquidity provider fee when quoting fees to potential depositors.

🛠️
AAVE's documentation