Skip to main content
Compressed PDAs provide full functionality of accounts at PDAs, without per-account rent cost. Compressed PDAs are derived using a specific program address and seed, like regular PDAs. Custom programs invoke the Light System program[^1] to create and update accounts, instead of the System program.

Compressed PDAs at a Glance

Rent free PDAs

Create accounts at program-derived addresses without upfront rent exempt balance.

Full PDA Functionality

Persistent unique identification and program ownership.

Composable

CPI support between compressed and regular PDAs.

Start Building

Developing with compressed PDAs works similar to regular PDAs and involves minimal setup:

Prerequisites

Required versions:
  • Rust: 1.86.0 or later
  • Solana CLI: 2.2.15
  • Anchor CLI: 0.31.1
  • Zk compression CLI: 0.27.0 or later
  • Node.js: 23.5.0 or later
Install Solana CLI:
Install Anchor CLI:
Install the Light CLI:

Initialize your Program

Instantiate a template Solana program with compressed accounts with all required dependencies.
The light init command creates only Anchor-based projects . For Pinocchio programs, manually configure dependencies using light-sdk-pinocchio.
Rust Crates
  • light-sdk - Core SDK for compressed accounts in native and anchor programs
  • light-sdk-pinocchio Core SDK for compressed accounts in pinocchio programs
  • light-client - RPC client and indexer for interacting with compressed accounts
  • light-program-test - Testing utilities for compressed programs.
TypeScript/JavaScript Packages
  • @lightprotocol/stateless.js - Client library for interacting with compressed accounts
  • @lightprotocol/zk-compression-cli - Command-line tools for ZK compression development

Build and Test

Now cd testprogram and run:

Common Errors

Program Examples

Next Steps

Start building with compressed accounts using our guides or program examples.