Using Chainlink in L2 chains such as Arbitrum requires to check if the sequencer is down to avoid prices from looking like they are fresh although they are not according to their recommendation
The protocol makes a number of calls to the AggregatorV3Interface to get latest token prices. However, there are no checks to see if the sequencer is down.
In the liquidationPool contract, the distributeAssets function
Various calls are also made to the priceCalculator contract in the SmartVaultV3 contract, through the tokenToEur and eurToToken functions, and it doesn't check for sequncer downtime too.
In the scenario where the Arbitrum sequencer experiences an outage, the protocol will enable users to maintain their operations based on the previous (stale) rates. This can be sed by malicious users to arbitrage, or gain an unfair advantage in transactions.
Manual Code Review
It is recommended to follow the Chailink example code
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.