Oracle staleness check present
Kamino Lend's assessment for RD-F-059 — scored green on the v1.7.0 rubric. The evidence below is the curator's reasoning for this score.
Evidence summary #
Staleness checks confirmed: Pyth adapter enforces 10-minute max staleness; ChainlinkNAV rejects reports older than 1 week (per Certora recommendation); MostRecentOf enforces sources_max_age_s for all configured sources.
Detail #
Scope pyth.rs: 10-minute staleness threshold enforced, checks both current and previous price slots. Scope v0.29.0 release notes: ChainlinkNAV adds staleness check rejecting reports older than 1 week (Certora recommendation). Scope most_recent_of.rs: `now.saturating_sub(dated_price.unix_timestamp) > sources_max_age_s` returns error if any source exceeds configured max age. Staleness is multi-layered and enforced before prices reach klend.
Sources #
- GitHubScope Pyth oracle staleness validationScope pyth.rs — 10-minute staleness thresholdretrieved 2026-04-27
- Scope MostRecentOf staleness enforcementScope most_recent_of.rs — sources_max_age_s enforcementretrieved 2026-04-27
- Scope v0.29.0 release notesScope v0.29.0 release — ChainlinkNAV 1-week staleness (Certora recommendation)retrieved 2026-04-27
Methodology #
Determine whether the protocol rejects oracle reads older than a declared maximum age (i.e., checks `updatedAt > block.timestamp - maxStaleness`).
See the full factor methodology and distribution across all protocols →