In this governance proposal, we propose to execute the Celo Core Contracts Release 14. This release follows the release process.
This release addresses the critical issue identified in CGP-0207 (Mento Reserve Rebalancing) by fixing the numerator/denominator logic in the EpochManager contract that was causing incorrect CELO transfers to the Mento Reserve during epoch reward distributions.
Changes that are being proposed in this release are described in this Github release. (TODO add auditor) has completed an code audit of this release, and the tooling provided ensures the version control references included in the report match the contract deployment described in the proposal content.
Updated contracts:
New contracts:
N/A
Deprecated contracts: N/A
As detailed in CGP-0207, a bug in the EpochManager contract inverted the numerator and denominator when calculating CELO transfers to the Mento Reserve during epoch reward processing. This resulted in the Mento Reserve receiving significantly less CELO than intended since the L2 migration. This release fixes the calculation logic to ensure accurate future distributions.
The specific change corrects the exchange rate calculation from (1, 1, 0, 1) to (1, 1, 0, 2) in the EpochManager contract, resolving the inverted numerator/denominator issue.
First, make sure to download latest celo-monorepo with
$ git clone git@github.com:celo-org/celo-monorepo.git --branch release/core-contracts/14
And a version of the cli compatible with this contract release, you can install it with:
$ npm install -g @celo/celocli@6.2.0
Then build the project it with:
$ yarn && yarn build
Once built, cd to the protocol folder with:
$ cd packages/protocol
From there, you can download the current proposal:
$ celocli governance:show --proposalID [PROPOSAL_ID] --jsonTransactions release-14-proposal.json --node https://forno.celo.org
And then verify that the proposal deployment matches the audited release:
yarn release:verify-release -p release-14-proposal.json -b core-contracts.v14 -n mainnet -f -i "releaseData/initializationData/release14.json"
The output should verify that the bytecodes and storages match what is expected, it should look something like this:
Success, no bytecode mismatches found!
Writing linked library addresses to libraries.json
✨ Done in 30.86s.
Celo Core Contracts are critical for the functioning of the Celo Platform. While cLabs have invested significant efforts to expand testing and verification tooling, and a third party audit has been completed, errors in this proposal could lead to situations that are only recoverable with a very difficult hard fork.
However, this release specifically addresses a critical bug that was causing incorrect fund distributions, so the risk of not implementing this fix outweighs the deployment risks.