Skip to content

SolSplit

Solana multi-send dApp that batches SOL transfers using v0 versioned transactions and Address Lookup Tables (ALT), handling large recipient lists with chunked ALT extension, robust validation, fee estimation fallback, and optional ALT close to reclaim rent.

SolanaALTv0 Tx

Overview

SolSplit is a web app for sending SOL to many recipients efficiently and safely. It uses Address Lookup Tables (ALT) plus v0 versioned transactions to keep message size under limits, even with large recipient sets. The app creates a temporary ALT, extends it in chunks, sends transfers in batches, and can later deactivate/close the ALT to reclaim rent.


What it demonstrates

  • Practical Solana scaling pattern: ALT + v0 tx for large account sets
  • Batch transaction design: chunked ALT extension + chunked transfer execution
  • Strong input validation (base58, duplicates, empty/self-address protection)
  • UX for high-friction signing flows: dialogs, toasts, per-batch confirmations
  • Fee estimation strategy with fallback when RPC preflight size limits are hit

Key features

  • Bulk address import (auto-tokenized by non-base58 separators)
  • Equal split or custom percentages (must total 100%)
  • Temporary ALT lifecycle:
    • create → extend → use → deactivate → close (optional)
  • Chunk sizing controls to avoid oversized v0 messages
  • Robust fee estimation with minimal-message fallback
  • ALT close panel after cool-down to reclaim rent

SolSplit is configured devnet-first by default. Always test with small amounts before using any mainnet deployment.


Live demo


Architecture notes

  • ALT exists to compress message bytes: v0 transactions reference a table instead of embedding every address.
  • SolSplit keeps operations reliable by splitting work into two layers:
    • ALT extension chunks (addresses per extend tx)
    • transfer chunks (instructions per send tx)
  • After sending, the ALT can be deactivated, and later closed once the slot-based cool-down expires.

Quickstart

Bash
git clone https://github.com/casaisdev/SolSplit.git

See the repository README for the full local setup and tuning knobs (chunk sizes, network provider, and troubleshooting).


Notes

  • If you see encoding overruns Uint8Array, reduce the transfer chunk size and split across more batches.
  • Ledger users may need blind signing for transactions with many instructions/accounts.
  • Closing the ALT is optional, but it’s a nice finishing step to reclaim rent after the cool-down.

Next steps

If I were to evolve SolSplit further:

  • Add CSV import/export for recipient lists + templates
  • Add a “dry run” preview (batch count, estimated fees, and signer prompts)
  • Add SPL token multi-send alongside SOL
  • Add a mainnet mode with safer defaults and stronger warning rails