Examples for building with ZK compression by Light Protocol.
The counter program implements a compressed account lifecycle (create, increment, decrement, reset, close):
- counter/anchor - Anchor program with Rust and TypeScript tests
- counter/native - Native Solana program with light-sdk and Rust tests.
- counter/pinocchio - Pinocchio program with light-sdk-pinocchio and Rust tests.
- create-and-update - Create a new compressed account and update an existing compressed account with a single validity proof in one instruction.
- account-comparison - Compare compressed vs regular Solana accounts.
light-sdk
- Core SDK for compressed accounts in native and anchor programslight-sdk-pinocchio
Core SDK for compressed accounts in pinocchio programslight-hasher
- Hashing utilities for ZK compressionlight-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
Required versions:
- Rust: 1.86.0 or later
- Solana CLI: 2.2.15
- Anchor CLI: 0.31.1
- Zk compression CLI: 0.27.0
- Node.js: 23.5.0 or later
Install the Light CLI:
$ npm -g i @lightprotocol/zk-compression-cli
Install Solana CLI:
sh -c "$(curl -sSfL https://release.solana.com/v2.2.15/install)"
Install Anchor CLI:
cargo install --git https://github.com/coral-xyz/anchor avm --force
avm install latest
avm use latest
- install the light cli
$ npm -g i @lightprotocol/zk-compression-cli
- instantiate a template Solana program with compressed accounts
$ light init <project-name>