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

Add CGP 149: decrease constitution for GoldToken.increaseAllowance #482

Merged
merged 5 commits into from
Sep 12, 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
77 changes: 77 additions & 0 deletions CGPs/cgp-0149.md
Original file line number Diff line number Diff line change
@@ -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: https://forum.celo.org/t/decrease-constitution-parameter-for-goldtoken-increaseallowance/9002
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 <TBD> --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](https://forum.celo.org/t/decrease-constitution-parameter-for-goldtoken-increaseallowance/9002)
13 changes: 13 additions & 0 deletions CGPs/cgp-0149/mainnet.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[
{
"contract": "GovernanceProxy",
"address": "0xD533Ca259b330c7A88f74E000a3FaEa2d63B7972",
"function": "setConstitution",
"args": [
"0x471EcE3750Da237f93B8E339c536989b8978a438",
"0x39509351",
"600000000000000000000000"
],
"value": "0"
}
]
Loading