Skip to main content

Mosaic - Cross-layer Transfer System

Mosaic V1 is the first version of the Cross-layer transferal system, launched on September 14th, 2021, as a proof of concept. Mosaic is crafted on the foundations of the Composable infrastructure. Our vision is that Mosaic will be the cross-layer liquidity solution underpinning Ethereum Union transfers, solving complexities for developers and abstracting away hurdles of inefficiency.

V1 demonstrates Composable’s experimental rigour and enables us to gather data and analytics to augment our existing simulation results. This will be critical in enabling us to determine the most effective and efficient approach in resolving the liquidity management blocker that has arisen across L2s.

Our current documentation explains how Mosaic works, and how to utilize it through our SDK:

Mosaic features

  • Earn rewards by providing liquidity for one of the supported tokens:
    • USDC
    • WETH
    • Curve Tricrypto
    • aDAI
    • aUSDC
    • aUSDT
  • Transfer assets between supported layers:
    • L1 (mainnet)
    • Arbitrum
    • Polygon
    • Avalanche
    • Moonriver

How it works

Mosaic V1 was crafted with simplicity at its core. Simply follow these three steps:

  • As an end-user, you just have to go to and connect your Metamask.

  • You'll then be prompted with a page where you can select the following: source layer, destination layer, asset, the amount you want to transfer and the destination address (defaults to the same address that is initiating the transfer).

Mosaic V1 - transfer page

  • After a transfer is initiated you will be redirected to the transfer details page, where you will be able to see in real-time what is happening with your transfer.

Please Note: Mosaic also has an explorer where you can see in real-time all the transfers that are being done, as well as how much you have earned in case you provided liquidity for the asset that is being transferred.

Mosaic’s Underlying Mechanism

The following steps are taken whenever a transfer is initiated:

  • The token amount selected by user is locked on the source layer
  • An off-chain relayer listens for events generated by the deposit transaction that happened on the source layer
  • Relayer decodes the message and notifies the destination layer for releasing funds to the selected destination address
  • On the destination layer a dynamic fee which depends on the available liquidity and the amount that is being transferred is subtracted from the amount
  • Computed amount (initial - fee) is sent to the destination address