import{ createPhotonRpc }from'@cascade-fyi/compression-kit';const rpc =createPhotonRpc('https://mainnet.helius-rpc.com/?api-key=YOUR_KEY');// Get all compressed accounts for an ownerconst accounts =await rpc.getCompressedAccountsByOwner(ownerAddress);// Get compressed token accountsconst tokenAccounts =await rpc.getCompressedTokenAccountsByOwner(ownerAddress,{
mint: mintAddress,});// Get a specific compressed account by hashconst account =await rpc.getCompressedAccount(accountHash);
import{ createPhotonRpc }from'@cascade-fyi/compression-kit';const rpc =createPhotonRpc('https://mainnet.helius-rpc.com/?api-key=YOUR_KEY');// Get proof for existing accounts (update/close operations)const proof =await rpc.getValidityProof({
hashes:[{ hash: accountHash, tree: treeAddress, queue: queueAddress }],});// Get proof for new addresses (create operations)const newAddressProof =await rpc.getValidityProof({
newAddresses:[{ address: newAddress, tree: addressTree, queue: addressQueue }],});
Build Instruction Accounts
import{
PackedAccounts,
createSystemAccountConfig,
getLightSystemAccountMetas,}from'@cascade-fyi/compression-kit';// Create packed accounts helperconst packedAccounts =newPackedAccounts();// Add Light system accountsconst systemConfig =createSystemAccountConfig(programId);
packedAccounts.addSystemAccounts(getLightSystemAccountMetas(systemConfig));// Add tree accounts and get indicesconst treeIndex = packedAccounts.insertOrGet(treeAddress);// Convert to account metas for instructionconst{ remainingAccounts }= packedAccounts.toAccountMetas();
BN254 Field Operations
import{
createBN254,
bn254FromBytes,
bn254ToBytes,
bn254Add,
isSmallerThanFieldSize,}from'@cascade-fyi/compression-kit';// Create field element from bigintconst element =createBN254(123456789n);// Convert from/to bytesconst bytes =bn254ToBytes(element);const restored =bn254FromBytes(bytes);// Field arithmeticconst sum =bn254Add(element1, element2);// Validate field sizeif(isSmallerThanFieldSize(someBytes)){// Safe to use as BN254}
Web Crypto Utilities
import{ importEd25519PublicKey }from'@cascade-fyi/compression-kit';import{ verifySignature, signatureBytes }from'@solana/kit';// Import Ed25519 public key for signature verificationconst pubkeyBytes =newUint8Array(32);// your public keyconst cryptoKey =awaitimportEd25519PublicKey(pubkeyBytes);// Use with Web Crypto APIconst isValid =awaitverifySignature(cryptoKey,signatureBytes(sig), message);
Configuration
RPC Endpoints
Network
Endpoint
Mainnet
https://mainnet.helius-rpc.com/?api-key=YOUR_KEY
Devnet
https://devnet.helius-rpc.com/?api-key=YOUR_KEY
Localnet
http://localhost:8784
Default Tree Addresses
The package exports default tree addresses for mainnet and devnet:
import{MERKLE_TREE_PUBKEY,// V1 State tree (mainnet)NULLIFIER_QUEUE_PUBKEY,// V1 Nullifier queue (mainnet)ADDRESS_TREE,// V1 Address treeBATCH_MERKLE_TREE_1,// V2 Batch tree (devnet)
defaultTestStateTreeAccounts,// Local testing}from'@cascade-fyi/compression-kit';
API Reference
RPC Methods
Method
Description
getCompressedAccount(hash)
Get compressed account by hash
getCompressedAccountsByOwner(owner)
Get all compressed accounts for owner
getCompressedTokenAccountsByOwner(owner, config?)
Get token accounts for owner
getCompressedTokenBalancesByOwner(owner)
Get token balances for owner
getValidityProof(params)
Get validity proof for accounts/addresses
getMultipleCompressedAccounts(hashes)
Batch fetch multiple accounts
getCompressionSignaturesForOwner(owner)
Get compression transaction signatures
getLatestCompressionSignatures()
Get recent compression signatures
getIndexerHealth()
Check indexer health status
getIndexerSlot()
Get current indexer slot
Crypto Utilities
Function
Description
importEd25519PublicKey(bytes)
Import Ed25519 public key for Web Crypto verification
Types
Type
Description
CompressedAccount
Compressed account data structure
TreeInfo
Merkle tree metadata
ValidityProof
ZK validity proof
BN254
BN254 field element (branded bigint)
PackedAccounts
Helper for building instruction accounts
MemcmpFilter
Memory comparison filter for RPC queries
Constants
Constant
Description
LIGHT_SYSTEM_PROGRAM
Light system program ID
ACCOUNT_COMPRESSION_PROGRAM
Account compression program ID
COMPRESSED_TOKEN_PROGRAM
Compressed token program ID
FIELD_SIZE
BN254 field size
Requirements
Node.js >= 20.18.0
TypeScript >= 5.0 (for type definitions)
Related Packages
@solana/kit - Solana Kit for modern Solana development