Search

Search for projects by name or address

Relay logo
Relay

About

Intent-based centralized bridge optimised for speed, multichain and multiasset support. A centralized API quotes orders and Relay-operated solvers fill them from their own liquidity; the onchain footprint is minimal and settlement depends on a single...


    Last 24h volume
    $195.76 M
    Last 24h transfer count
    805.94 K
    Last 24h top path
    robinhoodsolana$68.46 M

    Last 24h avg. transfer time
    4s
    Last 24h avg. transfer value
    $482.87
    Tokens by volume
    USDCETHUSDG
    +1971

    Transfer size
    Under $100
    $100-$1K
    $1K-$10K
    $10K-$100K
    Over $100K

    Transfer type distribution
    Non-minting

    About

    Intent-based centralized bridge optimised for speed, multichain and multiasset support. A centralized API quotes orders and Relay-operated solvers fill them from their own liquidity; the onchain footprint is minimal and settlement depends on a single...

    Top token

    Volume
    $69.45 M
    Transaction count
    67.25 K

    Intent-based centralized bridge optimised for speed, multichain and multiasset support. A centralized API quotes orders and Relay-operated solvers fill them from their own liquidity; the onchain footprint is minimal and settlement depends on a single allocator key per chain.

    Architecture

    Relay is an intent-based, non-minting bridge and crosschain payments network with a deliberately minimal onchain footprint. Users request a quote from the centralized Relay API and pay on the origin chain; a Relay solver then fills them on the destination chain from its own pre-positioned liquidity with a plain transfer, swap, or contract call. All order matching, pricing, and balance accounting happen offchain and on Relay-operated infrastructure — no contract on the origin or destination chain verifies any relationship between the user’s payment and the solver’s fill.

    There are three origin-side payment paths. In the legacy flow, native tokens are sent to the RelayReceiver, which immediately forwards them to a solver address hardcoded at deployment and merely emits the order commitment as an event (ERC20s in this flow are transferred to the solver directly). In the router flow, the RelayApprovalProxyV3 pulls user ERC20s (approvals, EIP-2612/ERC-3009 permits, or Permit2) into the stateless RelayRouterV3, which atomically executes the calls of the quote. In the settlement flow, funds are escrowed in the RelayDepository tagged with an order id — the contract keeps no balance accounting and only emits a deposit event.

    Crosschain validation and settlement

    After filling, the solver asks the Relay Oracle — an offchain service run by Relay — to attest the origin deposit and destination fill. The attestation is submitted to an Oracle contract on the ‘Relay Chain’ (a Relay-operated sovereign EVM rollup posting data to Celestia), where a Hub contract credits the deposit to the solver’s balance. Solvers replenish their capital by requesting a withdrawal from the Allocator, a contract on Aurora that uses NEAR’s MPC ‘chain signatures’ network to produce a signed payload accepted by the RelayDepository on the target chain.

    From the perspective of each deposit chain, this entire settlement stack reduces to a 1-of-1 trust assumption: RelayDepository.execute() performs arbitrary external calls authorized by a single signature from the registered allocator address — on Base a plain address without contract code — protected only by a nonce and an expiration. The claims that this key is threshold-MPC-managed, that withdrawals are bounded by solver balances on the Hub, and that a Security Council multisig on Aurora can suspend withdrawers, all live offchain or on other chains and are not verifiable or enforced by the Depository. Moreover, the Depository’s owner — currently an EOA on Base — can replace the allocator at any time and without delay, taking direct control of all escrowed funds.

    Solvers

    Filling is not permissionless: orders are filled by Relay-operated solver infrastructure, and withdrawal rights from the settlement protocol are granted by an APPROVED_WITHDRAWER_ROLE on the Aurora allocator. There is no onchain solver collateral or slashing; the user’s destination outcome depends entirely on the solver filling correctly and quickly.

    User recovery

    There is no onchain refund path in any of the three flows. Funds sent through the RelayReceiver or the router flow are with the solver in the same transaction, and funds escrowed in the RelayDepository can only leave via an allocator-signed call. Failed or unfillable orders depend on Relay’s discretionary, oracle-attested refund process.

    Upgradeability and governance

    None of the onchain contracts are proxies — the RelayDepository, RelayReceiver, RelayRouterV3, and RelayApprovalProxyV3 are all immutable. This offers limited protection because the critical powers are held by keys rather than code: the Depository owner can swap the allocator (full control of the escrow), and the allocator key alone moves escrowed funds. The RelayApprovalProxyV3 owner can only sweep funds stuck in that contract; user token approvals to it cannot be spent by the owner.

    Monitoring

    Deposits emit events onchain (RelayNativeDeposit/RelayErc20Deposit in the Depository, FundsForwardedWithData in the RelayReceiver, FundsMovement in the router flow), but fills on the destination chain are ordinary transfers from solver liquidity and are not marked as protocol activity. Relay provides an explorer and an API for order tracking, and the Relay Chain acts as the protocol’s crosschain accounting ledger.

    Symbol
    Last 24h Volume
    Last 24h transfer count
    Last 24h avg. transfer time
    Last 24h avg. transfer value
    From
    To
    Timestamp
    Tokens
    Value
    Bridge
    Transfer time
    Chains
    2026 August 14, 13:46 UTC
    4changes

    Discovery rerun on the same block number with only config-related changes.

    Initial discovery

    + Status: CREATED
    contract RelayDepository (base:0x4cD00E387622C35bDDB9b4c962C136462338BC31) [relay/RelayDepository]
    +++ description: Escrow entry point of the Relay settlement protocol: user deposits for crosschain intents are parked here, tagged only by an event that attributes them to an order id. The contract keeps no balance accounting and does not verify orders or fills - all accounting happens offchain and on the Hub contract on the Relay Chain. Funds leave the contract exclusively through execute(), which performs arbitrary external calls authorized by a single signature of the current allocator (replay-protected by nonce and expiration).
    + Status: CREATED
    contract RelayReceiver (base:0xa5F565650890fBA1824Ee0F21EbBbF660a179934) [relay/RelayReceiver]
    +++ description: Passthrough deposit contract of the legacy Relay flow: any native tokens sent to it are immediately forwarded to a solver address hardcoded at deployment, and the attached calldata is only emitted as an event that commits the payment to a Relay order id. The contract holds no funds and enforces nothing about the order - after the forward, the user's outcome depends entirely on the solver. ERC20 payments in this flow do not even touch this contract and are transferred to the solver directly.
    + Status: CREATED
    contract RelayRouterV3 (base:0xb92fe925DC43a0ECdE6c8b1a2709c170Ec4fFf4f) [relay/RelayRouterV3]
    +++ description: Stateless multicall router used to atomically execute the calls of a Relay quote (swaps, bridge deposits, transfers to the solver). It has no owner and no privileged roles, and it is not supposed to hold funds between transactions: anyone can sweep balances left in it via the public cleanup functions.
    + Status: CREATED
    contract RelayApprovalProxyV3 (base:0xCcC88a9d1B4ED6b0EABA998850414b24f1c315bE) [relay/RelayApprovalProxyV3]
    +++ description: ERC20 entry point of the Relay v3 flow: it pulls user tokens (via direct approvals or EIP-2612 / ERC-3009 / Permit2 signatures) and forwards them to the RelayRouterV3, where the calls of the Relay quote are executed atomically. Token pulls are only possible from msg.sender or with the token owner's signature, so user approvals to this contract cannot be spent by its owner.

    Base Chain

    Actors:

    • Can interact with RelayApprovalProxyV3
      • withdraw funds stuck in the RelayApprovalProxyV3 (not user approvals)
    • Can interact with RelayDepository
      • sign arbitrary CallRequests that the RelayDepository executes, which moves any funds escrowed in it
    • Can interact with RelayDepository
      • replace the allocator of the RelayDepository at any time and without delay, taking control of all funds escrowed in it
    • Can interact with RelayReceiver
      • receive all user funds deposited through the RelayReceiver, with no onchain obligation to fill the associated orders

    Base Chain

    RelayDepository0x4cD0…BC31

    Escrow entry point of the Relay settlement protocol: user deposits for crosschain intents are parked here, tagged only by an event that attributes them to an order id. The contract keeps no balance accounting and does not verify orders or fills - all accounting happens offchain and on the Hub contract on the Relay Chain. Funds leave the contract exclusively through execute(), which performs arbitrary external calls authorized by a single signature of the current allocator (replay-protected by nonce and expiration).

    • Roles:
      • allocator: EOA 2
      • owner: EOA 3
    RelayReceiver0xa5F5…9934

    Passthrough deposit contract of the legacy Relay flow: any native tokens sent to it are immediately forwarded to a solver address hardcoded at deployment, and the attached calldata is only emitted as an event that commits the payment to a Relay order id. The contract holds no funds and enforces nothing about the order - after the forward, the user’s outcome depends entirely on the solver. ERC20 payments in this flow do not even touch this contract and are transferred to the solver directly.

    • Roles:
      • solver: EOA 4
    RelayRouterV30xb92f…Ff4f

    Stateless multicall router used to atomically execute the calls of a Relay quote (swaps, bridge deposits, transfers to the solver). It has no owner and no privileged roles, and it is not supposed to hold funds between transactions: anyone can sweep balances left in it via the public cleanup functions.

    RelayApprovalProxyV30xCcC8…15bE

    ERC20 entry point of the Relay v3 flow: it pulls user tokens (via direct approvals or EIP-2612 / ERC-3009 / Permit2 signatures) and forwards them to the RelayRouterV3, where the calls of the Relay quote are executed atomically. Token pulls are only possible from msg.sender or with the token owner’s signature, so user approvals to this contract cannot be spent by its owner.

    • Roles:
      • owner: EOA 1