Skip to main content
Compressed PDAs are derived using a specific program address and seed, like regular PDAs. Custom programs invoke the 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:
1

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:
Verify installation:
2

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
3

Build and Test

Now cd testprogram and run:

Common Errors

Program Examples

Next Steps

Build a client for your program.