UsdTokenSwapKeeper::checkLog relies on Chainlink Keepers, which only handle 1 logs every 2 block on Arbitrum. StabilityBranch::initiateSwap emits an event (LogInitiateSwap) for each swap request. If multiple users request multiple swaps in the same block, some logs will be ignored, leading to unprocessed swaps.
Accroding to chainlink doc-Chainlink Automation nodes look back over a limited range of the latest blocks and process a limited number of logs per block per upkeep, using a minimum dequeue method to ensure that the latest logs are processed first. After this, the nodes may process additional remaining logs on a best effort basis, but this is not guaranteed [doc]
The doc suggest if all logs are needed to be processed, configure a manual trigger as backup. If swap requests are not processed or processed later than the deadline, users have to call refund to get back their token. But user will have to pay the base fee to get a refund which becomes unnecessarily costly for users
Users pay gas fees for swap requests that may never be processed. Users also have pay base fee to get a refund
Remove base fee when refunding if the protocol cannot 100% guarantee users that their swaps will be executed
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.