Interact from apps
dApps talk to contracts via smart queries (read) and MsgExecuteContract (write).
- Web (CosmJS)
- React Native
- Flutter (CosmJS)
import { MsgExecuteContract } from 'cosmjs-types/cosmwasm/wasm/v1/tx';
const msg = {
typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract',
value: MsgExecuteContract.fromPartial({
sender: address,
contract: contractAddr,
msg: new TextEncoder().encode(JSON.stringify({ transfer: { recipient, amount } })),
funds: [],
}),
};
const result = await client.signAndBroadcast(address, [msg], 'auto');
Smart query via REST:
curl -s "$REST/cosmwasm/wasm/v1/contract/$ADDR/smart/$QUERY_B64"
Same MsgExecuteContract structure as web. Encode JSON msg with TextEncoder (available in RN).
For SafHandle resolve, call smart query then pass address to sendTokens.
import { MsgExecuteContract } from 'cosmjs-types/cosmwasm/wasm/v1/tx';
const msg = {
typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract',
value: MsgExecuteContract.fromPartial({
sender: address,
contract: contractAddr,
msg: new TextEncoder().encode(JSON.stringify({ resolve: { name: 'john' } })),
funds: [],
}),
};
const result = await client.signAndBroadcast(address, [msg], 'auto');
Same CosmJS MsgExecuteContract shape as web. Smart queries use REST or StargateClient helpers.
SafHandle example
- Resolve
@johnviagetAddressor smart query - Use returned
addr_safroinMsgSend - To register: Register names
- See Payments flow
Next
- Local dev and testing
- wasm module (CLI reference)