-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Context
With BTQ's 1-minute block time and Dilithium signatures, UTXO set and chain growth dynamics differ significantly from Bitcoin. The feature/utxo-optimisations branch (commits 2b44ec5..393311e) reduced the theoretical maximum from ~75 GB/day to ~310 MB/day UTXO growth at full capacity via WITNESS_SCALE_FACTOR=16 and 8 MB blocks.
This issue documents projected growth under realistic mining scenarios and recommends monitoring practices.
Mining-Only Growth Projections
Assumptions: 1 pool, batch payout every ~100 blocks (14/day), 100 Dilithium inputs per payout, miners HODLing.
| Miners | UTXO growth/yr | Chain growth/yr | UTXO set @ 3 yrs |
|---|---|---|---|
| 10 | ~5 MB | ~2.1 GB | ~15 MB |
| 100 | ~46 MB | ~2.2 GB | ~138 MB |
| 1,000 | ~460 MB | ~2.4 GB | ~1.4 GB |
| 5,000 | ~2.3 GB | ~3.2 GB | ~6.9 GB |
| 10,000 | ~4.6 GB | ~4.3 GB | ~13.8 GB |
If miners spend/sell within ~30 days, the UTXO set stabilizes instead of growing linearly:
- 1,000 miners, 30-day turnover: ~420K UTXOs → ~38 MB steady state
- 10,000 miners, 30-day turnover: ~4.2M UTXOs → ~378 MB steady state
Key Thresholds
- ~1,000 miners: UTXO growth rate matches Bitcoin's entire rate (mining + all user txs). Worth monitoring.
- ~5,000 miners: UTXO set exceeds default
dbcache(450 MB) within months. Nodes with low RAM need config changes. - ~10,000 miners: Single payout tx to ~10,400 miners fills an entire block (7.6 MW). Hard ceiling for single-tx payouts. UTXO set approaches Bitcoin's current total (~7-10 GB) within 2 years.
Coinbase UTXO Baseline
1-minute blocks produce 1,440 coinbase UTXOs/day (vs Bitcoin's 144). This is a guaranteed UTXO growth floor regardless of network usage. Pool fan-out to miners amplifies this — even modest fan-out (1 coinbase → 10 payouts) creates ~14,400 UTXOs/day from mining alone.
Recommended Monitoring
gettxoutsetinfo— tracktxoutscount anddisk_sizeover timegetblockstats <height>— monitorutxo_increaseper block andtotal_weightfor block fullnessgetmempoolinfo— watch for dust UTXO accumulation patternsgetblockchaininfo—size_on_diskfor total chain storage
Warning Signs
- UTXO
utxo_increaseconsistently positive and growing across blocks - Blocks consistently >80% full with low fee pressure (cheap to bloat)
- Large accumulation of dust UTXOs below the spend-worthiness threshold
- Node sync times increasing significantly for new nodes
Future Considerations
If growth becomes a concern, potential levers include:
- Smaller block size cap (e.g., 4 MB)
- Encouraging batched/consolidated pool payouts
- Adjusting dust thresholds for Dilithium's higher spend cost
- Pruning by default for non-archival nodes
- UTXO commitments / assumeUTXO for fast node bootstrapping