Extending Storage Expiry (2026) #271
topocount
announced in
FIP Stage 3: Review
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Title: Extending Storage Expiry (2026)
Type: Implementation FIP
Authors: @topocount
Abstract
Extend the validity of every storage unit rented before this proposal's activation date by one
additional year. Units rented on or after the activation date retain the standard one-year validity
introduced by the Storage Redenomination. There are no changes to unit sizes, message limits,
rate limits, or pricing — this proposal only moves expiry dates further out.
Problem
Under the Storage Redenomination (#229,
effective 2025-07-16), newly rented storage units are valid for one year. The first cohort of these
units therefore begins to expire around 2026-07-16.
When a unit expires, the renting account's storage becomes inactive: new messages from that account
are no longer admitted, and the account's existing messages become eligible for pruning. Forcing a
large cohort of users to re-rent storage on a hard deadline — or lose data and the ability to post —
drives churn and degrades the network experience. This is the same problem FIP-17 addressed in 2024,
and the same one-year deferral the Redenomination applied to the units that predated it.
Rather than require action from every affected user, we extend the expiry of the already-rented
cohort by one more year, giving the community and clients a longer runway while preserving the
one-year steady state for all future rentals.
Specification
Let
Tbe the activation timestamp of this proposal (see Release).Storage validity is computed from each unit's rental (block) timestamp. A unit's validity period
is extended by one additional year (
31,536,000seconds) if and only if it was rented beforeT. Concretely, validity by rental cohort becomes:T)94,608,000s)126,144,000s)63,072,000s)94,608,000s)T31,536,000s)63,072,000s)T31,536,000s)31,536,000s) — unchangedA unit's expiry is
rental_timestamp + validity. Because expiry is derived from the rental timestamprather than stored, the extension applies retroactively and automatically to all existing units of
each cohort the moment the change activates; no re-rental, migration, or event reprocessing is
required.
The boundary between the "2025" cohort (extended) and "New" units (not extended) is
Titself, sounits rented at or after activation are unaffected and continue to expire one year after rental.
No other parameters change. Unit sizes, per-store message limits, daily rate limits, and storage
pricing are identical before and after
T.Determinism / activation. Storage expiry feeds the active/inactive check that gates message
admission during block production, so the change is consensus-affecting and must take effect at the
same instant for every node. It is gated behind a new Snapchain engine version (V18): nodes apply the
extended validity to blocks at or after
Tand the prior validity to earlier blocks, keyed off theblock timestamp (not wall-clock time). The Snapchain protocol version is incremented so that nodes
still running the prior rules become gossip-incompatible at activation.
Impact to users
No action required. Storage that would have expired keeps its current limits and simply stays valid
for one additional year. Expiry dates shown in clients extend automatically once the change
activates. Users who rent new storage on or after
Treceive the standard one-year validity, astoday.
Impact to developers
APIs that report storage limits and usage are unchanged in shape; any expiry/validity they surface
will reflect the extended dates automatically after activation, with no client changes needed.
Clients or indexers that compute storage expiry locally from on-chain rent events (rather than
reading it from a node) must apply the updated per-cohort validity above and gate the change at
Tto stay consistent with the network. Note the on-chain rent event's own
expiryfield is notauthoritative for protocol validity and should not be used for this purpose.
Impact to hub / node runners
Operators must upgrade to the Snapchain release containing engine version V18 before the
activation timestamp for their network (testnet first, then mainnet — see Release). Nodes that have
not upgraded by
Twill compute different expiry than the network and, due to the protocol-versionbump, will be gossip-incompatible until upgraded. No database migration or re-sync is required; the
extension is purely computational.
Rationale
existing cohort by one year while keeping newer units at one year via a timestamp cutoff. Reusing
that mechanism keeps the model consistent and easy to reason about.
issue, so we deliberately avoid introducing a new unit type or altering limits.
the multipliers reaches every already-rented unit automatically, with no user action and no data
migration.
Trentals at one year avoids permanently changingstorage economics; this is a one-time deferral for the current cohort, repeatable in future years
if desired.
Release
T(UTC)17812836001782147600The Snapchain release containing engine version V18 must be deployed to each network before its
activation timestamp, and comfortably before the first 2025-cohort units begin expiring (~2026-07-16
on mainnet).
Beta Was this translation helpful? Give feedback.
All reactions