This proposal upgrades the Olympus PRICE module to PRICE v1.2 in order to improve the resilience of price feeds used by protocol contracts, particularly for OHM.
PRICE v1.2 preserves backwards compatibility with the existing PRICE v1 interface, so downstream policies such as Operator, YieldRepurchaseFacility and EmissionManager do not need to be changed. The upgrade allows assets to be resolved from multiple price feeds using explicit strategies, deviation filtering and strict-mode failure behaviour.
The protocol currently relies on a small number of oracle paths when resolving OHM. If a critical feed is stale, misconfigured or reporting incorrectly, automated protocol operations could make buy or sell decisions using an unsupported market price.
This proposal adds independent price sources, deviation-based filtering and fail-closed behaviour so PRICE can tolerate isolated feed failures while rejecting materially divergent prices.
USDS will be priced from:
Strategy:
getAveragePriceExcludingDeviations()sUSDS will be priced through the ERC4626 submodule, using:
Strategy:
wETH will be priced from:
Strategy:
getAveragePriceExcludingDeviations()OHM will be priced from:
Strategy:
getAveragePriceExcludingDeviations()| Asset | Feed | Update Threshold |
|---|---|---|
| USDS | Chainlink USDS-USD | 24 hours |
| USDS | Chainlink DAI-USD | 24 hours |
| USDS | API3 USDS-USD | 25 hours |
| wETH | Chainlink ETH-USD | 1 hour |
| wETH | RedStone ETH-USD | 24 hours |
| wETH | API3 ETH-USD | 25 hours |
| wETH | Chainlink ETH-BTC leg | 24 hours |
| wETH | Chainlink BTC-USD leg | 1 hour |
| OHM | Chainlink OHM-ETH leg | 24 hours |
| OHM | Chainlink ETH-USD leg | 1 hour |
API3 feeds are consumed through Chainlink-compatible reader proxies. Their heartbeat is 24 hours, while the configured staleness threshold is 25 hours. The extra hour gives a small buffer for heartbeat updates that land late, while still excluding the feed promptly if an update is missed.
API3 feed operation requires a small ongoing payment to keep the reader proxy active and updating. The expected cost is approximately 0.05-0.1 ETH per quarter across the API3 feeds.
| Asset | Feed | Observation Window |
|---|---|---|
| OHM | Uniswap V3 OHM/WETH | 25 minutes |
| OHM | Uniswap V3 OHM/sUSDS | 25 minutes |
This proposal uses API3 for the additional ETH-USD and USDS-USD feeds because API3 reader proxies expose a Chainlink-compatible interface and can be consumed through the existing PRICE feed path.
API3 ETH-USD is already available, and API3 USDS-USD can be used as the third USDS source. Both feeds require a small ongoing operating payment to keep the reader proxy active and updating, expected to be approximately 0.05-0.1 ETH per quarter.
PRICE configuration is split between immediate setup actions and timelocked maintenance actions.
The following actions are queued through PriceConfigv2 and can only be executed after the configured timelock delay:
queueRemoveAssetqueueUpdateAssetqueueUpgradeSubmodulequeueExecOnSubmodulequeueTimelockDelayQueued actions are executable by any address after the delay has elapsed and before expiry. The emergency role can cancel queued actions before execution.
The following actions are not timelocked:
addAsset, because adding a new asset does not affect existing live price resolutioninstallSubmodule, because installing a new submodule does not replace an existing live submodulestoreObservation and storeObservations, because these are operational moving-average maintenance actionsThis configuration improves PRICE resilience by:
If this Snapshot vote passes, the upgrade is expected to be executed by DAO multisig batch.
The batch will:
PriceConfigv2.PriceConfigv2 is enabled by default so the initial configuration can be applied without a heartbeat downtime window. Future material changes to live PRICE configuration will use the timelock queue.
A vote For approves the PRICE v1.2 rollout and oracle configuration described above.
A vote Against rejects the rollout.