Skip to content

Latest commit

ย 

History

History
546 lines (409 loc) ยท 18.4 KB

File metadata and controls

546 lines (409 loc) ยท 18.4 KB

๐Ÿฆ‰ Why OWLSOL?

  • ๐Ÿ’ฐ Save Money: Reduce Solana account rent by 60-80%
  • ๐Ÿง  Smart Selection: Automatically chooses the best compression algorithm
  • โšก Blazing Fast: Written in Rust for maximum performance
  • ๐Ÿ”’ Data Integrity: Built-in checksums and validation
  • ๐ŸŽฏ Solana-Native: Purpose-built for blockchain data pattern
  • ๐Ÿ”„ Multi-Algorithm: Custom + industry-standard algorithms (LZ4/Zstd)
  • ๐Ÿ“ฆ Minimal Dependencies: Core library stays lean and efficientL-CLI

Intelligent Compression for Solana Account Data

Rust Solana License Build Status

Reduce Solana storage costs by up to 80% with intelligent compression algorithms

Features โ€ข Quick Start โ€ข Architecture โ€ข Benchmarks โ€ข Documentation


๐ŸŒŸ Overview

OWLSOL-CLI is a high-performance, production-ready compression toolkit specifically designed for Solana blockchain applications. It intelligently analyzes your data and automatically selects the optimal compression algorithm, reducing on-chain storage costs while maintaining data integrity.

๐Ÿ’ก Why OWLSOL?

  • ๐Ÿ’ฐ Save Money: Reduce Solana account rent by 60-80%
  • ๐Ÿง  Smart Selection: Automatically chooses the best compression algorithm
  • โšก Blazing Fast: Written in Rust for maximum performance
  • ๐Ÿ”’ Data Integrity: Built-in checksums and validation
  • ๐ŸŽฏ Solana-Native: Purpose-built for blockchain data patterns
  • ๏ฟฝ Dual-Layer Approach: Combines custom algorithms + Solana-compatible compression (LZ4/Zstd)
  • ๏ฟฝ๐Ÿ“ฆ Zero Dependencies: Core library has minimal external dependencies

โœจ Features

๐ŸŽจ Multiple Compression Algorithms

Custom Blockchain-Optimized Layer

Algorithm Best For Typical Ratio Speed
Huffman Text, JSON, varied symbols 40-60% โšกโšกโšก Fast
Dictionary Repeated patterns, structured data 50-70% โšกโšก Medium
RLE Long runs, simple repetition 70-90% โšกโšกโšกโšก Fastest

Solana-Compatible Layer

Algorithm Best For Typical Ratio Speed
LZ4 General purpose, balanced 45-65% โšกโšกโšกโšก Ultra-fast
Zstd Maximum compression 55-75% โšกโšก Medium
Hybrid Mixed data types Best of all โšกโšก Medium

๐Ÿ’ก Smart Selection: OWLSOL automatically picks the optimal algorithm based on data analysis

๐Ÿ”ฅ Core Capabilities

  • โœ… Intelligent Analysis: Shannon entropy, pattern detection, run-length analysis
  • โœ… Auto-Selection: Heuristic-based algorithm selection
  • โœ… Data Validation: Checksum verification, size validation
  • โœ… Solana Integration: Cost estimation, devnet deployment simulation
  • โœ… CLI Interface: Beautiful progress bars, colored output
  • โœ… Batch Processing: Compress multiple files efficiently
  • โœ… Benchmarking: Performance metrics and reports

๐Ÿš€ Quick Start

OWLSOL CLI

Install

  • Quick (Linux/macOS):
curl -fsSL https://raw.githubusercontent.com/owl-sol/OWLSOL_CLI/main/scripts/install.sh | bash
  • Manual:
    • Download a tarball from the Nightly release matching your platform:
      • Linux: x86_64-unknown-linux-musl, aarch64-unknown-linux-musl
      • macOS: x86_64-apple-darwin, aarch64-apple-darwin
    • Extract and place owlsol in your PATH.

Usage

owlsol --help
owlsol compress file.txt
owlsol decompress file.txt.owlsol
owlsol --version


