-
Notifications
You must be signed in to change notification settings - Fork 69
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add ccop oracle whitelist proposal md + json (#486)
* feat: add ccop oracle whitelist proposal * chore: correct cgp status * Update cgp-0150.md
- Loading branch information
1 parent
dbd48a9
commit d4ae3e5
Showing
2 changed files
with
115 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
--- | ||
cgp: 150 | ||
title: Adding oracles to support cCOP | ||
date-created: 2024-10-17 | ||
author: "Bayo Sodimu ([email protected])" | ||
status: DRAFT | ||
discussions-to: https://forum.celo.org/t/launch-of-ccop-colombia-s-first-decentralized-stablecoin/9211 | ||
governance-proposal-id: | ||
date-executed: | ||
--- | ||
|
||
## Overview | ||
|
||
This governance proposal will whitelist the Chainlink relayer contracts required to support the cCOP. The ChainlinkRelayer will transmit rate feed data from a Chainlink price feed or an aggregation of multiple Chainlink price feeds to the SortedOracles contract. | ||
|
||
The rate feeds involved are COP/USD and CELO/COP, both of which already have relayer contracts deployed. Details of the rate feeds and corresponding relayer contracts are provided in the table below: | ||
|
||
| RateFeed | RateFeedId | Relayer Contract | | ||
| --------------- | ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- | | ||
| relayed:COPUSD | 0x0196D1F4FdA21fA442e53EaF18Bf31282F6139F1 | [0x783F947126Adb7646c2A459B867f5B526D2E6603](https://celoscan.io/address/0x783F947126Adb7646c2A459B867f5B526D2E6603#readContract) | | ||
| relayed:CELOCOP | 0x32ABF1cBdFdcD56790f427694be2658d4B1A83bC | [0x5926F76D43Ce2D778880226b3C4e7156C8Ece99e](https://celoscan.io/address/0x5926F76D43Ce2D778880226b3C4e7156C8Ece99e#readContract) | | ||
|
||
## Proposed Changes | ||
|
||
1. **Add CELOCOP relayer as oracle** | ||
|
||
- Destination: SortedOracles.addOracle | ||
- Data: `0x32ABF1cBdFdcD56790f427694be2658d4B1A83bC`, `0x5926F76D43Ce2D778880226b3C4e7156C8Ece99e` | ||
- Value: 0 | ||
|
||
2. **Set token report expiry for CELOCOP** | ||
|
||
- Destination: SortedOracles.tokenReportExpirySeconds | ||
- Data: `0x32ABF1cBdFdcD56790f427694be2658d4B1A83bC`, 360 | ||
- Value: 0 | ||
|
||
3. **Add COPUSD relayer as oracle** | ||
|
||
- Destination: SortedOracles.addOracle | ||
- Data: `0x0196D1F4FdA21fA442e53EaF18Bf31282F6139F1`, `0x783F947126Adb7646c2A459B867f5B526D2E6603` | ||
- Value: 0 | ||
|
||
4. **Set token report expiry for COPUSD** | ||
|
||
- Destination: SortedOracles.tokenReportExpirySeconds | ||
- Data: `0x0196D1F4FdA21fA442e53EaF18Bf31282F6139F1`, 360 | ||
- Value: 0 | ||
|
||
5. **Set equivalent token for CELOPHP ratefeedId** | ||
|
||
- Destination: SortedOracles.setEquivalentToken | ||
- Data: `0x8A567e2aE79CA692Bd748aB832081C45de4041eA`, `0x32ABF1cBdFdcD56790f427694be2658d4B1A83bC` | ||
- Value: 0 | ||
|
||
## Verification | ||
|
||
Check the [forum post](https://forum.celo.org/t/launch-of-ccop-colombia-s-first-decentralized-stablecoin/9211) for a detailed description of verification steps. | ||
|
||
## Risks | ||
|
||
The data relayed by the ChainlinkRelayer contract is only as secure as the Chainlink price feeds it relies on. If the Chainlink price feeds are compromised, the data relayed by the ChainlinkRelayer contract could be manipulated. This could lead to the SortedOracles contract reporting incorrect rate feeds to the rest of the protocol. | ||
|
||
This risk is present with all Oracle solution and is not specific to the Chainlink price feeds. In order to mitigate this risk, the Mento Protocol has implemented onchain circuit breakers that automatically pause the protocol if the reported data is outside of a predefined threshold. As well as our onchain trading limits, which limit the trading bandwidth. | ||
|
||
## Useful Links | ||
|
||
- [cCOP Proposal Forum Post](https://forum.celo.org/t/launch-of-ccop-colombia-s-first-decentralized-stablecoin/9211) | ||
- [Mento Core Contracts](https://github.com/mento-protocol/mento-core) | ||
- [Mento Docs](https://docs.mento.org) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
[ | ||
{ | ||
"contract": "SortedOracles", | ||
"address": "0xefB84935239dAcdecF7c5bA76d8dE40b077B7b33", | ||
"function": "addOracle", | ||
"args": [ | ||
"0x32ABF1cBdFdcD56790f427694be2658d4B1A83bC", | ||
"0x5926F76D43Ce2D778880226b3C4e7156C8Ece99e" | ||
], | ||
"value": "0" | ||
}, | ||
{ | ||
"contract": "SortedOracles", | ||
"address": "0xefB84935239dAcdecF7c5bA76d8dE40b077B7b33", | ||
"function": "setTokenReportExpiry", | ||
"args": ["0x32ABF1cBdFdcD56790f427694be2658d4B1A83bC", "360"], | ||
"value": "0" | ||
}, | ||
{ | ||
"contract": "SortedOracles", | ||
"address": "0xefB84935239dAcdecF7c5bA76d8dE40b077B7b33", | ||
"function": "addOracle", | ||
"args": [ | ||
"0x0196D1F4FdA21fA442e53EaF18Bf31282F6139F1", | ||
"0x783F947126Adb7646c2A459B867f5B526D2E6603" | ||
], | ||
"value": "0" | ||
}, | ||
{ | ||
"contract": "SortedOracles", | ||
"address": "0xefB84935239dAcdecF7c5bA76d8dE40b077B7b33", | ||
"function": "setTokenReportExpiry", | ||
"args": ["0x0196D1F4FdA21fA442e53EaF18Bf31282F6139F1", "360"], | ||
"value": "0" | ||
}, | ||
{ | ||
"contract": "SortedOracles", | ||
"address": "0xefB84935239dAcdecF7c5bA76d8dE40b077B7b33", | ||
"function": "setEquivalentToken", | ||
"args": [ | ||
"0x8A567e2aE79CA692Bd748aB832081C45de4041eA", | ||
"0x32ABF1cBdFdcD56790f427694be2658d4B1A83bC" | ||
], | ||
"value": "0" | ||
} | ||
] |