You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(stake): two holder sources, and never cache an unknown backer list (#262)
* fix(stake): two holder sources, and never cache an unknown backer list
The orbit rendered riders with real deposits as having no backers. The
holder lookup had a single source (Blockscout) and a bare `catch {}`, so
an indexer hiccup became an empty list that looked exactly like "nobody
has staked" — and `unstable_cache` then stored it as if it were true.
- Second source: Alchemy's transfer index, paged to the end. Raw
eth_getLogs was measured and rejected — every Base RPC we use caps the
range at 10k blocks (Alchemy free: ten), and the vaults already span
~1.08M blocks, i.e. ~109 chunked calls per vault per cache miss.
- Completeness check: sum the shares found against totalSupply. A source
serving one page of transfer history is otherwise indistinguishable
from a vault with fewer backers.
- A vault with zero totalSupply needs no indexer call at all, and can
never be degraded by one being down.
- Degraded graphs never persist: the service throws to stay out of the
data cache, and the route sends no-store to stay out of the CDN.
- Failing loud never means an error page. Order is complete graph, then
the last complete one this instance saw, then a flagged partial with
exact TVL and a line saying the backers did not load.
* docs(stake): scope backersResolved to the vault half
The MOR path still empties silently on a failed scan, so the flag must
not be read as a promise about Morpheus stakers.
0 commit comments