Ask or search…

App Abstraction

Interact with your application on multiple chains
The Hyperlane SDK simplifies the interface for smart contract applications deployed across multiple chains. It provides utilties for invoking a contract's methods on a target chain and a MultiProvider for managing chain connections.


The HyperlaneApp abstraction is a mapping that resolves a chain to a collection of ethers Contracts. Developers should extend HyperlaneApp and can add methods for different kinds of contract calls/transactions they would like to initiate.
A simple HyperlaneApp extension could look like this:
export class MyHyperlaneApp<Chain extends ChainName = ChainName>
extends HyperlaneApp<MyContracts, Chain>
async myMethod(from: Chain, to: Chain, message: string) {
const myContract = this.getContracts(from).router;
const toDomain = ChainNameToDomainId[to];
const tx = await helloWorldContract.myMethod(toDomain, message);
return tx.wait();
See the Hyperlane Hello World app for an example of how to extend HyperlaneApp.


Once a HyperlaneApp implementation is defined, it can be instantiated using the output generated from the HyperlaneAppDeployer and an instance of the MultiProvider.
const chainToContracts = await myDeployer.deploy();
const app = new mydApp(chainToContracts, multiProvider);
To interact with contracts on a particular network, simply provide the namespace to the app.
const ethereumContracts = myApp.getContracts('ethereum');