Accounts
This tutorial demonstrates how to make a simple interchain call using the Accounts API to a pre-deployed TestRecipient
contract on a remote chain.
You can also check out the hyperlane-quickstart
repo for running this out of the box.
Want to learn more about interchain accounts? Take a look at the Accounts API documentation
Inputs
$DESTINATION_DOMAIN
: The domain ID of the destination chain. See Domain identifiers$RECIPIENT
: The address of theTestRecipient
contract on the destination chain,0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35
$CALLDATA
: The calldata of the call to make onTestRecipient
, which we generate usingcast
:0xf07c1f4700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001648656c6c6f576f726c642066726f6d20616e2049434100000000000000000000
Make a call
Sending a message is a simple matter of calling InterchainAccountRouter.callRemote()
. This function can be called easily using Etherscan+Metamask or cast.
Navigate to the
InterchainAccountRouter
contract page on Etherscan (or whatever chain you want to send from). See Contract addresses forInterchainAccountRouter
addressesUnder the
Contract
tab, find theWrite as Proxy
button.Click on the
Connect to Web3
button to connect your Wallet (i.e. Metamask). Make sure that you are on the correct network.Expand the
callRemote
boxFor destination domain, enter
$DESTINATION_DOMAIN
. You could use137
to send to mainnet Polygon, or see other Domain identifiersFor the
_to
argument, enter the$RECIPIENT
For the
_value
argument, enter 0For the
_data
argument, enter the$CALLDATA
Submit the transaction via your wallet/Metamask
If you view the transaction on a block explorer, you should be able to see the Dispatch
event. You can see an example message sending transaction here.
For your call to be executed on the destination chain, you must Manually pay for interchain gas, using 550000
for the gas amount
Last updated