Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

Celer Intent is a next-generation omnichain liquidity protocol designed to deliver seamless trading experiences for users and optimize capital efficiency for institutional market makers. Traditional cross-chain trading can be costly or even impractical, especially when handling large volumes, due to AMM-induced slippage and shallow liquidity in bridge-based pools. Celer Intent changes this by enabling “just-in-time” liquidity, allowing users to execute cross-chain swaps with zero slippage.

At its core, Celer Intent introduces an xRFQ (cross-chain Request For Quote) system. Instead of routing trades through a series of decentralized exchanges and bridges, user intents are broadcast directly to a network of professional market makers. The market maker offering the most competitive quote responds with a verifiable signature, and the transaction is settled atomically through smart contracts and Celer’s inter-chain messaging framework.

The Celer Intent protocol offers the following key benefits:

Low fees.
Since trades are executed directly between users and market makers on separate chains, Celer Intent eliminates the need for intermediate bridges and DEXes—reducing multi-hop fees that typically compound during cross-chain transactions.

Superior capital efficiency.
Unlike AMMs that require liquidity to be locked in pools regardless of activity, Celer Intent only requires capital at the moment of a confirmed user request. This “on-demand” model allows market makers to keep funds productive elsewhere when not in use, resulting in significantly better capital utilization than traditional bridges or DEXes.

Large cross-chain swaps with zero slippage.
Because trades are matched directly with market makers at a locked-in price, Celer Intent avoids the slippage typically seen with intermediate on-chain swaps—particularly when large transaction sizes are involved.

MEV resistance.
By operating outside the bounds of on-chain AMMs, Celer Intent prevents common MEV exploits such as sandwich attacks. All quotes are locked off-chain before execution, preserving pricing integrity.

Celer Intent is already live on mainnet and fully integrated with Celer cBridge. Developers of omnichain dApps—including bridges, DEXes, and aggregators—can easily plug in via the Celer Intent Open API. Market makers can connect through the Celer Intent SDK to start handling quotes and fulfilling cross-chain orders.

Most importantly, Celer Intent is a trustless protocol. Trades are executed only when all conditions are cryptographically verified and met. Neither the user nor the market maker can claim funds from the other without completing the full cross-chain transaction.

Workflow

To illustrate the cross-chain trade process, let’s walk through a common use case: a user wants to swap Token X on Chain A for Token Y on Chain B. This transaction is handled as a Request for Quote (RFQ) order.

Core Flow (cooperative case)

The diagram below outlines the typical RFQ execution process in Celer Intent, where both the user and the selected market maker act cooperatively. Note: The RFQ server operates as a centralized coordinator for communication and quote aggregation.

Core Flow

Step 1

The user submits an RFQ to the RFQ server, specifying the following details:

  • Source and destination chains
  • Source and destination tokens
  • Amount to be swapped
  • Two key time constraints:

Source Submission Deadline: The user must confirm the quote and lock their tokens on the source chain before this deadline. If missed, the quote expires and the transaction will revert on-chain.

Destination Fund Release Deadline: The market maker must complete the transfer to the user on the destination chain before this deadline. Failure to do so makes the order eligible for refund.

Step 2

The RFQ server forwards the user’s request to a list of authorized market makers who are currently online and available to quote.

Step 3

Each market maker evaluates the RFQ and, if interested, submits a quote to the RFQ server. The server compares the received quotes and selects the most favorable one—typically the one offering the highest amount of destination tokens. The selected market maker then signs their quote and returns the signed version to the server.

Step 4

The RFQ server delivers the signed quote to the user for confirmation and submission.


Step 5

The user broadcasts the signed quote to the source chain contract, locking their source tokens into the Celer Intent smart contract. This action must occur before the source submission deadline. A delay past this deadline causes the transaction to fail.

This on-chain action also triggers Cross-Chain Message #1, which is dispatched through Celer Inter-chain Messaging to the destination chain. This message notifies the destination that the user has locked funds on the source chain and that the market maker is authorized to release the destination tokens.


Step 6

On the destination chain, the market maker executes a transaction that processes Message #1 and transfers the agreed destination tokens to the user. This must occur before the destination release deadline. If delayed beyond the deadline, the RFQ order becomes refundable and the transaction will revert.

Once successful, this transaction emits Cross-Chain Message #2, which is sent back to the source chain. This message confirms that the user has received their tokens, and instructs the source chain contract to release the locked funds to the market maker.


Step 7

Back on the source chain, the market maker finalizes the process by calling a contract function that processes Message #2. This releases the user’s locked source tokens to the market maker, completing the transaction.

Refund Flow (non-cooperative case)

If the market maker does not complete the transfer of destination tokens to the user before the designated destination release deadline, the RFQ order transitions into a refundable state on the destination chain.

To safeguard users in such cases, a monitoring component known as the RFQ Sentinel implemented using Brevis ZK Coprocessor continuously scans for expired or incomplete orders. When it detects an unfulfilled RFQ past the deadline, the sentinel generate a ZK proof of incomplete transaction and send a Cross-Chain Message #3, which is sent back to the source chain.

