Open Price Feed
01Summary
Proposal to replace Compound's price oracle with the Open Price Feed system (audited by OpenZeppelin), which uses Coinbase Oracle prices validated against Uniswap v2 TWAP (with 20% tolerance) for 12 supported assets. The system is permissionless and allows community-built price posters. Currently in production for several weeks.
- Type
- protocol addition
Key changes
- Replace existing price oracle with Open Price Feed contract at 0x9B8Eb8b3d6e2e0Db36F41455185FEF7049a35CaE(high)
- Implement dual price validation using Coinbase Oracle and Uniswap v2 TWAP with 20% tolerance threshold(high)
- Enable permissionless price posting through decentralized reporter system(medium)
- Initially support 12 assets: BAT, WBTC, COMP, DAI, ETH, KNC, LINK, REP, SAI, USDC, USDT, and ZRX(medium)
Notable concerns
- System requires future governance proposal to add new tokens or reporters
- Price oracle change is critical infrastructure affecting all collateral calculations and protocol operations
Generated by Kvorum
02Description
Open Price Feed
This proposal changes the price oracle in Compound to use the Open Price Feed deployed at 0x9b8eb8b3d6e2e0db36f41455185fef7049a35cae. The Open Price Feed is an open-source project where a set of reporters sign price data which is posted on-chain for use by DeFi protocols. There is no privilege required to post prices, and we encourage the community to build additional posters to keep prices up-to-date. The Compound Protocol will initially use price data from Coinbase (via the Coinbase Oracle) as well as a time-weighted average price from Uniswap's on-chain markets to ensure price integrity.
The Open Price Feed has been audited by Open Zeppelin 1 2. The system initially supports prices for BAT, WBTC, COMP, DAI, ETH, KNC, LINK, REP, SAI, USDC, USDT and ZRX. The system is compatible with support for more tokens and different reporters, both of which would require a new Governance proposal.
The Open Price Feed system was announced almost a year ago. We envisioned the system as an easy way for different projects and exchanges to sign data without the burden of posting that data onto the Ethereum blockchain itself. Instead, the exchanges expose an HTTP endpoint with an Ethereum-signed message containing the price data. The goal is that every exchange can provide such data, which can be used by every DeFi project.
In the current incarnation of the Open Price Feed, it takes the prices from Coinbase's Oracle (which was designed in coordination with the Open Price Feed) and it tests that price against a time-weighted average price (TWAP) from Uniswap v2. If the price for a given asset from Coinbase is within 20% of the Uniswap TWAP for that asset, it is posted and immediately is available for use in the Protocol (e.g. for collateral calculations). The TWAP calculation is based on the Uniswap Oracle concept.
The Open Price Feed has been running in production for several weeks and has been tested on the Ropsten and Kovan test-nets. For comments and discussion, please visit comp.xyz.
References
- Open Price Feed Docs
- Compound Prices Page
- Open Price Feed Contract
- Open Price Feed Data Storage Contract
- Open Zeppelin Open Price Feed with Uniswap Audit - July 2020
- Open Zeppelin Open Price Feed Audit - Feb 2020
- Coinbase Reporter Public Key:
0xfCEAdAFab14d46e20144F48824d0C09B1a03F2BC - Coinbase Oracle Docs
- Open Oracle GitHub
- Open Price Feed Playground
- Manual Price Posting Page
- Aggregated Prices API
- Open Price Feed Launch Discussion
- Open Price Feed Development Discussion
03Mismatch analysis
The proposal description states a single, clear intent: switch Compound's price oracle to the Open Price Feed contract at address 0x9b8eb8b3d6e2e0db36f41455185fef7049a35cae. The decoded calldata contains exactly one action, calling _setPriceOracle(address) on what is the Compound Comptroller contract, passing the same address (case differences aside, which is irrelevant for Ethereum addresses) as the new oracle. There is a single action, the target function matches the described intent (setting the price oracle), and the argument address matches the address named in the description precisely. No additional actions, parameter changes, transfers, or role grants are present that go beyond what is described. This is a clean, minimal, and fully consistent match between prose and calldata.
Generated by Kvorum
04Actions
- Target
- 0x3d98…cd3b
- Value
- 0 wei
- Function
- _setPriceOracle(address)
- Arguments
{ "0": "0x9B8Eb8b3d6e2e0Db36F41455185FEF7049a35CaE" }- Calldata
05Tally
Summed from votes
06Voters
| Voter | Choice | % of total | Rationale | ||
|---|---|---|---|---|---|
| 660x6626…c35c | For | 125.1K | 17.82% | — | 6y ago |
| 810x8169…9806 | For | 101K | 14.40% | — | 6y ago |
| 540x54a3…e189 | For | 100K | 14.26% | — | 6y ago |
| 7E0x7e4a…19fa | For | 100K | 14.25% | — | 6y ago |
| E50xe5a5…beb9 | For | 65K | 9.26% | — | 6y ago |
| 1D0x1d29…5d1f | For | 50K | 7.13% | — | 6y ago |
| 870x879d…0f11 | For | 25.2K | 3.59% | — | 6y ago |
| 5D0x5d89…9e68 | For | 25K | 3.56% | — | 6y ago |
| B00xb032…449b | For | 20.1K | 2.87% | — | 6y ago |
| DAdakeshi.eth0xe3c9…6b21 | For | 20K | 2.85% | — | 6y ago |
| E50xe5b5…4b03 | For | 15K | 2.14% | — | 6y ago |
| 0A0x0a09…b92e | For | 15K | 2.14% | — | 6y ago |
| CF0xcfae…135a | For | 10.3K | 1.47% | — | 6y ago |
| A80xa8c6…3985 | For | 10K | 1.43% | — | 6y ago |
| 580x582c…d468 | For | 9.8K | 1.39% | — | 6y ago |
| TEtennisbowling.eth0xc3aa…f546 | For | 5K | 0.71% | — | 6y ago |
| B80xb8a6…6406 | For | 5K | 0.71% | — | 6y ago |
| FC0xfc07…4682 | For | 118.4 | 0.02% | — | 6y ago |
| 2B0x2b38…bf33 | For | 11.4 | 0.00% | — | 6y ago |
| C00xc094…e41b | For | 10.7 | 0.00% | — | 6y ago |
| 5B0x5b91…a16f | For | 4 | 0.00% | — | 6y ago |
| F40xf43d…ca80 | For | 3.5 | 0.00% | — | 6y ago |
| C80xc893…0aaf | For | 3.4 | 0.00% | — | 6y ago |
| 720x7234…a42a | For | 1.1 | 0.00% | — | 6y ago |
| 420x42d5…82fa | For | 1 | 0.00% | — | 6y ago |
| 9B0x9bed…c564 | For | 1 | 0.00% | — | 6y ago |
| EE0xee41…fe06 | For | 0.8 | 0.00% | — | 6y ago |
| 2A0x2a4e…f008 | For | 0.3 | 0.00% | — | 6y ago |
| TOtoño.eth0x01a4…8ead | For | 0.3 | 0.00% | — | 6y ago |
| E00xe095…7452 | For | 0.3 | 0.00% | — | 6y ago |
| JTjthrack.eth0x44c6…aabd | For | 0.3 | 0.00% | — | 6y ago |
| 410x4196…bc60 | For | 0.1 | 0.00% | — | 6y ago |
| 940x9429…6f47 | For | 0.1 | 0.00% | — | 6y ago |
| 750x7578…b191 | For | 0.1 | 0.00% | — | 6y ago |
| 070x079f…457e | For | 0.1 | 0.00% | — | 6y ago |
| 790x79fa…03a6 | For | 0.1 | 0.00% | — | 6y ago |
| 7D0x7de0…a044 | For | 0.1 | 0.00% | — | 6y ago |
| 840x84e3…5a95 | For | 0.1 | 0.00% | — | 6y ago |
| 630x63ca…4490 | For | 0.1 | 0.00% | — | 6y ago |
| 430x43e7…1e84 | For | 0.1 | 0.00% | — | 6y ago |
| 940x941e…327d | For | 0.1 | 0.00% | — | 6y ago |
| 3A0x3a74…1379 | For | 0.1 | 0.00% | — | 6y ago |
| C50xc5b6…a15a | For | 0.1 | 0.00% | — | 6y ago |
| 330x33a1…ba38 | For | 0 | 0.00% | — | 6y ago |
| 670x6729…73fd | For | 0 | 0.00% | — | 6y ago |
| AE0xae83…d9de | For | 0 | 0.00% | — | 6y ago |
| 9F0x9f69…f791 | For | 0 | 0.00% | — | 6y ago |
| 6A0x6ab1…2a52 | For | 0 | 0.00% | — | 6y ago |
| E80xe838…b11d | For | 0 | 0.00% | — | 6y ago |
| DC0xdc66…98c9 | For | 0 | 0.00% | — | 6y ago |
07Forum
- Governance Proposal 019: Open Price Feed ↗discourse · high confidence
Arguments for
- The Open Price Feed is an audited, open-source system that lets any party post signed price data without special privilege, cross-checked against a Uniswap TWAP for integrity.— hayesgm
Arguments against
None surfaced.
Unresolved concerns
- What happens to price availability for collateral calculations when the Coinbase price diverges from the Uniswap TWAP by more than the 20% threshold, since the price simply goes stale rather than resolving.— jthrack, hayesgm
- During the DAI price spike event, Coinbase reported DAI prices far above the Uniswap TWAP (up to ~$1.30 vs ~$1.00), causing most of the elevated prices to be rejected under the 20% band, raising questions about how the feed performs under stress conditions.— jthrack, MasterofNonce
Notable participants
- hayesgmProposer who introduced the Open Price Feed proposal and answered technical questions about its price-divergence handling.
- jthrackRaised questions about how the oracle handles divergence between Coinbase and Uniswap TWAP prices, including during the DAI depeg event.
- MasterofNonceProvided factual details on how the oracle behaved during the DAI price spike, noting rejected high prices due to the 20% divergence cap.
Generated by Kvorum
08Similar proposals
- compoundexecutedOracle Improvement82%
- compoundexecutedUpgrade Compound v2 Oracle To Disable UAV73%
- compoundexecutedCompound UAV v3 Upgrade70%
- compoundexecutedCompound Oracle Upgrade v369%
- compoundexecutedOracle Update69%
- compounddefeatedAdd Market: MATIC & Update Price Oracle63%
- compoundexecutedAdd USDT Support59%
- compoundexecutedAdd Market: USDP59%
- compoundexecutedAdd TUSD Support57%
- compoundexecutedAdd LINK Support57%