Compressed PDAs are derived using a specific program address and seed, like regular PDAs.
Custom programs invoke the
to create and update compressed accounts, instead of the System program.
Compressed PDAs are compressed accounts with an address.
Compressed PDAs are suited for:
- Per-user state (profiles, preferences, credentials)
- DePIN node accounts and stake accounts
- Nullifiers to prevent an on-chain instruction from being executed twice (little implementation overhead and useful e.g. for payments or ZK programs)
- App state that is written to and read from infrequently
- Create
- Update
- Close
- Reinitialize
- Burn


Start Building with the Program Template
1
Prerequisites
Required versions:
- Rust: 1.90.0 or later
- Solana CLI: 2.3.11 or later
- Anchor CLI: 0.31.1
- Zk compression CLI: 0.27.0 or later
- Node.js: 22 or later
- npm
- yarn
- pnpm
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.Dependencies
Dependencies
Rust Crates
light-sdk- Core SDK for compressed accounts in native and anchor programslight-sdk-pinocchioCore SDK for compressed accounts in pinocchio programslight-client- RPC client and indexer for interacting with compressed accountslight-program-test- Testing utilities for compressed programs.
@lightprotocol/stateless.js- Client library for interacting with compressed accounts@lightprotocol/zk-compression-cli- Command-line tools for ZK compression development
3
Common Errors
assert.h file not found - during compilation.
assert.h file not found - during compilation.
Guides
| Create | Initialize compressed PDAs in your program |
| Update | Modify state in compressed accounts |
| Close | Reclaim lamports from compressed accounts |
| Reinitialize | Reset and reuse compressed accounts |
| Burn | Permanently delete compressed accounts |
| Nullifier PDAs | Prevent replay attacks with one-time use accounts |
Program Examples
SDK Reference
Client
@lightprotocol/stateless.js
TypeScript RPC client for compressed accounts, validity proofs, and address derivation.
light-client
Rust RPC client and indexer for compressed accounts.
Program
light-sdk
Core SDK for compressed accounts in Anchor programs.
light-sdk-macros
Procedural macros for LightAccount derivation.
light-program-test
Local testing framework for programs.







