From d9b37a72d2d8ac3052bf3a0903e082f3c9991a1c Mon Sep 17 00:00:00 2001 From: Bayological <6872903+bayological@users.noreply.github.com> Date: Thu, 9 May 2024 10:20:02 +0200 Subject: [PATCH] CGP 135: add KES + USDT/cUSD oracles (#437) * CGP 134: add KES + USDT/cUSD oracles * update cgp number * update cgp number * update proposal id * update typo --- CGPs/cgp-0135.md | 294 +++++++++++++++++++++++++++++++++++++ CGPs/cgp-0135/mainnet.json | 279 +++++++++++++++++++++++++++++++++++ 2 files changed, 573 insertions(+) create mode 100644 CGPs/cgp-0135.md create mode 100644 CGPs/cgp-0135/mainnet.json diff --git a/CGPs/cgp-0135.md b/CGPs/cgp-0135.md new file mode 100644 index 00000000..08189cda --- /dev/null +++ b/CGPs/cgp-0135.md @@ -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) diff --git a/CGPs/cgp-0135/mainnet.json b/CGPs/cgp-0135/mainnet.json new file mode 100644 index 00000000..c1c0fb9d --- /dev/null +++ b/CGPs/cgp-0135/mainnet.json @@ -0,0 +1,279 @@ +[ + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xE06C10C63377cD098b589c0b90314bFb55751558", + "0x5ad192ea520ec95db080b01bec990a920265cc4b" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xE06C10C63377cD098b589c0b90314bFb55751558", + "0x9c08cc67e6767e4487dbf341fa231e97621a06bf" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xE06C10C63377cD098b589c0b90314bFb55751558", + "0x42076d995bd1dd89d10bd2e55b9971a4032c5843" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xE06C10C63377cD098b589c0b90314bFb55751558", + "0xa048c0711c3c039295dc6182be9ce11063098b68" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xE06C10C63377cD098b589c0b90314bFb55751558", + "0x4a660903a53370b3d3d0f28f82d1d648dd3e4d23" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xE06C10C63377cD098b589c0b90314bFb55751558", + "0x367981d38c3ed5625727e7a7432791e83f72c922" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xE06C10C63377cD098b589c0b90314bFb55751558", + "0x0383bef08b4edd0e916678e308b9756ed003058b" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xE06C10C63377cD098b589c0b90314bFb55751558", + "0xc0522a59a7fe41d7045127db0b805a107bb51385" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xE06C10C63377cD098b589c0b90314bFb55751558", + "0x0b38e5c234934f68d1d4965a83e1e52b72089522" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xE06C10C63377cD098b589c0b90314bFb55751558", + "0xc48cd21255d348ec49bbb5690659b87de8bfada5" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169", + "0xeab3df01269abd314465148e0c075d49fbd4b59b" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169", + "0x28cd8a609560fb1ff1011387e4c40deabef029c0" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169", + "0xf6d2d7ec798ae1b80046594345805298e0ac1624" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169", + "0x86c794905f4278a9cd9a150a5dd2a4fe91fe894c" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169", + "0x9d5a1a994d6da6db831e51cfe1a1fda99e7ad2a1" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169", + "0xf72c29b7047166c6576378d976c44c58fa767bb9" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169", + "0x5bcc4f89b1176f5e68269d232d2c5b274ad1d81e" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169", + "0x55b1045d7db59a00adeeb331e9c89d0a5434df1c" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169", + "0xd3573bdaf14369a25d51f485fee83af318468fe5" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0xbAcEE37d31b9f022Ef5d232B9fD53F05a531c169", + "0x989c8a4e03151a49b18b291d3e21ca384ad91d6e" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0x456a3D042C0DbD3db53D5489e98dFb038553B0d0", + "0xcfba5ea29501d26fc3e6e0851bb13375ea0401ef" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0x456a3D042C0DbD3db53D5489e98dFb038553B0d0", + "0xe0a634c4aac4494930ba50f59b751a5ddabe4679" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0x456a3D042C0DbD3db53D5489e98dFb038553B0d0", + "0xe000bce6c6f87ac39f3c4f4b5daa38dd32433217" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0x456a3D042C0DbD3db53D5489e98dFb038553B0d0", + "0xe1cdcf3f4101e9ab0aa953387e3dccadb889ae04" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0x456a3D042C0DbD3db53D5489e98dFb038553B0d0", + "0x952897d4c93ec3f90a4be001f297cbe1c0b65366" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0x456a3D042C0DbD3db53D5489e98dFb038553B0d0", + "0x7b50b90144ce27557ed352d499a13f458aef74d0" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0x456a3D042C0DbD3db53D5489e98dFb038553B0d0", + "0x0eb570af5ab2a9eea97bb413d7dcc12edbf87172" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0x456a3D042C0DbD3db53D5489e98dFb038553B0d0", + "0x0e4366a972546d747ea15248eddb8227d64aaeec" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0x456a3D042C0DbD3db53D5489e98dFb038553B0d0", + "0xe2874f7997f05556dccc42e043bb50c00782ae77" + ], + "value": "0" + }, + { + "contract": "SortedOracles", + "function": "addOracle", + "args": [ + "0x456a3D042C0DbD3db53D5489e98dFb038553B0d0", + "0x8f085f82d77265dc816a607add817d8759628b9c" + ], + "value": "0" + }, + { + "contract": "Registry", + "address": "0x000000000000000000000000000000000000ce10", + "function": "setAddressFor", + "args": ["StableTokenKES", "0x456a3D042C0DbD3db53D5489e98dFb038553B0d0"], + "value": "0" + } +]