# EIP-7928 Component Size & Compression Analysis - 1000 Blocks ## Dataset - **Blocks Analyzed**: 1000 blocks (23,991,474 to 23,992,473) - **Encoding**: RLP format - **Compression**: Snappy algorithm ## Per-Block Component Statistics (KiB) | Component | Avg Raw | Median Raw | Avg Compressed | Median Compressed | Avg Ratio | Median Ratio | |-----------|---------|------------|----------------|-------------------|-----------|-------------- | Storage Writes | 52.6 | 49.6 | 29.2 | 28.0 | 1.79x | 1.78x | | Storage Reads | 31.7 | 29.7 | 18.7 | 17.5 | 1.71x | 1.71x | | Balance Changes | 6.8 | 6.6 | 6.7 | 6.5 | 1.02x | 1.00x | | Nonce Changes | 1.1 | 1.0 | 1.1 | 1.0 | 0.99x | 1.00x | | Code Changes | 2.1 | 0.2 | 1.2 | 0.2 | 1.37x | 1.16x | | Account Addresses (w/ Changes) | 8.1 | 8.0 | 7.7 | 7.6 | 1.05x | 1.05x | | Touched-Only Addresses | 3.6 | 3.6 | 3.5 | 3.4 | 1.03x | 1.06x | | RLP Encoding Overhead | 4.6 | 4.5 | 4.4 | 4.3 | 1.05x | 1.05x | | **Full BAL** | **110.8** | **106.0** | **72.4** | **70.5** | **1.52x** | **1.52x** | ## Component Size Distribution (KiB) | Component | Min Raw | Max Raw | Std Dev Raw | Min Compressed | Max Compressed | Std Dev Compressed | |-----------|---------|---------|-------------|----------------|----------------|-------------------| | Storage Writes | 4.5 | 197.0 | 23.7 | 2.8 | 113.8 | 12.8 | | Storage Reads | 1.2 | 105.7 | 15.0 | 0.9 | 88.9 | 9.2 | | Balance Changes | 0.7 | 22.4 | 2.8 | 0.7 | 22.4 | 2.7 | | Nonce Changes | 0.1 | 4.4 | 0.5 | 0.1 | 4.5 | 0.5 | | Code Changes | 0.0 | 72.6 | 5.6 | 0.0 | 25.3 | 2.9 | | Account Addresses (w/ Changes) | 1.9 | 29.5 | 3.2 | 1.8 | 28.1 | 3.0 | | Touched-Only Addresses | 0.8 | 12.6 | 1.4 | 0.8 | 12.2 | 1.3 | | RLP Encoding Overhead | 1.2 | 16.8 | 2.1 | 1.1 | 16.2 | 2.0 | | **Full BAL** | **10.9** | **301.9** | **45.5** | **8.6** | **191.4** | **28.8** | ## Compression Ratio Distribution | Component | Min Ratio | Max Ratio | Std Dev | 25th Percentile | 75th Percentile | |-----------|-----------|-----------|---------|-----------------|----------------- | Storage Writes | 1.54x | 2.86x | 0.12x | 1.74x | 1.83x | | Storage Reads | 1.07x | 2.33x | 0.16x | 1.61x | 1.81x | | Balance Changes | 1.00x | 1.50x | 0.04x | 1.00x | 1.03x | | Nonce Changes | 0.97x | 1.07x | 0.00x | 0.99x | 1.00x | | Code Changes | 0.93x | 8.67x | 0.65x | 0.99x | 1.56x | | Account Addresses (w/ Changes) | 1.02x | 1.08x | 0.02x | 1.04x | 1.06x | | Touched-Only Addresses | 1.00x | 1.10x | 0.03x | 1.02x | 1.05x | | RLP Encoding Overhead | 1.02x | 1.12x | 0.03x | 1.03x | 1.07x | | **Full BAL** | **1.19x** | **1.98x** | **0.09x** | **1.47x** | **1.56x** | ## Block Activity Metrics (per block) | Metric | Average | Median | Min | Max | |--------|---------|--------|-----|-----| | Total Accounts | 603 | 600 | 98 | 1474 | | Storage Writes Count | 700 | 667 | 65 | 2521 | | Storage Reads Count | 982 | 922 | 36 | 3279 | | Balance Changes Count | 612 | 598 | 62 | 1812 | | Nonce Changes Count | 229 | 224 | 18 | 770 | ## Component Percentage of Full BAL | Component | % of Raw Size | % of Compressed Size | |-----------|---------------|---------------------| | Storage Writes | 47.5% | 40.3% | | Storage Reads | 28.6% | 25.8% | | Balance Changes | 6.2% | 9.2% | | Nonce Changes | 1.0% | 1.5% | | Code Changes | 1.9% | 1.6% | | Account Addresses (w/ Changes) | 7.3% | 10.7% | | Touched-Only Addresses | 3.3% | 4.8% | | RLP Encoding Overhead | 4.1% | 6.1% | ## BAL vs Block Size Comparison Comparison using compressed block average of **71.71 KiB**: | Metric | BAL Size (KiB) | Block Size (KiB) | Ratio (BAL/Block) | Size Difference | |--------|---------------|------------------|-------------------|------------------| | **Full BAL (with reads)** | 72.4 | 71.7 | 1.01x | +0.7 KiB | | **BAL without reads** | 49.4 | 71.7 | 0.69x | -22.3 KiB | - Full BAL **with reads** is 1.01x the size of a compressed block - BAL **without reads** is 0.69x the size of a compressed block - Storage reads add **23.0 KiB** (46.6%) to BAL size - BAL overhead vs blocks: **+1.0%** (with reads), **-31.1%** (without reads) ## Storage Reads Impact Analysis - **WITH reads** (Full BAL): 72.4 KiB compressed - **WITHOUT reads**: 49.4 KiB compressed - **Storage reads overhead**: 23.0 KiB (46.6%) ## Summary 1. **Component dominance**: Storage writes are 47.5% of raw BAL size 2. **Account addressing**: Accounts with changes (10.7%) vs touched-only (4.8%) 3. **Pure RLP overhead**: Encoding structure accounts for 6.1% of compressed size 4. **Compression efficiency**: Overall 1.52x compression ratio 5. **Size variability**: BAL sizes vary from 8.6 to 191.4 KiB compressed 6. **Block size ratio**: Full BALs are 1.01x compressed block size