- This guide is for Cosmos SDK chains with the Hyperlane module integrated. For CosmWasm-based chains, see the CosmWasm implementation.
- It will walk you through deploying Hyperlane to your new chain as quickly as possible for testing, not production. This includes the core Mailbox and ISM components as well as Hyperlane Warp Route components for asset bridging.
- To see which chains are already supported, visit the Registry.
- If you need any help, reach out on GitHub Discussions or get in touch.
Prerequisites
Anyone can begin this quickstart guide once they have the following artifacts & assets available:- A Cosmos SDK chain with the Hyperlane module integrated (including the
x/coreandx/warpmodules) - A new, custom, or pre-existing Cosmos SDK network of your choice, including the following metadata:
- The chain name, e.g.
hyp1 - The chain ID, e.g.
hyperlane-local-1 - The bech32 prefix, e.g.
hyp - RPC, REST, and gRPC URLs
- Native token denomination and gas price
- The chain name, e.g.
- A deployer wallet hex private key (64 hex characters, with or without
0xprefix)- This wallet should be funded on your custom chain and any chain you will be passing messages to & from
- If you use a mnemonic wallet, export/derive the raw hex private key before running CLI commands
- Hyperlane CLI
1. Registry
Thehyperlane registry init command is currently designed for EVM chains and does not support Cosmos SDK chains. Instead, create your chain metadata file manually.
Create the directory and file:
$HOME/.hyperlane/chains/yourchain/metadata.yaml with the following content, replacing values with your chain’s details:
Key Cosmos-specific fields:
protocol: cosmosnative— Must be exactlycosmosnative(notcosmosorethereum)bech32Prefix— Your chain’s address prefix (e.g.cosmos,osmo,hyp)slip44— SLIP-44 coin type (use118for standard Cosmos chains)grpcUrls— Required for Cosmos SDK chainsgasPrice— Must include bothamountanddenomnativeToken.denom— The on-chain denomination (e.g.uatom,uosmo)domainId— Must be unique across the Hyperlane network (do not reuse another chain’s domain)
2. Core
Next, let’s configure, deploy and test your custom chain’s core components.Create Configuration
- Set the hex private key of your funded deployer address for Cosmos-native operations:
export HYP_KEY_COSMOSNATIVE='<YOUR_PRIVATE_KEY>'(64 hex characters, with or without0xprefix)- Or pass
--key.cosmosnativedirectly to deploy commands
- Create
./configs/core-config.yamlusing the template below.
HYP_KEY is treated as the legacy Ethereum shared key in the current CLI. For Cosmos SDK chains, use HYP_KEY_COSMOSNATIVE (or --key.cosmosnative) to avoid key prompts.Deploy
To deploy, run:Aggregation ISMs are currently not supported on Cosmos SDK chains due to AltVM limitations. Use
messageIdMultisigIsm or merkleRootMultisigIsm instead.Verify Deployment
After deployment, verify your core components are configured correctly:hyperlane send message does not currently support Cosmos SDK chains. To test message delivery, deploy a Warp Route and use a relayer to process transfers.Update Core Configuration (Day 2)
Usecore read output as your editable config for updates such as validator rotation, default ISM changes, or gas oracle updates:
Once ownership has been transferred away from the deployer,
core apply will no longer work with the deployer key alone. Use the --strategy flag with a file submitter to submit transactions through the new owner (e.g. a multisig).🎉 Congrats! You have successfully deployed Hyperlane core to your custom Cosmos chain
3. Hyperlane Warp Route
Now that you have a Hyperlane Mailbox and core components on your chain, it’s time to set up token bridging between your chain and any other Hyperlane chain. Continue with one of the following guides:4. Submit to Registry
If you want other chains to connect with you as well as to take this to production, make a registry PR.Ensure complete info
Make sure your metadata is complete:- add a
logo.svgfile inside the folder - include
Deployerinformation identifying the team deploying - indicate
isTestnettrueif the chain is testnet - lint the YAML files and order alphabetically
Commit to GitHub
First, navigate to your local instance of the registry and commit changes🎉 Congrats! You have successfully deployed Hyperlane to your Cosmos chain and added your work to the Hyperlane registry