Skip to main content

RPC URLs

NetworkServiceURL
MainnetNetwork Address (RPC)https://mainnet.helius-rpc.com?api-key=<api_key>
MainnetPhoton RPC APIhttps://mainnet.helius-rpc.com?api-key=<api_key>
Find all JSON RPC Methods for ZK Compression here.

Program IDs

Light System ProgramSySTEM1eSU2p4BGQfQpimFEWWSC1XDFeun3Nqzz3rT7
Compressed Token ProgramcTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m
Account Compression Programcompr6CUsB5m2jS4Y3831ztGSTnDpnKJTKS95d64XVq

State Trees & Queues & CPI Accounts

In your local test validator environment use in Rust TestAccounts::get_local_test_validator_accounts() to get all pre-configured protocol, state tree, and address tree accounts.
Public Key
#1 State Treebmt1LryLZUMmF7ZtqESaw7wifBXLfXHQYoE4GAmrahU
#1 Output Queueoq1na8gojfdUhsfCpyjNt6h4JaDWtHf1yQj4koBWfto
#1 CPI Contextcpi15BoVPKgEPw5o8wc2T816GE7b378nMXnhH3Xbq4y
Public Key
#2 State Treebmt2UxoBxB9xWev4BkLvkGdapsz6sZGkzViPNph7VFi
#2 Output Queueoq2UkeMsJLfXt2QHzim242SUi3nvjJs8Pn7Eac9H9vg
#2 CPI Contextcpi2yGapXUR3As5SjnHBAVvmApNiLsbeZpF3euWnW6B
Public Key
#3 State Treebmt3ccLd4bqSVZVeCJnH1F6C8jNygAhaDfxDwePyyGb
#3 Output Queueoq3AxjekBWgo64gpauB6QtuZNesuv19xrhaC1ZM1THQ
#3 CPI Contextcpi3mbwMpSX8FAGMZVP85AwxqCaQMfEk9Em1v8QK9Rf
Public Key
#4 State Treebmt4d3p1a4YQgk9PeZv5s4DBUmbF5NxqYpk9HGjQsd8
#4 Output Queueoq4ypwvVGzCUMoiKKHWh4S1SgZJ9vCvKpcz6RT6A8dq
#4 CPI Contextcpi4yyPDc4bCgHAnsenunGA8Y77j3XEDyjgfyCKgcoc
Public Key
#5 State Treebmt5yU97jC88YXTuSukYHa8Z5Bi2ZDUtmzfkDTA2mG2
#5 Output Queueoq5oh5ZR3yGomuQgFduNDzjtGvVWfDRGLuDVjv9a96P
#5 CPI Contextcpi5ZTjdgYpZ1Xr7B1cMLLUE81oTtJbNNAyKary2nV6

Address Trees & Queues

Address Tree
Address Treeamt2kaJA14v3urZbZvnc5v2np8jqvc4Z8zDep5wbtzx

Interface PDA

The account to convert format between:
  • compressed token ↔ SPL token
  • light-token ↔ SPL token
Interface PDAGXtd2izAiMJPwMEjfgTRH3d7k9mjn4Jq3JrWFv9gySYy

Lookup Tables

Lookup tables reduce your transaction size. We provide pre-initialized lookup tables that cover the Light’s program IDs and accounts:
Lookup Table #1 (Mainnet)9NYFyEqPkyXUhkerbGHXUXkvb4qpzeEdHuGpgbgpH1NJ
Lookup Table #1 (Devnet)qAJZMgnQJ8G6vA3WRcjD9Jan1wtKkaCFWLWskxJrR5V
We provide a helper function below if you need to extend a custom lookup table.
import { Rpc, confirmTx, createRpc } from "@lightprotocol/stateless.js";
import { createTokenProgramLookupTable } from "@lightprotocol/compressed-token";
import { Keypair, PublicKey} from "@solana/web3.js";
import { RPC_ENDPOINT } from "./constants";
const payer = Keypair.generate();
const authority = payer;
const additionalTokenMints : PublicKey[] = [];
const additionalAccounts : PublicKey[] = [];

// Localnet
const connection: Rpc = createRpc();

const main = async () => {
  /// airdrop lamports to pay gas and rent
  await confirmTx(
    connection,
    await connection.requestAirdrop(payer.publicKey, 1e7)
  );

  /// Create LUT
  const { address } = await createTokenProgramLookupTable(
    connection,
    payer,
    authority,
    additionalTokenMints,
    additionalAccounts
  );

  console.log("Created lookup table:", address.toBase58());
};

main();

System Accounts List

1Verifies validity proofs, compressed account ownership checks, and CPIs the Account Compression Program to update tree accounts.
2CPI Signer
  • PDA to sign CPI calls from your program to the Light System Program.
  • Verified by the Light System Program during CPI.
  • Derived from your program ID.
3Registered Program PDAProvides access control to the Account Compression Program.
4Signs CPI calls from the Light System Program to the Account Compression Program.
5
  • Writes to state and address tree accounts.
  • Clients and the Account Compression Program do not interact directly — handled internally.
6Solana System Program used to transfer lamports.

Next Steps

Start building with Compressed Tokens or PDAs