Labels: Stellar Wave, stellar, feature, tooling, drips, help-wanted
Tier: M (2–4 days)
Type: feature
Context
Soroban storage entries have a time-to-live (TTL) in ledgers. When an entry's TTL expires, it's archived and re-loading it requires paying restoration fees. For wraith-names, this means a .wraith name registration can "expire" if nobody touches it for long enough — and the user might not notice until someone else tries to resolve and gets nothing back.
We have two options: extend TTLs aggressively (costs more, but invisibly to the user), or build automation that lets anyone extend a name's TTL on its owner's behalf (decentralized care-taking).
This issue is about the second.
Scope
- Add a function
extend_name_ttl(name: String, extend_to_ledger: u32) -> bool to wraith-names:
- Anyone may call. No auth.
- Extends the storage TTL of the name entry (and the associated reverse-lookup entry) up to (but not past)
extend_to_ledger.
- Capped at the Soroban maximum extension allowed per call.
- Idempotent: calling twice in the same ledger is a no-op for the second call.
- Build a Stellar-side keeper bot at
contracts/stellar/scripts/keeper/:
- Reads all registered names from the contract storage.
- For each, checks TTL remaining.
- If TTL < 1000 ledgers (≈ 80 minutes), calls
extend_name_ttl to push it out by 1 month.
- Costs are paid by the keeper account — propose a sustainable funding model (a small protocol fee tip, or a foundation grant).
- Document the keeper bot in the Spectre repo so we can run it in production.
Open design questions
- Should extensions emit an event so off-chain observers can see "name X extended by Y"? Probably yes for transparency.
- Should we cap how far in the future a single extension can push? Argue.
- Trade-off: cheap extension makes squatting effectively permanent. Is that acceptable for the namespace? (Yes —
.wraith is meant to be permanent identity. But state the trade explicitly.)
Acceptance criteria
Why this matters
If user-registered names silently archive and become resolvable-only-after-pay-to-restore, we have a UX failure. This is an invisibility problem — fixing it now avoids a class of support tickets later.
Resources
Labels:
Stellar Wave,stellar,feature,tooling,drips,help-wantedTier: M (2–4 days)
Type: feature
Context
Soroban storage entries have a time-to-live (TTL) in ledgers. When an entry's TTL expires, it's archived and re-loading it requires paying restoration fees. For
wraith-names, this means a.wraithname registration can "expire" if nobody touches it for long enough — and the user might not notice until someone else tries to resolve and gets nothing back.We have two options: extend TTLs aggressively (costs more, but invisibly to the user), or build automation that lets anyone extend a name's TTL on its owner's behalf (decentralized care-taking).
This issue is about the second.
Scope
extend_name_ttl(name: String, extend_to_ledger: u32) -> booltowraith-names:extend_to_ledger.contracts/stellar/scripts/keeper/:extend_name_ttlto push it out by 1 month.Open design questions
.wraithis meant to be permanent identity. But state the trade explicitly.)Acceptance criteria
extend_name_ttlimplemented and tested.Why this matters
If user-registered names silently archive and become resolvable-only-after-pay-to-restore, we have a UX failure. This is an invisibility problem — fixing it now avoids a class of support tickets later.
Resources