Creating Transactions
Creating a Transaction
Once your account has some assets, you can create transactions to spend notes and transfer assets.
Creating Raw Transactions
Raw Transactions contain all the parameters needed to create a transaction on the Iron Fish chain. These include notes to spend, output notes with recipients, assets to mint, assets to burn, and a transaction fee. The Iron Fish RPC server can be used to create raw transactions (see docs here):
async function main(): Promise<void> {
const sdk = await IronfishSdk.init({ dataDir: '~/.dev0' });
const client = await sdk.connectRpc();
const from = '<sending account>';
const to = '<recipient public address>';
const assetId = '<optional asset identifier'>;
const amount = '<amount>';
const memo = '<memo>';
const fee = <fee>;
const expiration = <expiration sequence>;
const confirmations = <confirmations>;
const options = {
account: from,
outputs: [
{
publicAddress: to,
amount: CurrencyUtils.encode(amount),
memo,
assetId,
},
],
fee: CurrencyUtils.encode(flags.fee),
expiration,
confirmations,
};
const response = await client.wallet.createTransaction(options);
console.log(response);
}
Posting Transactions
After raw transactions are created, they must be posted in order to be added to the mempool and broadcasted to the network (see docs here):
async function main(): Promise<void> {
const sdk = await IronfishSdk.init({ dataDir: '~/.dev0' });
const client = await sdk.connectRpc();
const from = '<sending account>';
// RawTransactionSerde.serialize(rawTransaction).toString('hex')
const transaction = '<serialized raw transaction>';
// Optionally broadcast to network
const broadcast = true;
const options = {
account: from,
transaction,
broadcast,
};
const response = await client.wallet.postTransaction(options);
console.log(response);
}