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:
- Your contract pays gas to the gas service (
pay_gas). - Your contract calls
call_contracton the gateway, which emits acontract_calledevent. - Axelar verifies the event and routes the message to the destination chain.
Receiving:
- Axelar approves the message on the Stellar gateway.
- A relayer calls
executeon your contract. executevalidates the message with the gateway, which marks it executed, then runs your code.
Addresses
| Mainnet | Testnet | |
|---|---|---|
| Chain name | stellar | stellar-2026-q1-2 |
| Gateway | CD6VSKXB4HY2DWU7EP2PUIYTBJBJ36LDJXEZN4NSXFYF5YP37DDFX6NF | CB2JYOOZPHO43R57TC5PXV22QICKIDC5NKRF62BZG2J6JYFUIQPIAYY3 |
| Gas service | CDZNIEA5FLJY2L4BWFW3P6WPFYWQNZTNP6ED2K5UHD5PNYTIMNFZDD3W | CCLZOCGHHC6F6JCZHEUP53LDQHRBPPCNRYXOVFZFS3O63OGRC47CKCGV |
| XLM token address | CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA | CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC |
| Soroban RPC | https://mainnet.sorobanrpc.com | https://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-nonetarget: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 ofmsg.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 accountsG…addresses. Messages carry them as strings: your contract receivessource_addressas a string, and you send todestination_addressas 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).
contractimplfromstellar-axelar-stdextends your contract's instance storage on every call.
Next steps
- Send and receive messages: a complete contract, with tests.
- Contract reference: gateway and gas service functions and events.
- Interchain Token Service on Stellar.
Resources
- axelar-amplifier-stellar: source code of Axelar's Stellar contracts.
- API documentation of the crates.
- stellar-axelar-example: example contract using GMP and ITS, deployed on testnet.
- stellar-gmp-example: a Stellar contract that sends messages to an EVM chain.
- Stellar developer docs.