> With Bitcoin you can only validate a transaction by having all of the unspent transactions in memory.
I'm somewhat sceptical of that claim, for the reason pointed out in the blog post, and I think you can get away with much simpler solutions for quite some time.
- You can use many heuristics to decide which UTXO data to keep in memory. LRU + deprioritizing addresses where the balance is too low to pay the current transaction fees seems like a good start. Research shows that there is a high percentage of stale data[0].
- With a block time as high as 10min, you can definitely spend 1ms on read latency for retrieving UTXO data from disk.
- Even if you don't manage to retrieve UTXO data from disk quickly, that just means that the transaction missed its chance to be included in the current block. It could still be ready in time for the next one.
Overall, UTXO set growth is, of course, a problem since it increases centralization, but I don't think the problem of _in-memory_ UTXO sets is as big as it is often made out to be.
[0]: https://eprint.iacr.org/2017/1095.pdf