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" + } +]