Start the agoriclocal
chain:
docker run -d -p 26657:26657 -p 1317:1317 -p 9090:9090 ghcr.io/agoric/agoric-3-proposals:latest
We will set up Hermes relayer between:
- Agoric Local Chain (
agoriclocal
) - Osmosis Testnet (
osmo-test-5
)
The Hermes relayer will facilitate IBC transfers between these chains. To proceed, install Hermes on your computer by following this installation guide.
Once Hermes is installed, start the relayer:
yarn start:relayer
Wait for a success message similar to the one below:
SUCCESS Channel {
ordering: Unordered,
a_side: ChannelSide {
chain: BaseChainHandle {
chain_id: ChainId {
id: "agoriclocal",
version: 0,
},
...
},
client_id: ClientId("07-tendermint-0"),
connection_id: ConnectionId("connection-0"),
port_id: PortId("transfer"),
channel_id: Some(ChannelId("channel-0")),
version: None,
},
b_side: ChannelSide {
chain: BaseChainHandle {
chain_id: ChainId {
id: "osmo-test-5",
version: 5,
},
...
},
client_id: ClientId("07-tendermint-4393"),
connection_id: ConnectionId("connection-3835"),
port_id: PortId("transfer"),
channel_id: Some(ChannelId("channel-10104")),
version: None,
},
connection_delay: 0ns,
}
Copy the following values from the success message for both Agoric Local Chain (agoriclocal
) and Osmosis Testnet (osmo-test-5
):
connection_id
channel_id
client_id
Then, update these values in contract/info.js
. This file stores the chain and channel details required for the contract proposal, ensuring the connection is properly registered with ChainHub.
Navigate to Agoric SDK directory and run:
agoric run multichain-testing/src/register-interchain-bank-assets.builder.js --assets='[{"denom":"ibc/<IBC-DENOM-FOR-TOKEN>","issuerName":"<NAME>","decimalPlaces":6}]'
Replace:
<IBC-DENOM-FOR-TOKEN>
→ Use the correct IBC denomination ofAUSDC
andWAVAX
on the local chain. You can usegetDenom.js
to check the IBC denomination on the local chain for reference.<NAME>
→ Set the proper issuer name.decimalPlaces
→ Make sure it's correct for each token.
Run this command once for AUSDC
and again for WAVAX
.
If the channel ID for Agoric's local chain is channel-0
, use the following commands:
agoric run multichain-testing/src/register-interchain-bank-assets.builder.js --assets='[{"denom":"ibc/94EB1E9A676004E74ECF47F8E4BF183F4017CE0630A4D1AC7C7D9EB9CD6A3D53","issuerName":"AUSDC","decimalPlaces":6}]'
agoric run multichain-testing/src/register-interchain-bank-assets.builder.js --assets='[{"denom":"ibc/3C870A71004EAD01A29709B779FECBB9F150559B1276825584E149596BD450DE","issuerName":"WAVAX","decimalPlaces":18}]'
This command will create some bundle files. Copy them to this project’s root folder.
After copying the files, run:
yarn register:ausdc
After generating and copying the files for WAVAX, run:
yarn register:wavax
To verify if registration was successful, go to VStorage and check if AUSDC
and WAVAX
is present under published.agoricNames.brand
and published.agoricNames.vbankAsset
.
You can also inspect local chain logs if something went wrong.
Next, to deploy contract/axelar-gmp.contract.js
on the Agoric Local Chain, make sure to generate the bundles:
agoric run contract/proposal/init-axelar-gmp.js
And then run the following command from the project root directory:
yarn deploy:contract
The contract deployment script is contract/deploy.sh
. If you're making changes to the contract and redeploying to see the updates, you may sometimes encounter an issue where the script deploys an older version of the contract instead of the latest changes.
If the expected changes don’t appear after deployment, try running yarn deploy:contract
again.
To launch the contract UI, run:
yarn start:ui
Once the UI is live, connect your wallet and use it to send tokens and invoke EVM contracts.
If the transactions are successful, you can verify them on the respective block explorers:
🔹 Osmosis Testnet Explorer – Check the transaction for the recipient wallet:
osmo1yh3ra8eage5xtr9a3m5utg6mx0pmqreytudaqj
🔗 View on Mintscan
🔹 Axelar Scan – Verify the transaction for the GMP wallet:
axelar1dv4u5k73pzqrxlzujxg3qp8kvc3pje7jtdvu72npnt5zhq05ejcsn5qme5
🔗 View on AxelarScan