Actors in the System

User

A user is an actor who submits intent orders, in the form of a deposit order, to bridges assets between L2s and L1 with Across. Users pay relayers and liquidity providers in order to send tokens instantly between networks.

Relayer

Relayers compete to fulfill users' deposit requests by sending depositors the specified output amount of the specified token on the specified destination chain with optional data specifying required actions to execute on the destination.

Relayers extend short-term token loans to Users in exchange for fees. Users incentivize relayers to fill their order by the implied fee of the spread between input amount and output amount specified in the users' order. At the time of fill, relayers request repayment on their desired repayment chain, which can be any Across supported chain. Relayers are refunded the users' input amount less the realized LP fee at time of deposit, and depends on the specified repayment chain.

Generally, relayers take on the following risks when fulfilling a deposit and are compensated accordingly by users:

  • Cost of capital: relayers send tokens to a user in order to fulfill a deposit and are reimbursed when their valid fill is included in a bundle

  • Gas costs: relayers pay gas on destination chains to fulfill deposits

  • Software risk: an honest relayer might have a bug in its software that sends an invalid fill

  • Finality risk: a deposit on the origin chain might disappear if the origin chain reorganizes

Running a relayer is permissionless. Risk labs provides open source, opinionated implementations of the Relayer but there are technically many ways to customize the behavior of the software. Developers can run the open source relayer software or implement their own. You can find more information about running relayers here.

Dataworker

Dataworkers support stability and healthy functioning of the system by refunding relayers and moving system assets between networks. Whitelisted dataworkers are in charge of proposing "bundles" to be optimistically validated by the Across system. These proposers must post a bond when proposing. Proposers can also be removed or changed by an Across DAO Governance vote. Anyone can dispute an invalid bundle and earn a dispute bond, which includes part of the proposer's bond. Each bundle contains instructions for:

  • Refunding relayers for valid fills

  • Sending tokens to SpokePools that can be used to pay such refunds

  • Sending tokens to SpokePools that can be used to execute slow fills

  • Withdrawing funds originating from deposits on SpokePools back to the HubPool

The dataworker's responsibility is prescribed in UMIP-157 and extended by UMIP-179 and a reference implementation can be found here. An example proposal transaction can be seen here.

Liquidity Provider

A liquidity provider or LP is an actor who deposits assets into one of the pools on Across.to/pool. All Across LP pools reside on mainnet, and LPs only interact with these mainnet pools. Liquidity Providers provide the capital that enables the flexibility for relayers choose a repayment chain in exchange for fees. Moreover, liquidity providers provide capital that can be used to fulfill deposits in the case that no relayers can fast fill the deposit.

Generally, liquidity providers take on the following risks when passively providing liquidity to Across:

  • Cost of capital: LP's must deposit their tokens into an Across contract on mainnet.

  • Liquidity risk: If Across is experiencing high demand then there is a chance that so much of the LP capital is reallocated to repaying relayers, fulfilling deposits and being rebalanced through canonical bridges that not all LP's who want to withdraw can withdraw at the current moment. This is a transitory situation as once funds are received from the canonical bridge LP's will be able to withdraw.

Last updated