Convenience function for creating versioned transactions

This is an alias for InstructionUtils.asV0TxWithComputeIxs that automatically adds compute budget instructions and uses address lookup tables for optimal transaction size.

const tx = await asV0Tx({
connection,
ixs: [updateIx, userIx],
signers: [payer],
computeUnitPrice: 10_000,
computeUnitLimitMultiple: 1.3,
});
  • Builds a versioned transaction with automatic compute budget optimization

    This method simplifies transaction creation by:

    • Automatically simulating to determine compute requirements
    • Adding appropriate compute budget instructions
    • Using address lookup tables for smaller transactions
    • Handling transaction size limits gracefully

    The method performs two key optimizations:

    1. Compute Budget: Simulates first to determine actual compute usage, then sets the limit based on actual needs (with optional buffer)
    2. Transaction Size: Uses v0 transactions with lookup tables to minimize transaction size

    Parameters

    • params: {
          computeUnitLimitMultiple?: number;
          computeUnitPrice?: number;
          connection: Connection;
          ixs: TransactionInstruction[];
          lookupTables?: AddressLookupTableAccount[];
          payer?: PublicKey;
          signers?: Signer[];
      }

      Transaction building parameters

      • OptionalcomputeUnitLimitMultiple?: number

        Multiplier for compute limit (e.g., 1.3 = 30% buffer)

      • OptionalcomputeUnitPrice?: number

        Priority fee in microlamports per compute unit

      • connection: Connection

        Solana RPC connection

      • ixs: TransactionInstruction[]

        Instructions to include

      • OptionallookupTables?: AddressLookupTableAccount[]

        Address lookup tables to use

      • Optionalpayer?: PublicKey

        Transaction fee payer (defaults to first signer)

      • Optionalsigners?: Signer[]

        Transaction signers

    Returns Promise<VersionedTransaction>

    Signed versioned transaction ready to send

    If transaction is too large or payer not provided

    const tx = await InstructionUtils.asV0TxWithComputeIxs({
    connection,
    ixs: [updateIx, userIx],
    signers: [payer],
    computeUnitPrice: 10_000, // 0.01 lamports per compute unit
    computeUnitLimitMultiple: 1.3, // 30% safety buffer
    lookupTables: [lut],
    });

    const signature = await connection.sendTransaction(tx);