This proposal implements one of the four changes outlined in the CELOccelerate tokenomics temperature check (CGP-0233), which recently passed governance. Specifically, it executes item 4: pausing carbon offset fund contributions.
It pauses the fee-based carbon fund distributions on the FeeHandler (currently 10% of transaction fees) by setting the carbon fraction to zero via governance.
| Contract | Parameter | Current Value |
|---|---|---|
FeeHandler (0xcD43...778) |
carbonFraction |
100000000000000000000000 (10% in Fixidity fixed point library) |
FeeHandler (0xcD43...778) |
carbonFeeBeneficiary |
0xCe10d577295d34782815919843a3a4ef70Dc33ce |
| Contract | Parameter | New Value |
|---|---|---|
| FeeHandler | carbonFraction |
0 |
| FeeHandler | carbonFeeBeneficiary |
0xCe10d577295d34782815919843a3a4ef70Dc33ce (unchanged) |
FeeHandler at 0xcD437749E43A154C07F3553504c68fBfD56B8778setCarbonFraction(uint256)["0"]Sets the carbon fraction to 0. The freed fraction is redirected to the burn (since burnFraction = 1 - carbonFraction - otherBeneficiariesFraction). There is one other beneficiary on mainnet (0x7A1E98FC9a008107DbD1f430a05Ace8cf6f3FE19), so totalFractionOfOtherBeneficiariesAndCarbon remains non-zero and no division-by-zero can occur in _distribute().
FeeHandler at 0xcD437749E43A154C07F3553504c68fBfD56B8778removeOtherBeneficiary(address)["0x7A1E98FC9a008107DbD1f430a05Ace8cf6f3FE19"]Removes cLabs as an other beneficiary so its allocation can be re-added at 100% in the next transaction. This indirection is required because changeOtherBeneficiaryAllocation cannot raise an existing allocation past the available headroom — see celo-monorepo#11735.
FeeHandler at 0xcD437749E43A154C07F3553504c68fBfD56B8778addOtherBeneficiary(address,uint256,string)["0x7A1E98FC9a008107DbD1f430a05Ace8cf6f3FE19", "1000000000000000000000000", "cLabs"]Re-adds cLabs as the sole other beneficiary at 100% (1e24 in Fixidity fixed point). After this transaction the burn fraction is 0 and all distributed fees flow to cLabs.
See mainnet.json.
Verify the proposal transactions:
celocli governance:show --proposalID <TBD> --jsonTransactions cgp-0236-proposal.json --node https://forno.celo.org
Verify FeeHandler carbon fraction (should be non-zero before, zero after):
cast call 0xcD437749E43A154C07F3553504c68fBfD56B8778 \
"getCarbonFraction()(uint256)" \
--rpc-url https://forno.celo.org
burnFraction = 1 - carbonFraction - otherBeneficiariesFraction). This has a mildly deflationary effect.0x7A1E98FC9a008107DbD1f430a05Ace8cf6f3FE19), preventing any division-by-zero in _distribute().