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();
}
}
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');
Last modified 5mo ago