Documentation Index
Fetch the complete documentation index at: https://docs.getpara.com/llms.txt
Use this file to discover all available pages before exploring further.
Execute custom messages and interact with Cosmos modules using CosmJS with Para wallets in React Native.
Prerequisites
Execute Custom Messages
import { useMemo } from 'react';
import { View, Text, Button } from 'react-native';
import { useParaCosmjsProtoSigner, useParaCosmjsSignAndBroadcast } from '@getpara/react-native-wallet/cosmos';
import { SigningStargateClient, coins } from '@cosmjs/stargate';
import { MsgSend } from 'cosmjs-types/cosmos/bank/v1beta1/tx';
const RPC_URL = 'https://rpc.cosmos.directory/cosmoshub';
function CustomTransaction() {
const { protoSigner, isLoading } = useParaCosmjsProtoSigner();
const address = protoSigner?.address;
const client = useMemo(
() => protoSigner ? SigningStargateClient.connectWithSigner(RPC_URL, protoSigner) : undefined,
[protoSigner]
);
const { signAndBroadcastAsync, isPending } = useParaCosmjsSignAndBroadcast(protoSigner, client);
const executeCustomMessage = async () => {
if (!protoSigner || !address) return;
const msgSend = {
typeUrl: '/cosmos.bank.v1beta1.MsgSend',
value: MsgSend.fromPartial({
fromAddress: address,
toAddress: 'cosmos1...',
amount: coins(1000000, 'uatom'),
}),
};
const fee = {
amount: coins(5000, 'uatom'),
gas: '200000',
};
try {
const result = await signAndBroadcastAsync({
messages: [msgSend],
fee,
memo: 'Custom message via Para',
});
console.log('Transaction hash:', result.transactionHash);
console.log('Code:', result.code);
} catch (error) {
console.error('Transaction failed:', error);
}
};
if (isLoading) return <Text>Loading...</Text>;
return (
<View>
<Text>From: {address}</Text>
<Button
title={isPending ? 'Executing...' : 'Execute Custom Message'}
onPress={executeCustomMessage}
disabled={isPending}
/>
</View>
);
}
Next Steps