Fallback behavior on oracle failure
Save (formerly Solend)'s assessment for RD-F-051 — scored yellow on the v1.7.0 rubric. The evidence below is the curator's reasoning for this score.
Evidence summary #
Fallback from Pyth to Switchboard is implemented in processor.rs get_price(): if Pyth returns zero or fails validity, Switchboard is attempted. If both fail, refresh_reserve returns an error (ReserveStale) blocking borrow/liquidate operations. No last-known-price mechanism; no pause mechanism. Operations simply halt on oracle failure. This is a partial fallback (two-layer, not infinite), with operational halt as the terminal state.
Sources #
- GitHubSolend processor.rs — fallback oracle logicprocessor.rs get_price() fallback: Pyth first, Switchboard second; ReserveStale error if both failretrieved 2026-05-17
- Save Finance — Getting Started: Risksdocs.save.finance/getting-started/risks — 'risk that oracles report incorrect prices'; debugging-faq: Pyth/Switchboard not pushing updates causes failuresretrieved 2026-05-17
Methodology #
Identify the declared fallback behavior (pause, secondary source, last-known-price, revert) when the primary oracle reverts or reports a stale value.
See the full factor methodology and distribution across all protocols →