Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CGP 135: add KES + USDT/cUSD oracles #437

Merged
merged 5 commits into from
May 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
294 changes: 294 additions & 0 deletions CGPs/cgp-0135.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,294 @@
---
cgp: 135
title: Kenyan Shilling & USDT/USD Oracle Rates
date-created: 2024-05-08
author: "@nvtaveras, @bayological"
status: DRAFT
governance-proposal-id: 175
date-executed:
---

## Overview

This governance proposal aims to introduce two new rates (`KES/USD` & `CELO/KES`), with whitelisted oracle addresses for each of them, in preparation for the upcoming launch of the Kenyan Shilling (`cKES`) and new pairs to support it. We also propose the addition of a new rate `USDT/USD`, also with whitelisted oracle addresses, to enable the creation of a new Mento pair `cUSD/USDT`.

The new rates (`KES/USD`, `CELO/KES`, and `USDT/USD`) will be provided solely by Mento Labs initially, with the goal of broadening the set of oracle providers in future.

Similar to previous proposals CGP 71 and CGP 86, we suggest associating the `USDT/USD`, `KES/USD`, and `CELO/KES` rate identifiers with the following addresses derived from their ticker pair:

```solidity
address(uint160(uint256(keccak256("USDTUSD"))))
// == 0xE06C10C63377cD098b589c0b90314bFb55751558
```

```solidity
address(uint160(uint256(keccak256("KESUSD"))))
// == 0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169
```

For the `CELO/KES` rate, we suggest it's identifier address to be the proxy contract address of the underlying stable asset of the pair. This follows the same pattern as other stable assets (e.g. cUSD, cEUR, cBRL, eXOF), and will also enable `KES` to be used as a gas currency in the future.

A `StableTokenKESProxy` contract has been [deployed and verified on Mainnet](https://explorer.celo.org/mainnet/address/0x456a3D042C0DbD3db53D5489e98dFb038553B0d0) and it's ownership [has been transfered](https://explorer.celo.org/mainnet/tx/0x96b6dd806e5895a344032418a3105db45e0d40430790df7459aa73e1f1aee1ec) to the Celo Governance address. The address of this contract will be used as the `CELO/KES` rate identifier and will also be added to the Celo registry as the `KES` address. The initialization of the contract will be done by the Celo Governance in a future CGP to officially launch the `KES` stable token.

This CGP proposes:

a) The following addresses to report the `USDT/USD` rate:

#### Mento Labs

1. `0x5ad192ea520ec95db080b01bec990a920265cc4b`
2. `0x9c08cc67e6767e4487dbf341fa231e97621a06bf`
3. `0x42076d995bd1dd89d10bd2e55b9971a4032c5843`
4. `0xa048c0711c3c039295dc6182be9ce11063098b68`
5. `0x4a660903a53370b3d3d0f28f82d1d648dd3e4d23`
6. `0x367981d38c3ed5625727e7a7432791e83f72c922`
7. `0x0383bef08b4edd0e916678e308b9756ed003058b`
8. `0xc0522a59a7fe41d7045127db0b805a107bb51385`
9. `0x0b38e5c234934f68d1d4965a83e1e52b72089522`
10. `0xc48cd21255d348ec49bbb5690659b87de8bfada5`

b) The following address to report the `KES/USD` rate:

#### Mento Labs

1. `0xeab3df01269abd314465148e0c075d49fbd4b59b`
2. `0x28cd8a609560fb1ff1011387e4c40deabef029c0`
3. `0xf6d2d7ec798ae1b80046594345805298e0ac1624`
4. `0x86c794905f4278a9cd9a150a5dd2a4fe91fe894c`
5. `0x9d5a1a994d6da6db831e51cfe1a1fda99e7ad2a1`
6. `0xf72c29b7047166c6576378d976c44c58fa767bb9`
7. `0x5bcc4f89b1176f5e68269d232d2c5b274ad1d81e`
8. `0x55b1045d7db59a00adeeb331e9c89d0a5434df1c`
9. `0xd3573bdaf14369a25d51f485fee83af318468fe5`
10. `0x989c8a4e03151a49b18b291d3e21ca384ad91d6e`

c) The following address to report the `CELO/KES` rate:

#### Mento Labs

1. `0xcfba5ea29501d26fc3e6e0851bb13375ea0401ef`
2. `0xe0a634c4aac4494930ba50f59b751a5ddabe4679`
3. `0xe000bce6c6f87ac39f3c4f4b5daa38dd32433217`
4. `0xe1cdcf3f4101e9ab0aa953387e3dccadb889ae04`
5. `0x952897d4c93ec3f90a4be001f297cbe1c0b65366`
6. `0x7b50b90144ce27557ed352d499a13f458aef74d0`
7. `0x0eb570af5ab2a9eea97bb413d7dcc12edbf87172`
8. `0x0e4366a972546d747ea15248eddb8227d64aaeec`
9. `0xe2874f7997f05556dccc42e043bb50c00782ae77`
10. `0x8f085f82d77265dc816a607add817d8759628b9c`

d) The [StableTokenKESProxy address](https://explorer.celo.org/mainnet/address/0x456a3D042C0DbD3db53D5489e98dFb038553B0d0) to be added to the Celo registry as the `StableTokenKES` address:

`0x456a3D042C0DbD3db53D5489e98dFb038553B0d0`

## Proposed Changes

-- `USDT/USD` oracle rate transactions --

1. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xE06C10C63377cD098b589c0b90314bFb55751558`, `0x5ad192ea520ec95db080b01bec990a920265cc4b`)
- Value: 0

2. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xE06C10C63377cD098b589c0b90314bFb55751558`, `0x9c08cc67e6767e4487dbf341fa231e97621a06bf`)
- Value: 0

3. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xE06C10C63377cD098b589c0b90314bFb55751558`, `0x42076d995bd1dd89d10bd2e55b9971a4032c5843`)
- Value: 0

4. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xE06C10C63377cD098b589c0b90314bFb55751558`, `0xa048c0711c3c039295dc6182be9ce11063098b68`)
- Value: 0

5. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xE06C10C63377cD098b589c0b90314bFb55751558`, `0x4a660903a53370b3d3d0f28f82d1d648dd3e4d23`)
- Value: 0

6. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xE06C10C63377cD098b589c0b90314bFb55751558`, `0x367981d38c3ed5625727e7a7432791e83f72c922`)
- Value: 0

7. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xE06C10C63377cD098b589c0b90314bFb55751558`, `0x0383bef08b4edd0e916678e308b9756ed003058b`)
- Value: 0

8. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xE06C10C63377cD098b589c0b90314bFb55751558`, `0xc0522a59a7fe41d7045127db0b805a107bb51385`)
- Value: 0

9. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xE06C10C63377cD098b589c0b90314bFb55751558`, `0x0b38e5c234934f68d1d4965a83e1e52b72089522`)
- Value: 0

10. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xE06C10C63377cD098b589c0b90314bFb55751558`, `0xc48cd21255d348ec49bbb5690659b87de8bfada5`)
- Value: 0

-- `KES/USD` oracle rate transactions --

11. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169`, `0xeab3df01269abd314465148e0c075d49fbd4b59b`)
- Value: 0

12. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169`, `0x28cd8a609560fb1ff1011387e4c40deabef029c0`)
- Value: 0

13. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169`, `0xf6d2d7ec798ae1b80046594345805298e0ac1624`)
- Value: 0

14. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169`, `0x86c794905f4278a9cd9a150a5dd2a4fe91fe894c`)
- Value: 0

15. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169`, `0x9d5a1a994d6da6db831e51cfe1a1fda99e7ad2a1`)
- Value: 0

16. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169`, `0xf72c29b7047166c6576378d976c44c58fa767bb9`)
- Value: 0

17. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169`, `0x5bcc4f89b1176f5e68269d232d2c5b274ad1d81e`)
- Value: 0

18. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169`, `0x55b1045d7db59a00adeeb331e9c89d0a5434df1c`)
- Value: 0

19. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169`, `0xd3573bdaf14369a25d51f485fee83af318468fe5`)
- Value: 0

20. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169`, `0x989c8a4e03151a49b18b291d3e21ca384ad91d6e`)
- Value: 0

-- `CELO/KES` oracle rate transactions --

21. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0x456a3D042C0DbD3db53D5489e98dFb038553B0d0`, `0xcfba5ea29501d26fc3e6e0851bb13375ea0401ef`)
- Value: 0

22. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0x456a3D042C0DbD3db53D5489e98dFb038553B0d0`, `0xe0a634c4aac4494930ba50f59b751a5ddabe4679`)
- Value: 0

23. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0x456a3D042C0DbD3db53D5489e98dFb038553B0d0`, `0xe000bce6c6f87ac39f3c4f4b5daa38dd32433217`)
- Value: 0

24. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0x456a3D042C0DbD3db53D5489e98dFb038553B0d0`, `0xe1cdcf3f4101e9ab0aa953387e3dccadb889ae04`)
- Value: 0

25. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0x456a3D042C0DbD3db53D5489e98dFb038553B0d0`, `0x952897d4c93ec3f90a4be001f297cbe1c0b65366`)
- Value: 0

26. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0x456a3D042C0DbD3db53D5489e98dFb038553B0d0`, `0x7b50b90144ce27557ed352d499a13f458aef74d0`)
- Value: 0

27. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0x456a3D042C0DbD3db53D5489e98dFb038553B0d0`, `0x0eb570af5ab2a9eea97bb413d7dcc12edbf87172`)
- Value: 0

28. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0x456a3D042C0DbD3db53D5489e98dFb038553B0d0`, `0x0e4366a972546d747ea15248eddb8227d64aaeec`)
- Value: 0

29. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0x456a3D042C0DbD3db53D5489e98dFb038553B0d0`, `0xe2874f7997f05556dccc42e043bb50c00782ae77`)
- Value: 0

30. Whitelist oracles

- Destination: SortedOracles.addOracle
- Data: `0x456a3D042C0DbD3db53D5489e98dFb038553B0d0`, `0x8f085f82d77265dc816a607add817d8759628b9c`)
- Value: 0

-- Non oracle related transactions --

31. Add the StableTokenKESProxy address to the Celo registry

- Destination: Registry.setAddressFor
- Data: `StableTokenKES`, `0x456a3D042C0DbD3db53D5489e98dFb038553B0d0`)
- Value: 0

## Verification

A human readable version of this proposal can be found using the following command (on-chain ID determined after submission):

```
celocli governance:show --proposalID 175
```

## Risks

- The proposal adds new oracle rates that are not currently in use. It should be checked, and confirmed however by the proposed oracle providers, that the oracle addresses listed in this proposal are correct to ensure the functioning and safety of the systems that will rely on this oracle rate in the future.

## Useful Links

- [SortedOracles Smart Contract Code](https://github.com/celo-org/celo-monorepo/blob/master/packages/protocol/contracts/stability/SortedOracles.sol)
Loading
Loading