Light Protocol program excluded from Yellowstone streaming

Light Protocol program excluded from Yellowstone streaming

TL;DR

  • Light Protocol reduces Solana token and account costs by compressing state into Merkle trees stored as regular accounts on-chain, each weighing ~10 MB
  • Solana streams the entire account on every change, meaning one compressed token transfer sends ~10 MB through the pipeline
  • At peak load, Light Protocol program reached multiple Gbps, accounting for over half of all Geyser traffic, making it impractical to include in standard streams
  • To keep delivering the most reliable and performant infrastructure, we've decided to exclude this program from our streaming services and getProgramAccounts calls
  • The recommended replacement is the Triton-hosted Photon service, which lets you query individual compressed accounts, token balances, validity proofs, and transaction signatures directly
  • Alternatively, contact us to discuss dedicated node options for streaming raw Merkle tree hashes and ZK proof state

Delivering premium infrastructure means constantly looking for ways to make it faster and more efficient for every customer. Part of that is identifying bottlenecks in the pipeline and removing them.

When we flagged a single Light Protocol program taking up a disproportionate share of streaming bandwidth, we saw it as an opportunity to both provide a better path for customers who use this data and deliver faster streams for everyone.

We've removed Light Protocol support from our streaming services and are offering a purpose-built replacement. This blog post covers the reason behind and the next steps for the users. 

Streaming challenge with Light Protocol

Light Protocol makes token and account creation on Solana dramatically cheaper by compressing millions of balances into a small number of shared Merkle trees, stored as regular Solana accounts. Each tree holds up to ~67 million compressed accounts and weighs ~10 MB, ~60,000x heavier than a standard token account at 165 bytes.

On Solana, whenever any account is modified, Geyser emits the full payload, even if just one byte changes. This means that when a single compressed token transfer, mint, or burn updates one leaf of a ~10 MB tree, the entire account is retransmitted through the streaming pipeline.

At peak load, this single program accounted for over half of all Geyser traffic (multiple Gbps). To optimise the performance, we've decided to exclude the Light Protocol ZK Compression program (compr6CUsB5m2jS4Y3831ztGSTnDpnKJTKS95d64XVq) from all Yellowstone streaming services, including Dragon's Mouth, Whirligig, Fumarole, and Steamboat indexes, as well as getProgramAccounts queries.

What this means for you

When working with compressed data, you mostly need the decoded result: token balances, account ownership, validity proofs, etc. None of that is available directly from raw Light Protocol streams, which only carry Merkle tree hashes and ZK proof state.

However, that's exactly what Photon indexer provides. It watches compressed account data logged in Solana transactions, reconstructs the state of every compressed account, and exposes it through an RPC API, allowing you to:

  • Query compressed accounts by owner
  • Look up token balances
  • Fetch Merkle proofs and validity proofs
  • Retrieve transaction signatures
  • Check token holders for any compressed mint

Triton provides a hosted Photon service, so you don't need to run your own indexer. If your application works with Light Protocol data, this is the recommended way to access it.

Next steps

To get started with Photon, please check out the docs. If your use case requires the raw Merkle tree account updates, contact us to discuss dedicated node options. 

For full details on program exclusion, check the updated Dragon's Mouth docs.