★ Immutable oracle address
Maple Finance's assessment for RD-F-180 — scored green on the v1.7.0 rubric. The evidence below is the curator's reasoning for this score.
Evidence summary #
Oracle addresses in MapleGlobals stored in mutable mapping(address => PriceOracle). setPriceOracle(asset_, oracle_, maxDelay_) callable by onlyGovernor — fully admin-replaceable without contract redeployment. EXCEPTION: syrupRateProvider (peripheral, DeFi integrations only) has immutable pool address — not used in core lending liquidation path. [★ CRITICAL — NOT RED]
Detail #
MapleGlobals.sol: priceOracleOf is a mapping (not immutable). setPriceOracle() function: onlyGovernor, updates priceOracleOf[asset_].oracle and maxDelay. setManualOverridePrice() also available for emergency price override. syrupRateProvider (0xd2C59781F1Db84080A0592CE83Fe265642A4a8Eb) has immutable pool address (0x80ac24aA929eaF5013f6436cdA2a7ba190f5Cc0b) but serves Balancer-style DeFi integrations, not core lending liquidation pricing. The usdcUsdOracle stub (0x5DC5E14be1280E747cD036c089C96744EBF064E7) is a Globals-managed address that can be replaced by governor.
Sources #
- GitHubMapleGlobals source — setPriceOracle with onlyGovernorMapleGlobals.sol — mutable oracle mapping and setPriceOracle() functionretrieved 2026-04-27
- syrupRateProvider — immutable pool addresssyrupRateProvider 0xd2C59781F1Db84080A0592CE83Fe265642A4a8Eb — immutable poolretrieved 2026-04-27
Methodology #
Determine whether any collateral oracle address is marked `immutable` in protocol config with no admin-replaceable adapter wrapper, preventing the protocol from repricing when the upstream asset depegs.
See the full factor methodology and distribution across all protocols →