This guide walks you through deploying a Hyperlane Warp Route (HWR) between a Cosmos SDK chain and an SVM chain (Solana, Eclipse). It combines the Hyperlane TypeScript CLI for the Cosmos side with the Sealevel Rust CLI for the SVM side, linked via theDocumentation Index
Fetch the complete documentation index at: https://docs.hyperlane.xyz/llms.txt
Use this file to discover all available pages before exploring further.
foreignDeployment field.
Prerequisites
- Hyperlane CLI (TypeScript CLI for Cosmos deployment)
- Rust (latest stable version) and Solana CLI tools (
3.0.14for deployment) - A funded wallet on the SVM chain (Solana keypair)
- A funded wallet on the Cosmos chain (hex private key)
- If your Cosmos wallet uses a mnemonic, derive/export the raw hex private key first (64 hex chars, optional
0xprefix).
- If your Cosmos wallet uses a mnemonic, derive/export the raw hex private key first (64 hex chars, optional
- Hyperlane core deployed on both chains:
- For SVM, see the prerequisites in Deploy an SVM HWR
- For Cosmos, see Deploy to a Cosmos Chain
Overview
Since the SVM and Cosmos chains use different deployment tooling, the workflow is:- Deploy the Cosmos side using the Hyperlane TypeScript CLI (
hyperlane warp deploy) - Deploy the SVM side using the Sealevel Rust CLI, referencing the Cosmos deployment via
foreignDeployment - Update the Cosmos side using
hyperlane warp applyso the Cosmos router enrolls the SVM router
Walkthrough
Step 1: Deploy on the Cosmos Side
Create a Warp Route config for the Cosmos chain. Since we are deploying the Cosmos side first, only the Cosmos chain entry is required.~/.hyperlane/deployments/warp_routes/. If you omit --warpRouteId, use the ID shown in deploy output (usually SYMBOL/label, e.g. ATOM/yourcosmoschain) for later steps.
Step 2: Deploy on the SVM Side
Follow the SVM HWR guide for building programs and preparing your environment. Create atoken-config.json for the SVM side, referencing the Cosmos deployment via foreignDeployment:
interchainGasPaymaster value is the overhead IGP address from your SVM chain’s core deployment artifacts at <chain>/core/program-ids.json.
Deploy from the Sealevel client directory:
rust/sealevel/environments/mainnet3/warp-routes/atom/program-ids.json. You will need the SVM warp route program ID for the next step.
Step 3: Update Cosmos-Side Router Enrollment
Create an apply config that includes the SVM chain as aforeignDeployment:
--config is a local deploy-config file, also pass the matching warp core config via --warp:
Step 4: Verify Both Sides
SVM side:Step 5: Test a Transfer
hyperlane warp send does not currently support Cosmos SDK or SVM chains. To test your cross-chain warp route, run a relayer between your chains and initiate a transfer from the SVM side using the Sealevel CLI, or from the Cosmos side using native transaction tooling./hyperlane.warp.v1.MsgRemoteTransfer using your chain’s native tx tooling, and quote fees beforehand with QueryQuoteRemoteTransfer (hyperlane.warp.v1.Query/QuoteRemoteTransfer).
To transfer from SVM to Cosmos:
The recipient address must be a
0x-prefixed 32-byte hex value (64 hex chars), not bech32. When converting from bech32, use a converter that outputs the Hyperlane recipient format (left-padded bytes32). The relayer handles conversion back to a bech32 account on the destination chain.Important Considerations
Decimals
Cosmos tokens typically use 6 decimals, which is compatible with SVM’s standard precision. If bridging a token with different decimals on each side, use theremoteDecimals field in the SVM config (see the EVM ↔ SVM guide for an example).
Address Formats
- SVM: Base58-encoded public keys (e.g.,
D6k6T3G74ij6atCtBiWBs5TbFa1hFVcrFUSGZHuV7q3Z) - Cosmos: Bech32 addresses (e.g.,
cosmos1...)
foreignDeployment field in the SVM token-config.json should use the Cosmos warp route address in Hex32 format (0x-prefixed 32-byte value), not bech32.
Router Enrollment
This route is fully bidirectional only after both sides enroll each other:- The SVM deploy step enrolls the Cosmos router on the SVM side.
- The
warp applystep enrolls the SVM router on the Cosmos side.
Key Management
- SVM side: Uses a Solana keypair file (JSON format)
- Cosmos side: Uses a hex private key via
HYP_KEY_COSMOSNATIVEor--key.cosmosnative