#### For Developers

**From source:**
```bash
# Clone the repository
git clone https://github.com/owl-sol/OWLSOL_CLI.git
cd OWLSOL_CLI

# Build the project
cargo build --release

# Run the CLI
./target/release/owlsol --help

# Or install to cargo bin
cargo install --path cli

Basic Usage

# Compress a file (auto-select algorithm)
owlsol compress -i data.json

# Compress with specific algorithm
owlsol compress -i data.json -a huffman

# Compress and show Solana cost savings
owlsol compress -i nft-metadata.json --deploy

# Decompress a file
owlsol decompress -i data.json.owlsol -o restored.json

# Analyze file without compressing
owlsol stats -i data.json --verbose

# Run benchmarks
owlsol benchmark -i data.json -n 100

Example Output

๐Ÿฆ‰ OWLSOL Compression

โœ“ Read 2,456 bytes
โœ“ Compressed in 12.34ms

โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘                  Compression Results                        โ•‘
โ• โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ฃ
โ•‘  Algorithm:          Huffman                                โ•‘
โ•‘  Original Size:      2,456 bytes                            โ•‘
โ•‘  Compressed Size:    987 bytes                              โ•‘
โ•‘  Compression Ratio:  59.81%                                 โ•‘
โ•‘  Space Saved:        1,469 bytes                            โ•‘
โ•‘  Checksum:           a3f2c891                                โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

โœ“ Saved to data.json.owlsol
  Metadata: data.json.owlsol.meta.json

๐Ÿ“ก Solana Cost Analysis
  Compressed:     0.000007 SOL
  Uncompressed:   0.000017 SOL
  ๐Ÿ’ฐ Savings:     0.000010 SOL (59.81%)

๐Ÿ—๏ธ Architecture

System Design

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                      CLI Layer                               โ”‚
โ”‚  โ€ข Argument parsing (Clap)                                   โ”‚
โ”‚  โ€ข User interface & formatting                               โ”‚
โ”‚  โ€ข Progress indicators                                       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                      โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                   Core Library                               โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚  Compressor (Orchestrator)                            โ”‚  โ”‚
โ”‚  โ”‚  โ€ข Data validation                                    โ”‚  โ”‚
โ”‚  โ”‚  โ€ข Analysis โ†’ Selection โ†’ Compression                โ”‚  โ”‚
โ”‚  โ”‚  โ€ข Metadata generation                                โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                                                              โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚  Custom Algorithms Layer                              โ”‚  โ”‚
โ”‚  โ”‚  โ€ข Huffman  โ€ข Dictionary  โ€ข RLE                       โ”‚  โ”‚
โ”‚  โ”‚  (OWLSOL-optimized for blockchain data)               โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                                                              โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚  Industry-Standard Compression Layer                  โ”‚  โ”‚
โ”‚  โ”‚  โ€ข LZ4 (Facebook's fast compression)                  โ”‚  โ”‚
โ”‚  โ”‚  โ€ข Zstd (Facebook's high-ratio compression)           โ”‚  โ”‚
โ”‚  โ”‚  โšก Same algorithms used by Solana internally         โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                                                              โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚  Analyzer & Selector                                  โ”‚  โ”‚
โ”‚  โ”‚  โ€ข Entropy calculation                                โ”‚  โ”‚
โ”‚  โ”‚  โ€ข Pattern detection                                  โ”‚  โ”‚
โ”‚  โ”‚  โ€ข Intelligent algorithm selection                    โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                      โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                Solana Integration                            โ”‚
โ”‚  โ€ข RPC client wrapper                                        โ”‚
โ”‚  โ€ข Cost calculation                                          โ”‚
โ”‚  โ€ข Devnet deployment                                         โ”‚
โ”‚  โ€ข Compatible with Solana's native compression              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Project Structure

owlsol-cli/
โ”œโ”€โ”€ cli/                    # ๐Ÿ’ป CLI application
โ”‚   โ”œโ”€โ”€ commands/           # Command implementations
โ”‚   โ”‚   โ”œโ”€โ”€ compress.rs
โ”‚   โ”‚   โ”œโ”€โ”€ decompress.rs
โ”‚   โ”‚   โ”œโ”€โ”€ stats.rs
โ”‚   โ”‚   โ””โ”€โ”€ benchmark.rs
โ”‚   โ””โ”€โ”€ ui/                 # User interface
โ”‚       โ””โ”€โ”€ formatter.rs
โ”‚
โ”œโ”€โ”€ core/                   # ๐Ÿง  Compression engine
โ”‚   โ”œโ”€โ”€ algorithms/         # Compression algorithms
โ”‚   โ”‚   โ”œโ”€โ”€ huffman.rs
โ”‚   โ”‚   โ”œโ”€โ”€ dictionary.rs
โ”‚   โ”‚   โ”œโ”€โ”€ rle.rs
โ”‚   โ”‚   โ”œโ”€โ”€ lz4.rs
โ”‚   โ”‚   โ””โ”€โ”€ zstd.rs
โ”‚   โ”œโ”€โ”€ compressor.rs       # Main orchestrator
โ”‚   โ”œโ”€โ”€ decompressor.rs     # Decompression logic
โ”‚   โ”œโ”€โ”€ analyzer.rs         # Data analysis
โ”‚   โ”œโ”€โ”€ selector.rs         # Algorithm selection
โ”‚   โ”œโ”€โ”€ metadata.rs         # Metadata structures
โ”‚   โ””โ”€โ”€ utils/              # Utilities
โ”‚       โ””โ”€โ”€ bitstream.rs
โ”‚
โ”œโ”€โ”€ solana/                 # ๐Ÿ”— Solana integration
โ”‚   โ”œโ”€โ”€ client.rs           # RPC client wrapper
โ”‚   โ””โ”€โ”€ account.rs          # Account structures
โ”‚
โ””โ”€โ”€ program/                # ๐Ÿ“œ On-chain program (Future)
    โ””โ”€โ”€ ...                 # Anchor program

๐ŸŽฏ Algorithm Selection Logic

OWLSOL uses intelligent heuristics to automatically select the best compression algorithm from both layers:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚         Dual-Layer Algorithm Decision Tree            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Is entropy > 7.5?
    โ”œโ”€ YES โ†’ NONE (random/encrypted data)
    โ”‚
    โ””โ”€ NO โ†’ Continue analysis
           โ”‚
           โ”œโ”€ Has many repeated sequences? (>5% of data)
           โ”‚  โ””โ”€ YES โ†’ DICTIONARY (Custom Layer)
           โ”‚
           โ”œโ”€ Has long runs? (max_run > 10 OR avg_run > 3)
           โ”‚  โ””โ”€ YES โ†’ RLE (Custom Layer)
           โ”‚
           โ”œโ”€ Text-like? (unique_bytes < 128)
           โ”‚  โ””โ”€ YES โ†’ HUFFMAN (Custom Layer)
           โ”‚
           โ”œโ”€ Need maximum speed?
           โ”‚  โ””โ”€ YES โ†’ LZ4 (Solana-Compatible Layer) โšก
           โ”‚
           โ”œโ”€ Need maximum compression?
           โ”‚  โ””โ”€ YES โ†’ ZSTD (Solana-Compatible Layer) ๐Ÿ—œ๏ธ
           โ”‚
           โ”œโ”€ Mixed patterns?
           โ”‚  โ””โ”€ YES โ†’ HYBRID (try all, pick best)
           โ”‚
           โ””โ”€ Default โ†’ LZ4 (Solana-Compatible Layer)

Legend:
  Custom Layer          - Optimized for blockchain data patterns
  Solana-Compatible     - Same as Solana internal compression

๐Ÿ“Š Benchmarks

Performance metrics on real-world Solana data:

NFT Metadata (500 bytes โ†’ 198 bytes)

Algorithm:      Huffman
Compression:    60.4%
Speed:          8.2ms
Solana Savings: 0.000002 SOL

Game Profile (2.4 KB โ†’ 640 bytes)

Algorithm:      Dictionary
Compression:    73.3%
Speed:          15.7ms
Solana Savings: 0.000013 SOL

AMM Pool State (8 KB โ†’ 1.2 KB)

Algorithm:      Zstd
Compression:    85.0%
Speed:          23.4ms
Solana Savings: 0.000048 SOL

Throughput

Algorithm Compression Decompression
Huffman 45 MB/s 78 MB/s
Dictionary 62 MB/s 85 MB/s
RLE 120 MB/s 150 MB/s
LZ4 95 MB/s 180 MB/s
Zstd 38 MB/s 92 MB/s

Tested on AMD Ryzen 7 5800X, 16GB RAM


๐Ÿ”ง Advanced Usage

Batch Processing

# Compress all JSON files in a directory
for file in solana-accounts/*.json; do
    owlsol compress -i "$file" -a auto
done

Custom Scripts

# Setup Solana devnet
./scripts/setup-devnet.sh

# Run comprehensive benchmarks
./scripts/benchmark-all.sh

# Generate test data
./scripts/generate-test-data.sh

# Run all tests
./scripts/run-tests.sh

Integration with Rust Code

use owlsol_core::{Compressor, CompressionAlgorithm};

fn main() -> anyhow::Result<()> {
    // Auto-select algorithm
    let compressor = Compressor::new();
    let result = compressor.compress(&data)?;
    
    println!("Compressed: {} bytes โ†’ {} bytes", 
        result.metadata.original_size,
        result.metadata.compressed_size
    );
    
    // Force specific algorithm
    let result = compressor.compress_with_algorithm(
        &data, 
        Some(CompressionAlgorithm::Huffman)
    )?;
    
    Ok(())
}

๐Ÿงช Testing

OWLSOL has comprehensive test coverage:

# Run all tests
cargo test

# Run with output
cargo test -- --nocapture

# Run specific test suite
cargo test --package owlsol-core

# Run benchmarks
cargo bench

Test Coverage

  • โœ… Unit tests for each algorithm
  • โœ… Integration tests for roundtrip compression
  • โœ… Property-based tests with random data
  • โœ… Edge case handling (empty data, corrupted data, etc.)
  • โœ… Performance regression tests

๐Ÿ“š Documentation

API Documentation

# Generate and open documentation
cargo doc --open

Additional Resources


๐Ÿ›ฃ๏ธ Roadmap

โœ… Completed (v0.1.0)

  • Core compression engine
  • Huffman, Dictionary, RLE algorithms
  • LZ4, Zstd integration
  • CLI interface
  • Solana cost estimation
  • Comprehensive test suite

๐Ÿ”„ In Progress (v0.2.0)

  • On-chain Solana program (Anchor)
  • Actual on-chain deployment
  • Web dashboard for visualization
  • Performance optimizations
  • Additional algorithms (Brotli, LZ77)

๐Ÿ”ฎ Future (v1.0.0)

  • Real-time compression for RPC responses
  • Compression-aware Solana SDK
  • Multi-threaded batch processing
  • WASM support for browser use
  • Native macOS/Windows/Linux binaries

๐Ÿค Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Development Setup

# Clone and build
git clone https://github.com/owl-sol/OWLSOL_CLI.git
cd OWLSOL_CLI
cargo build

# Run tests
cargo test

# Check code quality
cargo clippy
cargo fmt --check

Ways to Contribute

  • ๐Ÿ› Report bugs
  • ๐Ÿ’ก Suggest features
  • ๐Ÿ“ Improve documentation
  • ๐Ÿ”ง Submit pull requests
  • โญ Star the repository

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


๐Ÿ™ Acknowledgments

  • Solana Foundation - For the amazing blockchain platform
  • Rust Community - For the excellent ecosystem
  • Data Compression Research - Standing on the shoulders of giants

๐Ÿ“ž Contact & Support


๐ŸŒŸ Star History

Star History Chart


Built with โค๏ธ by the OWLSOL Team

Making Solana storage affordable, one byte at a time ๐Ÿฆ‰

โฌ† Back to Top