| I've put a lot of thought into managing the storage growth, the chain grows proportionally to system activity, but I've implemented several optimizations to keep it manageable: 1. Efficient proof encoding: Each proof is typically 128 bytes (64-byte operation hash + 64-byte signature). For context, a 1GB system performing ~1000 operations/second would generate roughly 10MB of proof data per minute before optimizations. 2. Smart pruning strategies: - Automatic pruning of validated proof chains after state transitions - Configurable retention windows (default: 1 hour) for non-critical proofs - Merkle tree summarization of older proofs (keeping root hashes only) - Proof batching for high-frequency operations 3. Storage management:
- In-memory proof cache (default 10,000 proofs) - Efficient disk serialization format - Automatic archive rotation In practice, a typical desktop workload generates about 100-200MB of proof data per day after optimizations. High-security environments can keep full chains (roughly 1-2GB/day), while standard deployments can use pruned chains (~100MB/day). I'm also working on implementing selective proof generation where you can choose which operations require verification, allowing even finer control over storage growth. The code in proof_storage.rs shows the implementation details if you're interested in the specifics. |