Modular Rollup Interoperability
Celestia + Hyperlane, a match made in modular heaven
Last updated
Celestia + Hyperlane, a match made in modular heaven
Last updated
This guide will walk you through the process of deploying an EVM-compatible sovereign rollup on Celestia, with interoperability powered by Hyperlane.
By the end of the tutorial, you will have deployed your own sovereign rollup on Celestia's Mocha testnet. Users of your rollup will be able to send messages and tokens to and from your rollup and other EVM compatible testnets.
This tutorial is intended for users who want to deploy an EVM compatible rollup on Celestia, and deploy Hyperlane's interchain messaging and token transfer APIs to that rollup.
At a high level, this tutorial will involve three steps.
Deploy an EVM compatible rollup to Celestia
Deploy Hyperlane's interchain messaging API to that rollup
Deploy Hyperlane's interchain token API
Additional documentation for deploying an EVM compatible rollup to Celestia can be found .
Configure a machine (or VM) with at least 4 cores, 8 GB RAM, and 250 GB disk. You will use this machine to host:
A Celestia light node
Your rollup
Make sure your machine allows inbound TCP traffic on port 9090.
Your rollup will need to connect to a Celestia light node in order to submit transactions to the DA layer.
Open up a new screen
session for running your light node:
If make install
fails to write to /usr/local/bin/celestia
, run sudo env "PATH=$PATH" make install
instead
You can verify that your node is syncing by exiting your screen session and requesting the latest block
Open up a new screen
session for running your ethermint node:
If you run the contract deployment on the same machine as your ethermint node, you can use the RPC URL http://localhost:8545
.
By default, your ethermint chain will fund a single address with testnet tokens. You can find the private key for that address by running the following command
You will need an RPC URL for each of these remote chains, as well as an address with tokens to pay for gas.
Applications on remote chains will use these contracts to verify messages coming from your rollup.
You will need an RPC URL for each chain, as well as an address with tokens to pay for gas.
Follow these instructions to send messages from your ethermint chain to the remote chain(s) and from the remote chain(s) back to your ethermint chain(s).
You will need to make sure you add the details for your chain in a chain config JSON file and pass that to the deployer. The contents of that file should look something like this. Make sure to substitute your own chain name, token name, and RPC URL.\
Your token config must specify the ISMs that you deployed on the remote chains, as the default ISMs on those chains will not be able to verify messages sent from your ethermint chain.
You will need to make sure you've added your chain to src/consts/chains.json
. You can use the same JSON object you used in the previous step, with the additional logoImgSrc
field.
Then, follow to spin up a mocha
light node on the machine you just set up.
Once your node is syncing, follow to acquire mocha tokens from the faucet.
First, build ethermintd
by following .
Then, follow to run your ethermint node.
Additional documentation for deploying Hypelane to an EVM compatible chain can be found .
Follow to deploy the Hyperlane core contracts to your ethermint chain.
Follow to run one or more Hyperlane validators for your ethermint chain.
You will need to expose your ethermint node's RPC endpoint to these validator(s) so that they can query the Hyperlane contract.
Follow to deploy an Interchain Security Module
smart contract to each of the remote chains you would like your ethermint chain to be able to communicate with.
Follow and to run Hyperlane relayers to deliver messages between your ethermint chain and the remote chains you've configured.
You will need to expose your ethermint node's RPC endpoint to the relayers so that they can query the Hyperlane contract.
Additional documentation for deploying a Warp route to an EVM compatible chain can be found .
Follow to deploy warp route contracts to your ethermint chains and the remote chains that you'd like to support.
Follow to deploy the UI for your Warp Route.