Splitting Notes

Iron Fish notes are what store value for an account on the chain. Sometimes you might want to take one note (e.g. with value 1 IRON) and split it into multiple notes (e.g. 0.3, 0.3, 0.4 IRON). This would a separate transactions can be posted at the same time.

Here's an example that splits a note into three separate notes (this can be expanded to N notes). The only requirement is that the source account has a balance capable of funding all the output notes.

import { Asset } from '@ironfish/rust-nodejs'
import {
  CreateTransactionRequest,
  CurrencyUtils,
  IronfishSdk,
  RawTransactionSerde,
} from '@ironfish/sdk'
async function main(): Promise<void> {
  const sdk = await IronfishSdk.init({ dataDir: '~/.dev0' })
  const client = await sdk.connectRpc()
  // Fetch an account
  const defaultAccountResponse = await client.wallet.getDefaultAccount()
  if (defaultAccountResponse.content.account === null) {
    throw new Error('Expected a default account')
  }
  const accountName = defaultAccountResponse.content.account.name
  const accountResponse = await client.wallet.getAccountPublicKey({
    account: accountName,
  })
  const publicAddress = accountResponse.content.publicKey

  // Create some example outputs
  const nativeAssetId = Asset.nativeId().toString('hex')
  const outputs: CreateTransactionRequest['outputs'] = []

  // 1 IRON = 100000000 ORE
  outputs.push({
    publicAddress,
    amount: CurrencyUtils.encode(33300000n),
    memo: 'first',
    assetId: nativeAssetId,
  })
  outputs.push({
    publicAddress,
    amount: CurrencyUtils.encode(33300000n),
    memo: 'second',
    assetId: Asset.nativeId().toString('hex'),
  })
  outputs.push({
    publicAddress,
    amount: CurrencyUtils.encode(40000000n),
    memo: 'third',
    assetId: Asset.nativeId().toString('hex'),
  })

  const options: CreateTransactionRequest = {
    outputs: outputs,
    account: accountName,
    feeRate: '200',
  }
  const response = await client.wallet.createTransaction(options)

  console.log(response.content.transaction)
}

Join our newsletter and stay up to date with privacy and crypto.

Discover our impactful presence — read our blog.

Use

  • Node App
  • Node CLI
  • Mine
  • Block Explorer
  • Ecosystem

Learn

  • Get Started
  • FAQ
  • Whitepaper
  • Tokenomics

Community

  • Foundation
  • Governance
  • Grants
  • Our Community

Developers

  • Documentation
  • Github
Privacy Policy

|

Media Kit

|

Copyright 2024 Iron Fish.