Upon receiving this message, the user is able to execute a transaction on the source chain to reclaim their originally locked tokens—ensuring that funds remain secure even when counterparties fail to cooperate.

Refund Flow

Fee

Every RFQ order executed through Celer Intent includes two types of fees, both of which are paid in the source chain’s token:

Base Fee
This flat fee covers network-related costs such as gas and cross-chain messaging expenses. It may be charged by either the market maker or the Celer Intent protocol, depending on the setup of the transaction.

Percentage Fee
This fee is calculated as a proportion of the total swap amount. It is split into two parts:

  • One portion is retained by the market maker, and may vary across different providers based on their pricing models.
  • The remaining portion is collected by the Celer Intent protocol itself to support ongoing infrastructure and development.

Introduction

Market makers are a critical component of the Celer Intent ecosystem. Each participating market maker can adopt its own pricing and execution strategy when responding to RFQs. Below, we provide the key resources needed to build and integrate a market maker with the protocol.

If you’re interested in participating as a liquidity provider, please review the Celer Intent Market Maker SDK and explore the provided reference implementation. During the beta phase, onboarding is conducted via a whitelist process—fill out this formto express interest and become one of the early market makers supporting Celer Intent.

SDK

Please refer to Celer Intent Market Maker SDKfor details.

Sample Implementation

Please refer to Intent MM reference implementation for details.

Open API

This open API doc instructs you to interact with the Celer Intent system to bridge the token from source chain to destination chain

Steps of bridging on Celer Intent:

  1. Query order price

Link api-rfqprice.md

2. Quote from Celer Intent gateway.

Link api-rfqquote.md

3. Deposit assets to source chain srcDeposit

Link contract-srcdeposit.md

4. Get transaction status and history

View Content

View Content

API: rfqPrice

POST https://cbridge-prod2.celer.app/v1/rfqPrice

Request Body

NameTypeDescription
srcToken*JSONsource token description
dstToken*JSONdestination receive token description
srcAmount*Stringinput amount with source token decimal
dstNative*Booltrue when destination receive token is a native token
// quote reponse example
{
    "price": {
        "srcToken": {
            "chainId": 5,
            "symbol": "USDC",
            "address": "0xCbE56b00d173A26a5978cE90Db2E33622fD95A28",
            "decimals": 0,
            "name": "",
            "logoUri": ""
        },
        "srcAmount": "100000000",
        "dstToken": {
            "chainId": 97,
            "symbol": "USDC",
            "address": "0x855fC87f7F14Db747ef27603b02bAe579ba947B6",
            "decimals": 0,
            "name": "",
            "logoUri": ""
        },
        "srcReleaseAmount": "99900000",
        "dstAmount": "99700000",
        "feeAmount": "200000",
        "validThru": 1665553346,
        "mmAddr": "0x58b529F9084D7eAA598EB3477Fe36064C5B7bbC1",
        "sig": "286bc92a206d79c936897a386f0a8cd1486c5f9b2cf6205ca31c7f11634029d507e681cb4a12a41f121b9d4c7bea98631cda34eeb81ae5d982a462c96d315e6100",
        "srcDepositPeriod": 250,
        "dstTransferPeriod": 720
    },
    "fee": "300000",
    "mmId": "mm003",
    "txMsgFee": "132000000000000"
}

Request Parameters

NameTypeDescription
srcTokenTokenInfosource token
dstTokenTokenInforeceiving token on destination chain
srcAmountStringInput amount with token decimal
dstNativeBoolreceiving token is native token on destination chain

Response Parameters

Response Body

pricePricerfq price for this quote
feestringProtocol fee + market maker charged fee
mmIdstringThe uniq id of market marker
txMsgFeestringSGN charges fees to sync, store, and sign messages

Price

NametypeDescription
src tokenTokenInfoSource token information
dst tokenTokenInfoDestination receive token information
srcAmountstringInput amount with src token decimal
dstAmountstringEstimated received amount on destination chain
feeAmountstringmarket maker fee + msg fee + src tx gas cost + dst tx gas cost
validThrutimestampUnix epoch milliseconds. the time before which the price response is valid for Quote
mmAddrstringMarket maker address
sigstringMarket marker uses this signature to verify the price content is agreed by them previously
srcDepositPeriodnumberUnit second. The maximum src deposit period that is expected by market maker, will be started from the time when mm receives the quote request.
dstTransferPeriodnumberUnit second. The minimum destination transfer period that is expected by market maker, will be started from the time when mm receives the quote request.

TokenInfo

NameTypeDescription
chain_idnumberChain id
symbolstringToken Symbol
addressstringToken address

API: rfqQuote

POST https://cbridge-prod2.celer.app/v1/rfqQuote

Request Body

