Coming off of Meridian, it seems like the name "state expiration" comes across negatively and leads to some misconceptions regarding what state expiration actually is. In particular, people are concerned with permanently losing data and ledger immutability when they first hear "state expiration." Before the XDR is finalized at the end of the week, I think it's worth revisiting state expiration naming. Ideally, this new name would better indicate that:
- Expired entries are not permanently "lost", but can be restored and used again
- Ledger state is still immutable. When an entry is evicted, it leaves behind a cryptographic "fingerprint" maintaining ledger immutability.
With this is mind, I think we should revisit the following terms:
State Expiration
The names of the states themselves (LIVE, EXPIRED, and EVICTED)
Expired State Store (ESS)
What we define as "the ledger"
Previously, "the ledger" has referred to the state that is currently stored on the validator's DB. This means that whenever an entry expires, it is deleted from the validator DB and therefore "deleted from the ledger." I think we should change this so that "the ledger" encompasses all entries, both those that are live and stored on the validator as well as those that are expired and no longer stored on the validator. When an entry expires, it's position is moved and it cannot be immediately used, but "ledger state" remains unchanged.
With this in mind, one suggestion is to change the terms "LIVE and EXPIRED" to "ACTIVE and INACTIVE". We can say that validators store a local cache of "ACTIVE" entries. In order to stay in this cache and have fast, immediate access to a given entry, you must pay the rent fee to remain "ACTIVE". If you don't pay this fee, the entry becomes "INACTIVE" and is evicted from the cache. It can still be used if it's made active again, but this is a slower and more expensive process because the entry is no longer in the cache.