The 1-Time Deposit Address: Axelar's Cross-Chain Onramp, Explained

A one-time deposit address allows decentralized projects to mimic the way centralized exchanges are able to handle deposits from any chain, by creating a monitored address for receiving tokens.

March 28, 2023
Galen Moore
March 28, 2023

Table of Contents

Back to blog

One-time deposit addresses are a valuable feature, provided as a service over the Axelar network via the Axelar SDK, enabling Web3 projects to provide chain-agnostic onboarding and cross-chain features that rival the user experience of a centralized exchange.

These one-time deposit addresses are important components in multiple major Axelar integrations, including Polygon Supernets and Osmosis, the largest DEX by volume in the Cosmos ecosystem.

But what is a one-time deposit address? And why is it important to these projects?

One-time deposit address: Tldr

In brief, a one-time deposit address is a temporary special address created and monitored by Axelar's Relayer Services on behalf of the requester. It’s important because it allows application-layer projects to mimic the way centralized exchanges are able to handle deposits from any chain, by creating a monitored address for receiving tokens.

It’s important to note that, unlike the deposit address on a centralized exchange, only Axelar validators can control or lock the funds in a one-time deposit address.

Here's an animated diagram, so you can visualize the flow of events.

Transaction flow of Axelar’s 1-time deposit address


In short, the flow shown in the animated diagram looks like this:

You have tokens on Chain A, and you want to do something with them on Chain E. You initiate a cross-chain request in an Axelar-connected dApp.

Axelar SDK creates a unique address on Chain A. This address has two important properties:

  1. It is one-to-one associated with this specific transaction, including information specifying the intended destination (Chain E, in this case).
  2. Axelar Relayer Services monitor the address for deposits.

When the unique address receives Chain A tokens, Axelar validators see the transaction, confirm it, and Axelar protocols already know the deposited assets are meant to go to Chain E. Once the cross-chain transaction has been translated and routed appropriately, the validators authorize minting on Chain E of a wrapped representation of Chain A tokens in the equivalent amount.

You can find a more complete picture of how the Axelar network operates in this blog post, which includes a tech-stack diagram.

The AxelarJS SDK

The AxelarJS SDK is an npm library that includes a collection of APIs and query tools. In addition to generating one-time deposit addresses, the AxelarJS SDK can be used by dApps to monitor and recover transactions using General Message Passing.

It’s important to note that the services and developer tools provided by Axelar JS SDK are permissionless: anyone can provide these services over the Axelar network. Like Axelar’s gas services, which simplify and abstract cross-chain gas payments for users, AxelarJS SDK services are optional for developers. Fees for AxelarJS SDK services are paid in the AXL token via a user-abstracted conversion process, handled by Axelar gas services.

How (and when) do I use Axelar 1-time deposit addresses?

For a complete view of the various methods for sending tokens cross-chain using Axelar, including using the AxelarJS SDK and one-time deposit addresses, please visit the relevant page in Axelar’s documentation.

In addition, Axelar developers have created a brief tutorial video with a live code walk-through that demonstrates how to send tokens via deposit address and other methods.

Questions? Join Axelar Discord, head to the #pick-a-role channel and claim the developer role to join the #developers channel, where you’ll find support and discussion with Axelar team and community members.