Chainlink aggregator min/max bound misconfig
Balancer (v2 + v3)'s assessment for RD-F-060 — scored yellow on the v1.7.0 rubric. The evidence below is the curator's reasoning for this score.
Evidence summary #
Chainlink rate providers (ChainlinkRateProvider, ChainlinkRegistryRateProvider) call latestRoundData() but do not implement minAnswer/maxAnswer checks at the Balancer adapter layer. For yield-rate use cases (wstETH/ETH ratio, aToken/underlying ratio), minAnswer/maxAnswer bounds are less operationally critical — the rate is always near 1.0 by design. The Chainlink USD-price feeds listed in data cache (ETH/USD 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419, BTC/USD 0xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c) appear to be for downstream consumers of Balancer TWAP, not used by Balancer internally. Cannot verify per-feed minAnswer/maxAnswer without direct on-chain reads.
Detail #
Template: yellow = bounds wider than historical 2x swing or insufficient data. Scored yellow because the absence of on-chain minAnswer/maxAnswer enforcement at the Balancer adapter layer is a gap, even if the underlying Chainlink feeds may have reasonable bounds configured.
Sources #
- GitHubbalancer/metastable-rate-providersBalancer metastable rate providers — ChainlinkRateProvider uses latestRoundData() without min/max checkretrieved 2026-05-05
- Chainlink ETH/USD Ethereum — EtherscanChainlink ETH/USD feed 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419retrieved 2026-04-27
Methodology #
Determine whether the Chainlink aggregator's `minAnswer` and `maxAnswer` circuit-breaker bounds are misconfigured (too wide or too narrow) for the asset class.
See the full factor methodology and distribution across all protocols →