KVORUM
compoundSource: Compound governor oz · #475

Update price feeds in cUSDTv3 on Mainnet with CAPO and Chainlink SVR implementation.

executedSep 14, 2025, 08:33 AM UTCby3F0x3fb1…4c8a

01Summary

AISummary by Kvorumclaude-haiku-4-5

Update price feeds for 8 assets (wstETH, sFRAX, WBTC, WETH, LINK, weETH, mETH, COMP) in the cUSDTv3 market on Mainnet by implementing Chainlink's SVR (Sealed Vera Relay) solution for price oracle efficiency and deploying CAPO (Correlated Assets Price Oracle) adapters for yield-bearing assets to protect against price manipulation. Compound DAO will receive SVR-generated revenue through the protocol fee mechanism.

Type
contract upgrade

Key changes

  • Replace wstETH price feed with CAPO implementation to track yield accumulation and prevent price manipulation(high)
  • Replace sFRAX price feed with CAPO implementation for correlated asset price tracking(high)
  • Replace WBTC price feed with Chainlink SVR implementation(high)
  • Replace WETH price feed with Chainlink SVR implementation(high)
  • Replace LINK price feed with Chainlink SVR implementation(high)
  • Replace weETH price feed with CAPO implementation to handle yield-bearing asset pricing(high)
  • Replace mETH price feed with CAPO implementation for staking yield tracking(high)
  • Replace COMP price feed with Chainlink SVR implementation(high)

Notable concerns

  • CAPO is a new mechanism that has been audited by OpenZeppelin but represents a significant change to price feed logic
  • SVR implementation depends on Chainlink infrastructure and community vote approval
  • Price feed updates affect collateral valuation for all positions in cUSDTv3 market
Contracts0x3Afdc9BCA9213A35503b077a6072F3D0d5AB08400x316f9708bb98af7da9c68c1c3b5e79039cd336e30x1ec63b5883c3481134fd50d5daebc83ecd2e8779
Generated by Kvorum
model: claude-haiku-4-5
provider: anthropic
profile: anthropic-fast-v1
prompt: v1.0
generated: 2mo ago
Read the description ↗

02Description

278 words

Update price feeds in cUSDTv3 on Mainnet with CAPO and Chainlink SVR implementation.

Proposal summary

This proposal updates existing price feeds for wstETH, sFRAX, weETH, WBTC, WETH, mETH, COMP, and LINK on the USDT market on Mainnet.

SVR summery

RFP process and community vote passed and decided to implement Chainlink's SVR solution for Mainnet markets, this proposal updates wstETH, WBTC, WETH, LINK, weETH, mETH, COMP price feeds to support SVR implementations.

CAPO summery

CAPO is a price oracle adapter designed to support assets that grow gradually relative to a base asset - such as liquid staking tokens that accumulate yield over time. It provides a mechanism to track this expected growth while protecting downstream protocol from sudden or manipulated price spikes. wstETH, sFRAX, weETH, mETH price feeds are updated to their CAPO implementations.

Further detailed information can be found on the corresponding proposal pull request, forum discussion for CAPO and forum discussion for SVR.

CAPO audit

CAPO has been audited by OpenZeppelin, as well as the LST / LRT implementation here.

SVR fee recipient

SVR generates revenue from liquidators and Compound DAO will receive that revenue as part of the protocol fee. The fee recipient for SVR is set to Compound DAO multisig: 0xd9496F2A3fd2a97d8A4531D92742F3C8F53183cB.

Proposal actions

The first action updates wstETH price feed. The second action updates sFRAX price feed. The third action updates WBTC price feed. The fourth action updates WETH price feed. The fifth action updates LINK price feed. The sixth action updates weETH price feed. The seventh action updates mETH price feed. The eighth action updates COMP price feed. The ninth action deploys and upgrades Comet to a new version.

03Mismatch analysis

AIMismatch analysis by Kvorumclaude-sonnet-5
Consistent

The description lists nine actions in a specific order: eight updateAssetPriceFeed calls (wstETH, sFRAX, WBTC, WETH, LINK, weETH, mETH, COMP) followed by a deployAndUpgradeTo call. The decoded calldata contains exactly nine actions in the same order, each an updateAssetPriceFeed call targeting the same Configurator contract and the same cometProxy address (0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840, the cUSDT market), followed by a deployAndUpgradeTo call to the same comet proxy via the Configurator proxy. The known token addresses (WBTC, WETH, LINK, COMP) align with the claimed assets in the corresponding action slots, and the ordering of the other assets (wstETH, sFRAX, weETH, mETH) is consistent with the description's stated order. No unexpected recipients, value transfers, or additional privileged calls (e.g., ownership changes) are present. The only item that cannot be directly confirmed from the decoded calldata is the specific SVR fee-recipient address claim, which is likely implemented inside the newly referenced price feed contracts rather than as a separate top-level call — this is flagged as a low-severity, unverifiable claim rather than a contradiction. Overall the actions, targets, and value amounts are consistent between the prose and the calldata, so the proposal is assessed as consistent with high confidence, with one minor caveat noted.

