Ondo Token Bridge

Introduction

The Ondo Token Bridge is a mechanism for seamlessly transferring Ondo tokens across blockchains. We have partnered with prominent bridging protocol Axelar, and incorporated state-of-the-art, multi-chain communication primitives together with a novel Ondo risk management layer to help Ondo tokenholders bridge Real World Assets (RWAs) in a safe and efficient manner.

Bridging assets across chains has historically posed significant security challenges. Designing a system to support the bridging of RWAs cross-chain necessitates stringent security measures. Ondo approaches this problem by relying on pre-existing, battle-tested bridge infrastructure, while adding our own second layer of validation to all bridge transactions.

The Ondo Token Bridge accomplishes the following:

  • Security which scales with the bridged amount, with additional signatures required to bridge large amounts
  • Using existing, battle-tested bridge technology from Axelar
  • When bridged, Ondo tokens are not locked in a smart contract on the source chain. They are burned on the source chain and re-minted on the destination chain. This eliminates an attack vector common to other lock-and-mint token bridges

In the design phase of the Ondo Token Bridge, we researched the market landscape and observed a predominantly competitive stance among entities, rather than a collaborative one. We recognize that collaboration significantly bolsters security measures. Our design aims to ultimately support multiple cross-chain messaging technologies, while ensuring that the issuer (Ondo) must always attest to the message authenticity. This strategy is also employed by Circle's Cross-Chain Transfer Protocol (CCTP) (opens in a new tab).

Ondo Token Bridge Mechanics

The Ondo Token Bridge works by relying on Axelar's message passing protocol. This message passing protocol will execute a bridge proposal cross-chain, then following Ondo approval, tokens will be minted to the user.

Ondo Token Bridge Approach

Our Bridge implementation will rely on Axelar (opens in a new tab) as the messaging layer, with other protocols coming later. The steps are:

  • User deposits to Ondo's SourceBridge contract on the source chain, such as Ethereum
  • The SourceBridge contract burns the user’s tokens, destroying them on Ethereum. SourceBridge notifies the Axelar Gateway contract
  • The Axelar network validates the message and posts an approval signature to the Ondo DestinationBridge contract on the destination chain, such as Mantle
  • Depending on the transfer size, one or two approval signatures are also required from Ondo
  • After the signature threshold is met, tokens are minted to the user on Mantle

The goal of this approval mechanism is to avoid fully trusting the bridge or the issuer. Requiring Ondo signoff ensures funds are safe, even in the event of a total security failure of the bridge technology.

Transfer Limitations

Daily Transfer Limit

Our DestinationBridge contract contains a daily mint limit value. This provides a safe upper bound on the amount that can be transferred per day, which limits the amount of damage a potential hack could do. This limit resets every 24 hours, and is currently set to 10 million USDY.

Bucket-level rate limiting defines the amount a source chain can transfer to another chain. In the event a chain is under attack, the loss is prevented through the bucket-level rate limiting.

Transfer Time

Most transfers will be completed in under 24 hours after being initiated. If the daily maximum bridge limit is reached, transfers may take longer to process, resulting in transactions staying in the "Processing" state for up to 24 hours.

Approval Thresholds

  • 1 to 100k Tokens: Two signatures are required: Axelar Bridge and Ondo multisig #1.
  • 100k to 1m Tokens: Three signatures are required: Axelar Bridge, Ondo multisig #1 and Ondo multisig #2.
  • >1m Tokens: Disallowed.

If you need to move more than 1 million tokens cross-chain, please contact us at support@ondo.finance.

Emergency Pause

An Ondo-controlled administrator multisig can pause (and resume) all bridge functionality.

Same-Address Transfer

Currently, only same-address transfers are allowed; the source and destination address must be the same.

Technical Details

Per the description above, the Ondo SourceBridge contract will execute callContract() on the Axelar Gateway contract (opens in a new tab).

function callContract(
    string calldata destinationChain,
    string calldata destinationContractAddress,
    bytes calldata payload
) external

The payload struct is the data sent cross-chain. This encodes the information for the DestinationBridge contract to complete the transfer.

bytes memory payload = abi.encode(
    VERSION,
    CHAIN_ID,
    msg.sender,
    amount,
    nonce++
);

callContract() emits an ContractCall event, alerting the network of Axelar validators (opens in a new tab) to take action and transfer the message cross-chain.

In the destination chain, Ondo inherits from the AxelarExecutable (opens in a new tab) contract, overriding the _execute() function:

function _execute(
    string calldata srcChain,
    string calldata srcAddr,
    bytes calldata payload
  ) internal override

In this function Ondo validates the parameters and enqueues a mint transaction. Ondo's backend infrastructure will notify our operators that a bridge transaction is pending. After vetting the associated SourceBridge transaction for correctness, including validating that tokens were correctly burned, an operator will sign the approval transaction to allow the cross-chain transfer to complete.

FAQ

Can I specify the recipient's address for my transfer?

Most Ondo Tokens come with permissions, which are upheld by allowing transfers between the same address across EVM chains.

When initiating a transfer via a smart contract, make sure you control your smart contract address on the destination chain to prevent any loss of tokens.

We may introduce the option to specify recipient addresses in an upcoming release.

What is the typical transfer time?

The mentioned 24-hour timeframe is a conservative estimate. In practice, transfers are often completed faster.

The duration can vary based on the transaction size. Larger transactions require more validations, potentially extending the transfer time.

With ongoing optimizations, we anticipate that most small-amount transactions will be minted on the destination chain within 30 minutes in the near future.

Are there any fees associated with transferring tokens?

Transferring tokens comes at no fee on the actual token amount (for instance, USDY). Using the Ondo Token Bridge guarantees you receive the exact amount of tokens on the destination chain as sent from the source chain.

However, there are two types of fees to be aware of:

  1. Cross-chain gas fees: These fees are associated with leveraging Axelar's technology for the transfer and are paid in the gas token of the source chain
  2. Standard gas fees: These are the usual gas fees on your source chain required to initiate the transfer

What steps should I follow if my transaction status is "Failed"?

Rest assured, your funds are secure. Our team is dedicated to resolving any issues promptly.

Typically, a "Failed" status occurs when the cross-chain fee is underestimated. Here’s a step-by-step guide to resolve this:

  1. Locate the Failed Transaction -- Go to the "My Transfers" tab and click on the failed transaction to retrieve its source transaction hash. It should look like this: 0x7aa73c0a8b075a6ed24b31f51045f479f0337d0b5987149fea7bd0ae4d4aa4e6
  2. Verify its status on the Axelar Explorer -- Copy-paste this hash on https://axelarscan.io/ (opens in a new tab) to review the cross-chain messaging steps. Identify if there's an error in any of the five steps displayed Bridge Status Stepper
  3. Execute Transaction -- If an error is displayed, you should see a connect button next to it. As indicated, connect your wallet and execute the transaction
  4. Monitor Your Transfer -- Upon confirmation, the transfer of your tokens will resume. Shortly, the "My Transfers" tab will update the status of your transaction

For additional support, feel free to reach out to support@ondo.finance.