Reads from chain

Circuit breaker — 15% threshold

The oracle stores a 24-hour price snapshot. On every NAV read, if the current price has fallen more than 15% from that snapshot within the same window, the circuit breaker trips automatically. Reads revert with CircuitBreakerTripped until the guardian resets it.

NAV price over time
−15% drop triggers breaker

Validation pipeline

Every call to getLatestNAV() runs these checks in order. One failure reverts the entire read.

1
Round validityroundId > 0 and startedAt > 0. Rejects unitialized or corrupted rounds from the aggregator.
2
Round completenessansweredInRound >= roundId. Prevents consuming a round that is still being answered by Chainlink nodes.
3
Staleness guardblock.timestamp − updatedAt ≤ 1 hour (MAX_STALENESS). Reverts with StalePriceFeed on stale data.
4
Negative priceprice > 0. Chainlink can return negative or zero on misconfigured feeds — this gate rejects them.
5
Dust priceprice ≥ 100 (MIN_VALID_PRICE). Prevents near-zero dust prices from passing as valid NAV.
6
Circuit breakerIf current price drops > 15% from the 24h snapshot within the NAV_DROP_WINDOW, the breaker trips and halts all reads until the guardian resets it manually.