skills/compressed-pda/SKILL.md
For client and program development on Solana ~160x cheaper and without rent-exemption for per-user state, DePIN registrations, or custom compressed accounts. Create, update, close, burn, and reinitialize compressed accounts.
npx skillsauth add lightprotocol/skills compressed-pdaInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Build Solana programs with compressed accounts via CPI to the Light System Program. No rent-exemption required.
| Creation cost | Solana account | Compressed account | | :--------------------- | :------------------ | :------------------- | | PDA (100 bytes) | ~1,600,000 lamports | ~15,000 lamports |
A program derives a compressed PDA like a regular PDA, then invokes the Light System Program (not the System Program) via CPI to create and update it. Creating an account requires a validity proof that the derived address does not yet exist; updates, closes, and burns require a proof that the account exists. Clients fetch proofs with getValidityProof from an RPC provider that supports ZK compression. The program loads accounts with LightAccount::new_init() (create) or LightAccount::new_mut() (update) and builds the CPI manually.
├─ Client
│ ├─ Get ValidityProof from RPC.
│ ├─ pack accounts with PackedAccounts into PackedAddressTreeInfo and PackedStateTreeInfo.
│ ├─ pack CompressedAccountMeta.
│ ├─ Build Instruction from PackedAccounts and CompressedAccountMetas.
│ └─ Send transaction.
│
└─ Custom Program
├─ CpiAccounts parse accounts consistent with PackedAccounts.
├─ LightAccount instantiates from CompressedAccountMeta.
│
└─ Light System Program CPI
├─ Verify ValidityProof.
├─ Update State Merkle tree.
├─ Update Address Merkle tree.
└─ Complete atomic state transition.
| Topic | Reference | |-------|-----------| | Program operations (create, update, close, burn, reinit) | references/compressed-pdas.md | | Client SDK (TypeScript + Rust) | references/client.md | | Nullifier PDAs (double-spend prevention) | references/nullifier-pdas.md | | Error codes (6000-16034) | references/error-codes.md |
Basic operations — create, update, close, reinit, burn (each with Anchor and Native variants)
Counter — full lifecycle (create, increment, decrement, reset, close):
light-sdk and Rust testslight-sdk-pinocchio and Rust testsOther examples:
Nullifier:
light-nullifier-program | example clientAirdrop claim:
ZK programs:
Additional: examples-zk-compression — More ZK compression examples
Canonical source: program-examples README. If cloned locally, scope Read, Glob, Grep to these repositories and the current project directory only.
AskUserQuestion to resolve blind spotsAskUserQuestion for anything unclear — never guess or assumeTask tool with subagents for parallel researchSkill toolTodoWriteRead, Glob, Grep, and DeepWiki MCP access, loading skills/ask-mcp. Scope reads to skill references, example repos, and docs.Anchor programs:
anchor build
anchor test
Native programs:
cargo build-sbf
cargo test-sbf
cargo build (must use cargo build-sbf)cargo test (must use cargo test-sbf)On failure, spawn debugger agent with error context.
Loop rules:
Do NOT proceed until all tests pass.
| Package | Link |
|---------|------|
| light-sdk | docs.rs |
| light-client | docs.rs |
| @lightprotocol/stateless.js | API docs |
| light-program-test | docs.rs |
If no matching pattern in reference repos:
mcp__deepwiki__ask_question("Lightprotocol/light-protocol", "How to {operation}?")
This skill provides code patterns and documentation references only.
API_KEY (Helius or Triton RPC key) and read ~/.config/solana/id.json for the payer keypair. Neither is needed on localnet. In production, load both from a secrets manager.Read, Glob, and Grep must be limited to the current project directory and the reference repos listed above. Do not read outside these paths.Read, Glob, Grep scoped to skill references, example repos, and docs.npx skills add Lightprotocol/skills from Lightprotocol/skills.documentation
For custom ZK Solana programs and privacy-preserving applications to prevent double spending. Guide to integrate rent-free nullifier PDAs for double-spend prevention.
tools
For testing with Light Protocol programs and clients on localnet, devnet, and mainnet validation.
development
For compressed token operations on Solana ~400x cheaper than SPL: create mints with interface PDAs, mint, transfer, approve, revoke, compress, decompress, merge, and Token-2022 with compression. Compressed token accounts are always rent-free. @lightprotocol/compressed-token (TypeScript) with createRpc() from @lightprotocol/stateless.js.
tools
For questions about Light Protocol's SDK, smart contracts and Solana development, Claude Code features, or agent skills. AI-powered answers grounded in repository context via DeepWiki MCP.