diff --git a/CGPs/cgp-0149.md b/CGPs/cgp-0149.md new file mode 100644 index 00000000..723fcce5 --- /dev/null +++ b/CGPs/cgp-0149.md @@ -0,0 +1,77 @@ +--- +cgp: 149 +title: 'Decrease `constitution` parameter for `GoldToken.increaseAllowance`' +date-created: 2024-09-10 +author: 'Martin Chrzanowski (@m-chrzan)' +status: DRAFT +discussions-to: TBD +governance-proposal-id: +date-executed: +--- + +## Overview + +This proposal is to decrease the `constitution` parameter (the parameter that +determines what percentage of YES votes are necessary for a Celo Governance +proposal to pass) of `GoldToken.increaseAllowance` from 90% to 60%. This is in +line with the `constitution` parameter of `GoldToken.approve`. + +### Status + +- DRAFT = Feedback collection + +### Proposal Description + +The Governance contract defines `constitution` parameters that dictate what +percentage of votes need to be YES votes for a CGP to pass. In general more +risky functions (that affect important protocol parameters or access to +community funds) should have a higher threshold (think how in e.g. US Congress, +some things require a simple 50% majority, others a 2/3rds "super majority"). + +At mainnet launch, the cLabs team proposed `constitution` parameters for most +core contract functions. For some reason `GoldToken.increaseAllowance` was +missing in this initial configuration, so its difficulty is based on the default +for the GoldToken contract - 90%. `GoldToken.approve` was set explicitly to 60%. + +As `increaseAllowance` is very similar in behavior to `approve` (if anything, +it's less risky than `approve`), this proposal aims to set its `constitution` +parameter to 60%, reducing from the current 90%. It appears that setting a +similar parameter for `increaseAllowance` was simply missed by the dev team when +proposing the initial Governance configuration. + +## Proposed Changes + +1. Set the constitution parameter. + - Destination: Governance + - Data: setConstitution(GoldTokenProxy, increaseAllowance.functionSelector, 60%) + - Value: 0 + +## Verification + +Once the proposal is proposed on chain, fetch it with + + celocli governance:show --proposalID --node https://forno.celo.org + +Verify that: + +- The proposal has value 0 (no CELO should be transferred). +- There is one transaction in the proposal. +- The transaction destination is the Governance contract + (`0xD533Ca259b330c7A88f74E000a3FaEa2d63B7972`, verify against [Celo +docs](https://docs.celo.org/contract-addresses)). +- The transaction payload is a call to `setConstitution` with parameters: + - Address of the CELO token contract + (`0x471EcE3750Da237f93B8E339c536989b8978a438`, verify against [Celo +docs](https://docs.celo.org/token-addresses)). + - The function selector for `increaseAllowance` (`0x39509351`) + - 60% written as a Fixidity value (`600000000000000000000000` or `6e23`). + +## Risks + +This proposal will make governance proposals with `GoldToken.increaseAllowance` +easier to pass, but they will still be as difficult to pass as proposals with +`GoldToken.approve`, which has a similar risk profile. + +## Useful Links + +* [Forum Post](TBD) diff --git a/CGPs/cgp-0149/mainnet.json b/CGPs/cgp-0149/mainnet.json new file mode 100644 index 00000000..54234c36 --- /dev/null +++ b/CGPs/cgp-0149/mainnet.json @@ -0,0 +1,13 @@ +[ + { + "contract": "GovernanceProxy", + "address": "0xD533Ca259b330c7A88f74E000a3FaEa2d63B7972", + "function": "setConstitution", + "args": [ + "0x471EcE3750Da237f93B8E339c536989b8978a438", + "0x39509351", + "600000000000000000000000" + ], + "value": "0" + } +]