Oracle staleness check present
Save (formerly Solend)'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 check implemented via slot comparison. Pyth: STALE_AFTER_SLOTS_ELAPSED = 20 slots (~8 seconds at 400ms block time). Switchboard: STALE_AFTER_SLOTS_ELAPSED = 100 slots (~40 seconds). Applied in get_pyth_price() and get_switchboard_price() respectively. All reserve refresh, borrow, and liquidation operations require non-stale oracle reads. ReserveStale error returned if threshold exceeded.
Sources #
- GitHubSolend processor.rs — staleness check constants and logicprocessor.rs: 'const STALE_AFTER_SLOTS_ELAPSED: u64 = 20' (Pyth); 'const STALE_AFTER_SLOTS_ELAPSED: u64 = 100' (Switchboard); if slots_elapsed >= STALE_AFTER_SLOTS_ELAPSED { return Err(…) }retrieved 2026-05-17
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 →