Transactions
This document explains how to influence the blockchain's state by broadcasting transactions.
Transactions include:
- A list of messages.
 - An optional memo.
 - A fee.
 - A signature from a key.
 
The messages included in a transaction contain the information that will be routed to a proper message handler in the node, which in turn parses the inputs and determines the next state of the blockchain.
Create transactions
Create a wallet
You will first want to create a wallet that you can use to sign transactions.
_8import { MnemonicKey, LCDClient } from '@terra-money/feather.js';_8_8const mk = new MnemonicKey();_8const terra = new LCDClient({_8  URL: 'https://pisco-lcd.terra.dev',_8  chainID: 'pisco-1',_8});_8const wallet = terra.wallet(mk);
Create messages
_9import { MsgSend } from '@terra-money/feather.js';_9_9const send = new MsgSend(_9  wallet.key.accAddress('terra'),_9  '<random-terra-address>',_9  {_9    uluna: 1000,_9  },_9);
Create and Sign Transaction
_5const tx = await wallet.createAndSignTx({_5  msgs: [send],_5  memo: 'Hello',_5  chainID: 'pisco-1',_5});
Broadcast transaction
_1const txResult = await terra.tx.broadcast(tx, 'pisco-1');
The default broadcast mode is block, which waits until the transaction has been included in a block. This will give you the most information about the transaction, including events and errors while processing.
You can also use sync or async broadcast modes.
_2// const syncTxResult = await terra.tx.broadcastSync(tx, 'pisco-1');_2// const asyncTxResult = await terra.tx.broadcastAsync(tx, 'pisco-1');
Check events
If you broadcasted the transaction with block, you can get the events emitted by your transaction.
_12import { isTxError } from '@terra-money/feather.js';_12_12const txResult = terra.tx.broadcast(tx, 'pisco-1');_12_12if (isTxError(txResult)) {_12  throw new Error(_12    `encountered an error while running the transaction: ${txResult.code} ${txResult.codespace}`,_12  );_12}_12_12// check for events from the first message_12txResult.logs[0].eventsByType.store_code;