Scan
Read a contract's entries through Soroban RPC: what remains, what expires first, what it costs to keep alive, and whether the code entry is shared — or whether that cannot be determined.
Stellar testnet · built by Apex
One ledger entry can hold the compiled code for many contracts at once — and when it expires, all of them stop working together. Soroban state runs on a timer measured in ledgers, about five seconds each, and nothing tells you it is running out.
The thesis
Soroban keeps a contract's compiled code in a ledger entry of its own, and every contract deployed from that same code points at that one entry. So a contract's own state can be healthy until December while the code it runs expires in October — and without its code a contract cannot execute at all.
The real expiry is therefore the earliest entry, which is rarely the obvious one, and it is shared by every contract built from the same Wasm. That is the failure this exists to catch: a fleet of contracts reported healthy right up until they stop together.
of the rent
98%
is that one shared code entry — 8,116,648 of 8,264,289 stroops, across all four of guinea-pig A's entries. Scanning only its instance and code, the same entry is 99%: identical rent, different denominator. The scope travels with the number.
The four kinds of entry
The shared code entry above is one of four kinds, and they do not end the same way. Which kind an entry is decides whether running out is a bill or a burial.
instance
The contract's own state pointer.
archived
code
The compiled Wasm. Every contract built from it shares this one entry.
archived
persistent
Durable stored values.
archived
temporary
Disposable stored values. Gone permanently, with no restore.
deleted
Read from the network's own configuration: a temporary entry's minimum is 720 ledgers, about an hour. Our own temporary entry had 688 left when it was first sampled.
What the tool actually prints
A real scan of guinea-pig A. It reports what it read, says that a single-contract scan cannot settle whether the code entry is shared, and says that storage it was not given keys for is unread.
Captured on 2026-09-12 and committed at docs/evidence/2026-09-12-w2-review/scan-a-human.txt. Its ledger numbers are from that day; the dashboard reads the chain now.
How it works
Read a contract's entries through Soroban RPC: what remains, what expires first, what it costs to keep alive, and whether the code entry is shared — or whether that cannot be determined.
A scheduled job re-reads the entries you configure and alerts before they cross the thresholds: seven days for a warning, one day to act.
Evergreen has no authority over your contract. Extending a TTL needs no permission from anyone — it is a property of the chain, not a promise from us. It can pay rent, and nothing else.