Cosmos custom calls
Execute any custom calls at the end of Squid Route
There are mainly two types of calls in cosmos - native call or CosmWasm contract call. Squid supports both cases.
Custom Cosmos contract call structure
export type CustomCosmosContractCall = {
contract?: string; // must be set for wasm calls
msg: object; // properly built object with a message call
}
Building a valid contract call
Let's assume we want to stake our OSMO tokens after we completed our swaps. Staking on Osmosis can be done in 2 ways - via native message or via calling a smart contract.
Example of stargate message
{
"msg": {
"stake": {
"denom": "uosmo"
}
}
}
Example of wasm hook message
{
"contract": "osmo1...",
"msg": {
"wasm": {
"contract": "osmo1...",
"msg": {
"stake": {
"denom": "uosmo"
}
}
}
}
}
Example of Mars Red Bank deposit call on Osmosis
const params = {
fromChain: "axelar-dojo-1",
fromToken: "uaxl",
fromAmount: "1000000",
fromAddress: signerAddress,
toChain: "osmosis-1",
toToken: "uosmo",
toAddress: osmosisAddress, // this address will be replaced with contract address
slippage: 3.0,
customContractCall: {
contract:
"osmo1c3ljch9dfw5kf52nfwpxd2zmj2ese7agnx0p9tenkrryasrle5sqf3ftpg",
msg: {
deposit: {
on_behalf_of: osmosisAddress,
},
},
},
};
https://github.com/0xsquid/cosmos_tests/tree/main
Last updated