Discrepancies

  • lowextra in description

    The description states that the SVR fee recipient is explicitly set to the Compound DAO multisig address (0xd9496F2A3fd2a97d8A4531D92742F3C8F53183cB). This configuration is not visible as a distinct decoded top-level action; it may be embedded inside the new price feed adapter contracts being pointed to by updateAssetPriceFeed calls, but cannot be independently verified from the provided calldata.

    “The fee recipient for SVR is set to Compound DAO multisig: 0xd9496F2A3fd2a97d8A4531D92742F3C8F53183cB.”

Generated by Kvorum
model: claude-sonnet-5
provider: anthropic
profile: anthropic-strong-v1
prompt: v1.0
generated: 2mo ago
Review the decoded actions ↗

04Actions

9 total
#0updateAssetPriceFeed(address,address,address)chain 0x1
Target
0x316f…36e3
Value
0 wei
Function
updateAssetPriceFeed(address,address,address)
Arguments
{
  "asset": "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0",
  "cometProxy": "0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840",
  "newPriceFeed": "0xA2699232B341881B1Ed85d91592b7c259E029aCf"
}
Calldata
#1updateAssetPriceFeed(address,address,address)chain 0x1
Target
0x316f…36e3
Value
0 wei
Function
updateAssetPriceFeed(address,address,address)
Arguments
{
  "asset": "0xA663B02CF0a4b149d2aD41910CB81e23e1c41c32",
  "cometProxy": "0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840",
  "newPriceFeed": "0x8C74B2811D2F1aD65517ADB5C65773c1E520ed2f"
}
Calldata
#2updateAssetPriceFeed(address,address,address)chain 0x1
Target
0x316f…36e3
Value
0 wei
Function
updateAssetPriceFeed(address,address,address)
Arguments
{
  "asset": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
  "cometProxy": "0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840",
  "newPriceFeed": "0xc8E4c3F58d5FC4409522503927Ecea057EbbA1fc"
}
Calldata
#3updateAssetPriceFeed(address,address,address)chain 0x1
Target
0x316f…36e3
Value
0 wei
Function
updateAssetPriceFeed(address,address,address)
Arguments
{
  "asset": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
  "cometProxy": "0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840",
  "newPriceFeed": "0xc0053f3FBcCD593758258334Dfce24C2A9A673aD"
}
Calldata
#4updateAssetPriceFeed(address,address,address)chain 0x1
Target
0x316f…36e3
Value
0 wei
Function
updateAssetPriceFeed(address,address,address)
Arguments
{
  "asset": "0x514910771AF9Ca656af840dff83E8264EcF986CA",
  "cometProxy": "0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840",
  "newPriceFeed": "0x83B34662f65532e611A87EBed38063Dec889D5A7"
}
Calldata
#5updateAssetPriceFeed(address,address,address)chain 0x1
Target
0x316f…36e3
Value
0 wei
Function
updateAssetPriceFeed(address,address,address)
Arguments
{
  "asset": "0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee",
  "cometProxy": "0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840",
  "newPriceFeed": "0x4F12633d511dC3049DE1ea923b7047fBeD0070D2"
}
Calldata
#6updateAssetPriceFeed(address,address,address)chain 0x1
Target
0x316f…36e3
Value
0 wei
Function
updateAssetPriceFeed(address,address,address)
Arguments
{
  "asset": "0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa",
  "cometProxy": "0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840",
  "newPriceFeed": "0x60F2058379716A64a7A5d29219397e79bC552194"
}
Calldata
#7updateAssetPriceFeed(address,address,address)chain 0x1
Target
0x316f…36e3
Value
0 wei
Function
updateAssetPriceFeed(address,address,address)
Arguments
{
  "asset": "0xc00e94Cb662C3520282E6f5717214004A7f26888",
  "cometProxy": "0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840",
  "newPriceFeed": "0x69B50fF403E995d9c4441a303438D9049dAC8cCD"
}
Calldata
#8deployAndUpgradeTo(address,address)chain 0x1
Target
0x1ec6…8779
Value
0 wei
Function
deployAndUpgradeTo(address,address)
Arguments
{
  "cometProxy": "0x3Afdc9BCA9213A35503b077a6072F3D0d5AB0840",
  "configuratorProxy": "0x316f9708bB98af7dA9c68C1C3b5e79039cD336E3"
}
Calldata

05Tally

Summed from votes

Voters26
VP participating610.9K
Outcome (current)For
Current support100%

06Voters

