The KeeperProxy contract defines a fixed grace period of 3600 seconds (1 hour) for validating price data from external oracles (e.g., Chainlink). While this grace period is meant to account for delays in price updates, it may not be sufficient in certain market conditions, particularly when price data is updated less frequently or when network delays occur. This can result in rejecting valid price updates as stale or outdated.
The contract's grace period (GRACE_PERIOD_TIME = 3600 seconds) is a fixed value of 1 hour.
In markets with low liquidity or where price feeds are less frequent, price updates may be delayed beyond the 1-hour window, even though the price may still be valid.
In such cases, price data may be erroneously considered stale, and the contract will reject the price update, even though it is still relevant and correct for making decisions.
This issue could lead to unnecessary failed transactions or incorrect state changes due to the contract's reliance on the grace period for timely price validation.
False Rejections of Valid Price Data: If the grace period expires before the new price feed is validated, even valid price updates could be discarded. This is problematic in markets with slow price updates, or in case of network congestion.
Example: In case of low liquidity tokens or assets with irregular price feeds, a small delay beyond the 3600-second window could lead to rejected prices even though they reflect the actual market price.
Market Inaccuracies: Invalidating price data that is still within acceptable ranges could lead to incorrect market decisions. For example, the contract may not be able to trigger necessary trades, liquidations, or other market actions in a timely manner, causing slippage or missed profit opportunities for users.
Missed Opportunities: Financial opportunities might be lost as the contract misses the chance to perform operations, particularly in volatile markets where prices change quickly. If the price feed is delayed and falls outside the grace period, the contract may not act, even though the market still justifies the action.
User Frustration: Users may face a scenario where their legitimate transaction requests are consistently rejected due to small delays in price data retrieval, leading to dissatisfaction and loss of trust in the platform.
Manual code review
Extend the grace period for price feed validation to a higher threshold (e.g., 12-24 hours), especially for tokens or assets with infrequent price updates.
Implement a dynamic grace period based on network conditions, price feed frequency, or market volatility, rather than a fixed constant value.
Provide users with more flexible handling of price feed staleness, such as allowing them to adjust the acceptable time window or fallback options when retrieving price data.
There is no real proof, concrete root cause, specific impact, or enough details in those submissions. Examples include: "It could happen" without specifying when, "If this impossible case happens," "Unexpected behavior," etc. Make a Proof of Concept (PoC) using external functions and realistic parameters. Do not test only the internal function where you think you found something.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.