EVM Core Deployment¶
This guide covers deploying Hyperlane core contracts on an EVM-based chain using the Hyperlane CLI. It assumes you are using the local registry in this repo.
Prerequisites¶
- Hyperlane CLI installed.
- A funded EVM account private key exported as
HYP_KEY. - A chain registry entry in
chains/<chain>/metadata.yaml.
export HYP_KEY=0x...
Registry Prerequisites¶
The Hyperlane CLI defaults to the official registry, but can be overridden it with the --registry flag to use the celestia registry.
Initialize a local registry using the CLI (auto-detects a local EVM RPC at http://localhost:8545):
hyperlane registry init --registry .
Core Deployment Workflow¶
For testnet deployments, the recommended defaults are:
- DefaultISM:
testIsm(no security guarantees) - DefaultHook:
protocolFee(can be set to 0) - RequiredHook:
merkleTreeHook(inserts messages into an incremental merkle tree)
For mainnet deployemnts, the recommended defaults are:
- DefaultISM:
domainRoutingIsm(configure ism for remote chains per-domain)- with
merkleRootMultiSig(see MultisigISM for details)
- with
- DefaultHook:
interchainGasPaymaster(configure gas fee overhead for remote chains per-domain) - RequiredHook:
merkleTreeHook(inserts messages into an incremental merkle tree)
Note
The domainRoutingIsm and interchainGasPaymaster hook must register ISMs and gas configs for remote chain domain identifiers. This is a requirement for processing both inbound and outbound messages.
-
Initialize a deployment config. Use
--advancedfor fine-grained control. This will produce a<chain>-core.yamlfile in theconfigsdirectory.hyperlane core init --advanced --config configs/<chain>-core.yaml --registry . -
Deploy the core contracts (omitting
--chainallows selection via prompt).hyperlane core deploy --chain <chain> --config configs/<chain>-core.yaml --registry . -
Read core config on-chain artifacts back into the config file.
hyperlane core read --registry . --chain <chain> --config configs/<chain>-core.yaml
Outputs¶
Deployed contract addresses are written to:
chains/<chain>/addresses.yaml
The deployment config is updated by hyperlane core read to include deployed addresses.