26 total
Filter:
VoterChoice% of totalRationale
B00xb06d…ae3dFor122.9K20.12%—1y ago
660x66cd…65f9For80.1K13.11%—1y ago
3F0x3fb1…4c8aFor80K13.09%—1y ago
360x36cc…ffc6For77.1K12.62%—1y ago
B30xb356…c826For50K8.19%—1y ago
050x0579…ca09For50K8.18%—1y ago
4F0x4f89…fd3cFor50K8.18%—1y ago
680x683a…6c02For40.1K6.56%—1y ago
070x0703…961bFor30K4.91%—1y ago
B40xb49f…7948For30K4.91%—1y ago
B90xb933…8dd1For527.60.09%—1y ago
BE0xbe1d…c953For2310.04%—1y ago
C50xc554…7759For11.20.00%—1y ago
8B0x8bb9…ccc2For1.10.00%—1y ago
170x1729…b879For10.00%—1y ago
2F0x2f2f…f78aFor0.50.00%—1y ago
7F0x7f21…31e0For0.10.00%—1y ago
D70xd712…1366For00.00%—1y ago
E80xe8ee…0877For00.00%—1y ago
C40xc4cd…47bcFor00.00%—1y ago
4D0x4d12…7d7cFor00.00%—1y ago
E60xe6b8…452dFor00.00%—1y ago
AC0xacc9…0b28For00.00%—1y ago
ED0xed4c…9508For00.00%—1y ago
EE0xee2a…58a7For00.00%—1y ago
880x88f6…0ec0For00.00%—1y ago
Showing 26

07Forum

AIForum synthesis by Kvorumclaude-sonnet-5
sentiment · mixedthread · constructive

Arguments for

  • Chainlink SVR is already live and proven in production (e.g., with Aave) and Compound already relies on Chainlink feeds on mainnet, so adopting it there adds minimal incremental risk.— cylon, allthecolors, pennblockchain
  • Ethereum mainnet holds the largest share of liquidation value, making it the most strategically important and comparatively safe place to pilot an OEV solution first.— cylon
  • A phased, single-market rollout on mainnet lets the DAO observe real performance (including through a stress event) before expanding further.— cylon
  • Delegates demonstrated decisive support for adopting Chainlink SVR on mainnet through the Snapshot vote, reflecting broad community backing.— AranaDigital

Arguments against

  • OEV auctions can add latency to liquidations, and historical price-drawdown data shows even a few blocks of delay can push positions into insolvency, especially on volatile assets and L2s.— Gauntlet, victator
  • Empirical analysis of past large Compound liquidations shows that slippage, builder tips, and provider fees consume the vast majority of liquidation incentive, meaning actual recapturable OEV revenue is far smaller than advertised (comparable to a minor SFPF adjustment).— victator
  • OEV is a patch over a deeper structural flaw in Compound's liquidation mechanism; resources would be better spent on partial liquidations and mechanism redesign rather than locking in an OEV vendor.— victator
  • Committing broadly to any OEV vendor now is premature since solutions are not yet fully tested in live, volatile conditions; a cautious, staged approach with real performance data is preferable.— cylon, Avantgarde
  • Chainlink's fairness and prioritization for Compound is questionable given it reportedly offered a materially worse revenue share than to Aave, raising doubts about whether L2 rollout and support will be prioritized.— ugurmersin

Unresolved concerns

  • Whether OEV-induced liquidation delays could materially increase insolvency risk on mainnet during high-volatility events once Chainlink SVR is live.— Gauntlet, victator
  • Whether real-world OEV revenue capture will be far smaller than projected once slippage, builder tips, and provider fees are accounted for.— victator
  • Whether Chainlink SVR's actual latency on mainnet and future L2 rollouts will meet Gauntlet's recommended sub-3-block liquidation window.— Gauntlet, mikemassari
  • Unresolved questions about Chainlink's comparatively lower revenue share and prioritization for Compound relative to other protocols like Aave.— ugurmersin
  • Whether adopting OEV now risks entrenching an inefficient liquidation architecture rather than pursuing higher-leverage fixes like partial liquidations.— victator

Notable participants

  • AranaDigitalOrganized and ran the RFP/Snapshot voting process, provided procedural updates and final vote results.
  • cylonDelegate who proposed and iteratively refined a risk-minimized, phased rollout strategy across chains, including supporting Chainlink SVR on mainnet.
  • GauntletProvided quantitative risk analysis on liquidation latency and price drawdowns, recommending caution and a 3-block latency ceiling.
  • victatorAuthored a detailed risk-first analysis (Platonia) arguing OEV revenue is overestimated and that liquidation mechanism redesign is a higher priority than OEV adoption.
  • ugurmersinApi3 representative who defended Api3's production track record and raised pointed questions about Chainlink and RedStone's claims and incentives.
  • mikemassariRedStone representative who responded to latency/searcher-network critiques and defended RedStone's Venus pilot record.
  • allthecolorsDelegate who largely aligned with cylon's cautious approach but advocated testing Chainlink SVR on Base and keeping Api3 on Mantle.
  • pennblockchainDelegate who voted with a measured rollout stance, initially favoring Api3 on Arbitrum before revising to no deployment there.
  • AvantgardeDelegate who echoed cylon's cautious, phased-testing approach given immature state of OEV solutions.
Generated by Kvorum
model: claude-sonnet-5
provider: anthropic
profile: anthropic-strong-v1
prompt: v1.0
generated: 2mo ago
Open the thread ↗