Docs
IntegrationsStellar

Overview

Send and receive GMP messages from Soroban contracts on Stellar.

Stellar is connected to Axelar through Amplifier. Soroban contracts on Stellar can exchange messages with every connected chain, and send tokens with the Interchain Token Service.

The contracts are in axelar-amplifier-stellar, published as Rust crates.

💡

Using an AI agent?

Copy this page with Copy Markdown at the top and give it to your agent, with what you want to build or the contract you want to make cross-chain. The copied page links to the Markdown of the other pages it refers to, so the agent can read them too. Review what it writes, and test on testnet before mainnet.

Message flow

Sending:

  1. Your contract pays gas to the gas service (pay_gas).
  2. Your contract calls call_contract on the gateway, which emits a contract_called event.
  3. Axelar verifies the event and routes the message to the destination chain.

Receiving:

  1. Axelar approves the message on the Stellar gateway.
  2. A relayer calls execute on your contract.
  3. execute validates the message with the gateway, which marks it executed, then runs your code.

Addresses

MainnetTestnet
Chain namestellarstellar-2026-q1-2
GatewayCD6VSKXB4HY2DWU7EP2PUIYTBJBJ36LDJXEZN4NSXFYF5YP37DDFX6NFCB2JYOOZPHO43R57TC5PXV22QICKIDC5NKRF62BZG2J6JYFUIQPIAYY3
Gas serviceCDZNIEA5FLJY2L4BWFW3P6WPFYWQNZTNP6ED2K5UHD5PNYTIMNFZDD3WCCLZOCGHHC6F6JCZHEUP53LDQHRBPPCNRYXOVFZFS3O63OGRC47CKCGV
XLM token addressCAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMACDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC
Soroban RPChttps://mainnet.sorobanrpc.comhttps://soroban-testnet.stellar.org

The current addresses are always in the deployment configs, under chains.stellar*: mainnet | testnet.

⚠️

Testnet resets

Stellar resets its testnet regularly, which deletes every contract. Axelar then redeploys its contracts under a new chain name, such as stellar-2026-q1-2. After a reset, redeploy your contracts and use the new chain name and addresses.

Setup

You need:

  • Rust 1.84 or later, with the wasm32v1-none target: rustup target add wasm32v1-none.
  • The Stellar CLI.
  • A funded testnet account: stellar keys generate alice --network testnet --fund.

Add the crates to your contract's Cargo.toml:

[dependencies]
stellar-axelar-std = { version = "2.0.1", features = ["derive"] }
stellar-axelar-gateway = { version = "2.0.1", features = ["library"] }
stellar-axelar-gas-service = { version = "2.0.1", features = ["library"] }

stellar-axelar-std re-exports soroban-sdk (version 25), so import Soroban types from it rather than adding soroban-sdk yourself. If you do add it, use the same major version, or the types won't match. The library feature lets you use the gateway and gas service clients without compiling their contracts into yours.

Stellar concepts

  • Authorization. Soroban contracts authorize calls with require_auth() instead of msg.sender. When your contract sends a message, it authorizes as itself (env.current_contract_address()), and the user who pays gas authorizes the payment.
  • Addresses. Contracts are C… addresses and accounts G… addresses. Messages carry them as strings: your contract receives source_address as a string, and you send to destination_address as a string in the destination chain's format.
  • Tokens. XLM and other assets are used through their token contract (Stellar Asset Contract). Amounts are integers in the token's smallest unit: XLM has 7 decimals, so 1 XLM is 10000000.
  • Storage expiry. Contract data expires unless its time to live is extended (state archival). contractimpl from stellar-axelar-std extends your contract's instance storage on every call.

Next steps

Resources

On this page