# EIP-7928 Component Size & Compression Analysis - 1000 Blocks (60M Gas Limit) ## Dataset - **Blocks Analyzed**: 1000 blocks (26,095,544 to 26,096,543) - **Gas Limit**: 60M (avg gas used: 30.3M, avg transactions: 305) - **Encoding**: RLP format - **Compression**: Snappy algorithm Attribution: each component is its RLP-encoded field (headers included) summed over accounts; touched-only accounts count as whole entries; overhead is the exact remainder, so components sum to the total. Compressed sizes are snappy over the concatenated per-account field encodings. The previous analysis booked field-list headers under overhead instead; full-BAL totals are directly comparable. ## Per-Block Component Statistics (KiB) | Component | Avg Raw | Median Raw | Avg Compressed | Median Compressed | Avg Ratio | Median Ratio | |-----------|---------|------------|----------------|-------------------|-----------|--------------| | Storage Writes | 65.1 | 62.5 | 36.1 | 34.7 | 1.79x | 1.77x | | Storage Reads | 39.5 | 36.4 | 25.8 | 23.0 | 1.57x | 1.58x | | Balance Changes | 9.5 | 9.4 | 9.2 | 9.3 | 1.03x | 1.02x | | Nonce Changes | 2.1 | 2.1 | 1.9 | 1.9 | 1.11x | 1.11x | | Code Changes | 2.8 | 0.9 | 1.4 | 0.3 | 4.19x | 3.41x | | Account Addresses (w/ Changes) | 12.6 | 12.6 | 12.5 | 12.6 | 1.00x | 1.00x | | Touched-Only Addresses | 4.0 | 4.0 | 3.3 | 3.2 | 1.22x | 1.22x | | RLP Encoding Overhead | 0.9 | 1.0 | 1.8 | 1.8 | — | — | | **Full BAL** | **136.6** | **132.5** | **92.1** | **89.4** | **1.48x** | **1.47x** | ## Component Size Distribution (KiB) | Component | Min Raw | Max Raw | Std Dev Raw | Min Compressed | Max Compressed | Std Dev Compressed | |-----------|---------|---------|-------------|----------------|----------------|--------------------| | Storage Writes | 6.9 | 207.7 | 26.2 | 4.2 | 90.7 | 13.4 | | Storage Reads | 3.0 | 156.5 | 18.3 | 1.9 | 140.2 | 14.2 | | Balance Changes | 0.4 | 22.0 | 2.9 | 0.3 | 20.3 | 2.7 | | Nonce Changes | 0.1 | 5.1 | 0.7 | 0.1 | 4.1 | 0.6 | | Code Changes | 0.0 | 51.8 | 5.3 | 0.0 | 29.9 | 3.0 | | Account Addresses (w/ Changes) | 1.0 | 26.7 | 3.5 | 1.0 | 26.6 | 3.5 | | Touched-Only Addresses | 0.3 | 15.1 | 1.6 | 0.3 | 12.6 | 1.3 | | RLP Encoding Overhead | 0.1 | 1.9 | 0.3 | -7.2 | 8.4 | 1.3 | | **Full BAL** | **15.9** | **322.2** | **49.4** | **10.9** | **234.6** | **32.2** | ## Compression Ratio Distribution | Component | Min Ratio | Max Ratio | Std Dev | 25th Percentile | 75th Percentile | |-----------|-----------|-----------|---------|-----------------|-----------------| | Storage Writes | 1.55x | 2.89x | 0.12x | 1.73x | 1.82x | | Storage Reads | 1.08x | 2.07x | 0.14x | 1.49x | 1.66x | | Balance Changes | 1.00x | 2.19x | 0.06x | 1.00x | 1.04x | | Nonce Changes | 0.99x | 1.50x | 0.05x | 1.09x | 1.14x | | Code Changes | 1.18x | 18.70x | 2.96x | 2.18x | 5.09x | | Account Addresses (w/ Changes) | 1.00x | 1.00x | 0.00x | 1.00x | 1.00x | | Touched-Only Addresses | 1.12x | 1.41x | 0.02x | 1.21x | 1.23x | | **Full BAL** | **1.22x** | **1.87x** | **0.08x** | **1.44x** | **1.51x** | No ratio is reported for RLP Encoding Overhead: its compressed value is a remainder and can be negative for individual blocks. ## Block Activity Metrics (per block) | Metric | Average | Median | Min | Max | |--------|---------|--------|-----|-----| | Total Accounts | 766 | 763 | 79 | 1519 | | Storage Writes Count | 986 | 946 | 98 | 3132 | | Storage Reads Count | 1201 | 1104 | 90 | 4820 | | Balance Changes Count | 795 | 790 | 30 | 1797 | | Nonce Changes Count | 314 | 309 | 6 | 793 | ## Component Percentage of Full BAL | Component | % of Raw Size | % of Compressed Size | |-----------|---------------|----------------------| | Storage Writes | 47.7% | 39.2% | | Storage Reads | 28.9% | 28.0% | | Balance Changes | 7.0% | 10.0% | | Nonce Changes | 1.6% | 2.1% | | Code Changes | 2.0% | 1.5% | | Account Addresses (w/ Changes) | 9.2% | 13.6% | | Touched-Only Addresses | 3.0% | 3.6% | | RLP Encoding Overhead | 0.7% | 1.9% | ## BAL vs Block Size Comparison Comparison using compressed block average of **78.98 KiB**: | Metric | BAL Size (KiB) | Block Size (KiB) | Ratio (BAL/Block) | Size Difference | |--------|---------------|------------------|-------------------|------------------| | **Full BAL (with reads)** | 92.1 | 79.0 | 1.17x | +13.1 KiB | | **BAL without reads** | 61.1 | 79.0 | 0.77x | -17.9 KiB | - Full BAL **with reads** is 1.17x the size of a compressed block - BAL **without reads** is 0.77x the size of a compressed block - Storage reads add **31.0 KiB** (50.7%) to BAL size - BAL overhead vs blocks: **+16.6%** (with reads), **-22.7%** (without reads) ## Storage Reads Impact Analysis - **WITH reads** (Full BAL): 92.1 KiB compressed - **WITHOUT reads**: 61.1 KiB compressed - **Storage reads overhead**: 31.0 KiB (50.7%) ## Compressed Full BAL Size Percentiles (KiB) | P10 | P25 | P50 | P75 | P90 | P95 | P99 | |-----|-----|-----|-----|-----|-----|-----| | 61.0 | 76.3 | 89.5 | 106.2 | 132.0 | 150.0 | 185.1 | ## Comparison to Previous Analysis (blocks 23,991,474 to 23,992,473) | Metric | Previous | This Analysis | Change | |--------|----------|---------------|--------| | Full BAL avg raw (KiB) | 110.8 | 136.6 | +23.3% | | Full BAL avg compressed (KiB) | 72.5 | 92.1 | +27.0% | | BAL w/o reads avg compressed (KiB) | 49.4 | 61.1 | +23.7% | | Compressed block avg (KiB) | 55.4 | 79.0 | +42.6% | | Total accounts (avg) | 606.7 | 765.6 | +26.2% | | Storage writes count (avg) | 807.3 | 986.1 | +22.1% | | Storage reads count (avg) | 981.5 | 1200.7 | +22.3% | | Balance changes count (avg) | 611.6 | 794.8 | +30.0% | | Nonce changes count (avg) | 228.6 | 314.3 | +37.5% | Gas per block is unchanged (30.5M to 30.3M) while storage writes per Mgas rose from 26.5 to 32.6 (+23%) and raw BAL payload from 110.8 to 136.6 KiB (+23%): the growth comes from gas shifting toward state writes, not from higher gas usage. ## Summary 1. **Component dominance**: Storage writes are 47.7% of raw BAL size 2. **Account addressing**: Accounts with changes (13.6%) vs touched-only (3.6%) of compressed size 3. **Pure RLP overhead**: Encoding structure accounts for 1.9% of compressed size 4. **Compression efficiency**: Overall 1.48x compression ratio 5. **Size variability**: BAL sizes vary from 10.9 to 234.6 KiB compressed 6. **Block size ratio**: Full BALs are 1.17x compressed block size