Skip to main content

RPC URLs

  • Mainnet
  • Devnet
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.
  • V1
  • V2
DevnetMainnetPublic Key
State Treesmt2rJAFdyJJupwMKAqTNAJwvjhmiZ4JYGZmbVRw1Ho
Nullifier Queuenfq2hgS7NYemXsFaFUCe3EMXSDSfnZnAe27jC6aPP1X
CPI Contextcpi2cdhkH5roePvcudTgUL8ppEBfTay1desGh8G8QxK

Address Trees & Queues

  • V1
  • V2
Address Tree #1
Address Tree #1amt1Ayt45jfbdw5YSo7iz6WZxUmnZsQTYXy82hVwyC2
Address Queue #1aq1S9z4reTSQAdgWHGD2zDaS39sjGrAxbR31vxJ2F4F

Token Escrow PDA

Token Escrow Owner 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

NameDescription
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 PDA- Provides access control to the Account Compression Program.
4- Logs compressed account state to the Solana ledger (used only in v1).
- Indexers parse transaction logs to reconstruct compressed account state.
5Signs CPI calls from the Light System Program to the Account Compression Program.
6- Writes to state and address tree accounts.
- Clients and the Account Compression Program do not interact directly — handled internally.
7Invoking ProgramYour program’s ID, used by the Light System Program to:
- Derive the CPI Signer PDA.
- Verify the CPI Signer matches your program ID.
- Set the owner of created compressed accounts.
8Solana System Program used to transfer lamports.

Next Steps

Explore all JSON RPC endpoints on Solana, best practices, and error codes.