In the contract QuantAMMWeightedPool.sol the variable oracleStalenessThreshold is used to avoid stale prices from oracles. To determine the price oracles, protocol used that use the same variable. If the heartbeat of the oracles are different, the protection from stale prices will not be given or the function UpdateWeightRunner::_getData() will get inaccurate value.
The protocol uses the different prices from the Chainlink oracle and verifies the staleness check but as the same oracleStalenessThreshold is same different assets.
Suppose that
TokenA price feed has a heartbeat of 86400s.
TokenB price feed has a heartbeat of 27s.
By using same oracleStalenessThreshold cause the incorrect prices will get acquired on _getData()
Stale oracle prices will be used to calculate pool weight updates, leading to incorrect weight adjustments based on outdated market information.
Manual Review
We recommend to use different heart beat for different asset pairs.
This is by design, staleness is a strategy aspect: it requires all data to have been updated within n minutes. No more precision needed.
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.