FORGE Header

Plugins

Misc Plugin

Utility functions and helper methods for Solana development

Overview

The Misc Plugin provides essential utility functions including transaction monitoring, account management, data parsing, and other helper methods that don't fit into specific categories.

Installation

npm install @solana-agent-kit/plugin-misc

Transaction Utilities

getTransaction()

Fetch detailed transaction information by signature.

import { getTransaction } from '@solana-agent-kit/plugin-misc'; const tx = await getTransaction({ signature: 'TRANSACTION_SIGNATURE' }); console.log(`Status: ${tx.meta.err ? 'Failed' : 'Success'}`); console.log(`Fee: ${tx.meta.fee} lamports`);

confirmTransaction()

Wait for transaction confirmation with timeout.

import { confirmTransaction } from '@solana-agent-kit/plugin-misc'; const confirmed = await confirmTransaction({ signature: 'TRANSACTION_SIGNATURE', commitment: 'confirmed', timeout: 60000 // 60 seconds });

getRecentTransactions()

Get recent transactions for an address.

import { getRecentTransactions } from '@solana-agent-kit/plugin-misc'; const txs = await getRecentTransactions({ address: 'WALLET_ADDRESS', limit: 10 });

Account Management

getAccountInfo()

Fetch detailed account information.

import { getAccountInfo } from '@solana-agent-kit/plugin-misc'; const account = await getAccountInfo({ address: 'ACCOUNT_ADDRESS' }); console.log(`Owner: ${account.owner.toBase58()}`); console.log(`Lamports: ${account.lamports}`);

getMultipleAccounts()

Fetch multiple accounts in a single request.

import { getMultipleAccounts } from '@solana-agent-kit/plugin-misc'; const accounts = await getMultipleAccounts({ addresses: ['ADDRESS_1', 'ADDRESS_2', 'ADDRESS_3'] });

findProgramAddresses()

Derive program-derived addresses (PDAs).

import { findProgramAddress } from '@solana-agent-kit/plugin-misc'; const [pda, bump] = await findProgramAddress({ seeds: [Buffer.from('seed1'), publicKey.toBuffer()], programId: 'PROGRAM_ID' });

Data Parsing

parseTransaction()

Parse and decode transaction data into human-readable format.

import { parseTransaction } from '@solana-agent-kit/plugin-misc'; const parsed = await parseTransaction({ transaction: txData }); console.log(`Type: ${parsed.type}`); console.log(`Instructions: ${parsed.instructions.length}`);

decodeAccountData()

Decode account data based on program type.

import { decodeAccountData } from '@solana-agent-kit/plugin-misc'; const decoded = await decodeAccountData({ data: accountData, programId: 'PROGRAM_ID' });

Network Utilities

getClusterInfo()

Get information about the current cluster.

import { getClusterInfo } from '@solana-agent-kit/plugin-misc'; const info = await getClusterInfo(); console.log(`Epoch: ${info.epoch}`); console.log(`Slot: ${info.absoluteSlot}`); console.log(`Block Height: ${info.blockHeight}`);

airdrop()

Request SOL airdrop on devnet/testnet.

import { airdrop } from '@solana-agent-kit/plugin-misc'; await airdrop({ address: 'WALLET_ADDRESS', amount: 1000000000 // 1 SOL });

Format Converters

lamportsToSOL()

Convert lamports to SOL.

import { lamportsToSOL } from '@solana-agent-kit/plugin-misc'; const sol = lamportsToSOL(1000000000); // Returns 1.0

solToLamports()

Convert SOL to lamports.

import { solToLamports } from '@solana-agent-kit/plugin-misc'; const lamports = solToLamports(1.5); // Returns 1500000000

shortenAddress()

Shorten wallet addresses for display.

import { shortenAddress } from '@solana-agent-kit/plugin-misc'; const short = shortenAddress('7xKXY...'); // Returns '7xKX...Y123'

Error Handling

parseError()

Parse Solana errors into readable messages.

import { parseError } from '@solana-agent-kit/plugin-misc'; try { // Some Solana operation } catch (error) { const message = parseError(error); console.error(`Error: ${message}`); }

Best Practices

  • • Always handle transaction confirmation timeouts
  • • Use commitment levels appropriately (finalized for critical ops)
  • • Cache account data when possible to reduce RPC calls
  • • Implement retry logic for network failures
  • • Validate addresses before making requests
  • • Use batch requests for multiple accounts
  • • Monitor RPC rate limits