NameTypeDescription
price*JSONrefer to the Price Table
mmId*Stringmarket marker uniq id
sender*Stringuser wallet address
receiver*Stringwallet address who receive the token on destination chain
refundTo*Stringrefund address when source transaction failed
srcDeadline*NumbersrcDepositPeriod (price struct) + current timestamp
dstDeadline*NumberdstTransferPeriod (price struct) + current timestamp
srcNative*Booltrue when source token is a native token
dstNative*Booltrue when destination receive token is a native token
// Response example
{
    "srcTokenUsdPrice": 1,
    "dstTokenUsdPrice": 1,
    "quote": {
        "hash": "0x99f8c9969000a8adca8282d278853dcbd822f48873152b2c951317173d656eb1",
        "srcToken": {
            "chainId": 5,
            "symbol": "USDC",
            "address": "0xCbE56b00d173A26a5978cE90Db2E33622fD95A28",
            "decimals": 6,
            "name": "USD Coin",
            "logoUri": "https://get.celer.app/cbridge-icons/USDC.png"
        },
        "srcAmount": "100000000",
        "srcReleaseAmount": "99900000",
        "dstToken": {
            "chainId": 97,
            "symbol": "USDC",
            "address": "0x855fC87f7F14Db747ef27603b02bAe579ba947B6",
            "decimals": 6,
            "name": "",
            "logoUri": ""
        },
        "dstAmount": "98826590",
        "srcDeadline": 1665563808,
        "dstDeadline": 1665564278,
        "nonce": 718699599,
        "sender": "0x82571c922D3FAaf48df53C74bB0f116e48C34f93",
        "receiver": "0x82571c922D3FAaf48df53C74bB0f116e48C34f93",
        "refundTo": "0x82571c922D3FAaf48df53C74bB0f116e48C34f93",
        "mmAddr": "0x58b529F9084D7eAA598EB3477Fe36064C5B7bbC1"
    }
}

Request Parameters

NameTypeDescription
pricePrice
mmIdStringmarket marker uniq id
senderStringuser wallet address
receiverStringwallet address who receive the token on destination chain
refundToStringrefund address when source transaction failed
srcDeadlineNumber(Second)srcDepositPeriod (from priceRfq) + current timestamp in second
dstDeadlineNumber(Second)dstTransferPeriod (from priceRfq) + current timestamp in second
srcNativeBooltrue when source token is a native token
dstNativeBooltrue when destination receive token is a native token

Response Parameters

NameTypeDescription
srcTokenUsdPriceStringsource token usd price
dstTokenUsdPriceStringdestination token usd price
quoteQuote

Quote

NameTypeDescription
hashStringThe quote hash, uniq id to mark this quote.
srcTokenTokenInfosource token
srcAmountStringInput amount with source token decimal
dstTokenTokenInfoReceiving token on destination chain
dstAmountStringquote received amount
srcDeadlineNumber(Second)srcDepositPeriod (from rfqPrice API) + current timestamp
dstDeadlineNumber(Second)dstTransferPeriod (from priceRfq) + current timestamp in second
nonceNumbernonce for rfq contract transaction calling
senderStringsender address
receiverStringreceive address
refundToStringrefund address when source transaction failed
mmAddrStringmarket marker address

Contract: srcDeposit

Requirements

  1. Get the quote result from rfqQuote API
  2. Find the corresponding contract address here

ABI (optional if you use the binding like Typechain)

srcDeposit/srcDepositNative

Lock the assets to source rfq contract. if the bridge token is a native token, use the srcDepositNative.

// typechain method example
  srcDeposit(
    _quote: RFQ.QuoteStruct,
    _submissionDeadline: BigNumberish,
    overrides?: PayableOverrides & { from?: string | Promise<string> }
  ): Promise<ContractTransaction>;

Request Parameters

NameTypeDescription
_quoteRFQ.QuoteStructrefer to RFQ.QuoteStruct
_submissionDeadlineNumberget form rfqQuote srcDeadline filed
value(msg.value)StringERC20 bridge: msgFee, Native token bridge: msgFee + source token amount

RFQ.QuoteStruct

NameTypeDescription
srcChainIdNumbersource chain id
srcTokenStringsource token address
srcAmountStringInput amount with source token decimal
srcReleaseAmountNOT REQUIRED
dstChainIdNumberdestination chain id
dstTokenStringDestination token address
dstAmountStringget from rfqQuote dstAmount filed
deadlineNumber(Second)get from rfqQuote dstDeadline filed
nonceNumberget from rfqQuote nonce filed
senderStringrfq contract sender address
receiverStringreceive address
refundToStringrefund address, Usually the user wallet address.
liquidityProviderStringmarket maker address, get form rfqQuote mmAddr filed

Once the transaction submitting, same as other EVM bridge, user history can be found in TransferHistory API, and the transaction process status can be found in GetTransferStatus API.

Contract Addresses

ChainCeler Intent Contract Address
BNB Chain0x2b1E704FC7885888E54619Ac58496848ecC7dbB7
Arbitrum0x061691567026bf6384Ca1Ab2402346E9bD1d0765

Audit Reports

Audit reports:
https://github.com/celer-network/intent-rfq-contract/tree/main/audit

Github

Intent Contracts:

https://github.com/celer-network/intent-rfq-contract