From 914503628112eab8796d34461b3d24a85a5d6be4 Mon Sep 17 00:00:00 2001 From: boqdan <304771+bowd@users.noreply.github.com> Date: Thu, 23 May 2024 15:22:04 +0100 Subject: [PATCH] feat: add Mento spin-off and launch proposal (#443) * feat: add Mento spin-off and launch proposal * fix: rename it to 138 because there's already a PR for 137 * fix: change wording on scope * fix: typo and CGP number * fix: fix list of owned contracts --- CGPs/cgp-0139.md | 296 +++++++++++++++++++++++++++++++++++++ CGPs/cgp-0139/mainnet.json | 29 ++++ 2 files changed, 325 insertions(+) create mode 100644 CGPs/cgp-0139.md create mode 100644 CGPs/cgp-0139/mainnet.json diff --git a/CGPs/cgp-0139.md b/CGPs/cgp-0139.md new file mode 100644 index 00000000..f4964517 --- /dev/null +++ b/CGPs/cgp-0139.md @@ -0,0 +1,296 @@ +--- +cgp: 139 +title: Mento Spin-off and Launch of the MENTO token +date-created: 2024-05-23 +author: "Bogdan Dumitru , Roman Croessmann , Markus Franke , Oleksiy Novykov " +status: DRAFT +discussions-to: https://forum.celo.org/t/mento-spin-off-and-launch-of-the-mento-token/7747 +governance-proposal-id: +date-executed: +--- + +## Summary + +This proposal aims to spin-off Mento Governance and launch a MENTO token to further support the development of the +Mento Protocol. The MENTO token breakdown, which includes an airdrop to the Celo Community Treasury, CELO holders, +and early Mento stablecoin users, is included. If this proposal passes, Mento Governance will be established. +In the future, a follow-up proposal will be submitted to hand over the control of all Mento smart contracts +from Celo Governance to Mento Governance. + +## Motivation + +In recent years, Mento has cemented its role as the largest Celo-native project, with four stablecoins issued +and over 2.4M active users, as of March 2024. To further propel Mento towards its vision of onboarding a billion +Web3 users through adopting digital assets worldwide, it is essential to further evolve the Mento Protocol and +establish an ecosystem of Mento builders, dApps, and service providers. + +This CGP proposes to launch the MENTO token and separate Mento Governance to accelerate the development and +increase the resilience of the Mento Protocol. This transition will allow Mento stakeholders to focus even +more on its development and create pathways toward self-sustainability. The community discussion around the +launch of a Mento-specific governance token was kicked off in Nov. 2023 (link 3), and the topic has already +been discussed in previous community calls. + +If Celo Governance votes in favor of this proposal, the MENTO token will be deployed and distributed to +stakeholders of the Celo and Mento ecosystems. + +## High-Level Design Components + +1. MENTO Token: An ERC-20 token on Celo is the core of the system. It can be locked in exchange for + veMENTO to participate in voting on Mento Governance proposals. +2. veMENTO locker: A locking contract where users can lock their MENTO tokens, in exchange for Mento + Governance tokens (veMENTO). +3. Governor: A contract that allows any user to create new Mento Governance proposals. +4. Governance Executor: The main governance contract serves two functions: + - Executing queued proposals that have passed governance voting + - Community treasury that stores the governance allocation for future initiatives. It is time-locked + to allow the Mento Watchdog Multisig to veto proposals that are deemed malicious. It will also hold + Mento Community Treasury funds. + - Emission Contract: A contract that emits MENTO tokens from its allocation to the Mento Governance + Executor on a predefined schedule. It follows an exponential decay function, which means that new + emissions will get smaller and smaller until the entire allocation has been emitted around the year 2060. +5. Governance Factory: The smart contract that deploys the entire governance system with all relevant contracts. + It is used only once to set up the system and can’t be used again after governance exists. +6. Watchdog Multisig: a multisig that consists of technical community members responsible for making sure that + the execution code of the proposals matches their description (described further in this proposal below). +7. Proxy Admin: An admin contract owned by the Mento Governance Executor that can upgrade the following contracts in the system: + - Mento Governance Executor + - Mento Governor + - Mento Token + - Emissions contract + - veMENTO Locking + +## Governance Scope + +The Mento Protocol consists of the following elements: + +- A suite of Smart Contracts deployed on the Celo Mainnet: + - StableTokenXXXProxy (for all Mento Stables) + - ReserveProxy + - BrokerProxy + - BiPoolManagerProxy + - BreakerBoxProxy + - MedianDeltaBreaker + - ValueDeltaBreaker +- Reserve funds which are held on Celo, Ethereum, and Bitcoin blockchains in a variety of ways: + - Custodians; + - Multi-signature wallets; + - LP tokens on Reserve positions in various pools; + - ReserveSpenderMultisig rights + +Mento Governance will receive control over all of the pieces mentioned above as part of the governance transition process. +This proposal will only create the token and governance system, so we can test it before we fully transition. + +## Initial Token distribution + +MENTO token will have a maximum total supply of 1,000,000,000 (one billion) tokens. +Overall distribution was defined by the Mento Community and will be as follows: + +- 45% for: Mento Community Treasury (5% upfront, 40% emissions over a schedule) +- 30% for: Mento Labs Team, Investors, Future Hires, and Advisors +- 10% for: Mento Liquidity Support +- 5% for: Airdrop to Celo and Mento Stable Asset users +- 5% for: Airdrop to Celo Community Treasury +- 5% for: Mento Reserve Safety fund + +### Mento Community Treasury + +Purpose: The Mento community can spend tokens from the treasury to foster the Mento Platform’s development. +The tokens can be spent on grants, liquidity incentivization programs, etc. The decision to spend tokens from +the Treasury is always subject to Governance. To incorporate the will of the community the +Mento Protocol Foundation will be set up. + +Distribution: 450M tokens (45% of total supply) with 50M available at Genesis Block. The tokens will be +emitted to the Treasury via exponential decay with a half-life of 10 years. + +Voting rights: No + +### Mento Labs Team, Investors, Future Hires, Advisors + +Purpose: Reward core contributors, investors, and advisors. Get the best talent to contribute to the Mento Protocol in the future. + +Distribution: 300M tokens (30% of total supply). Existing Mento Labs employees, investors, and advisors will receive their MENTO tokens split into two parts: + +1. veMENTO portion (25% of the allocation) + To seed voting power to the team and investors, 25% of the allocation will be distributed as veMENTO locked for + 1 year starting at the token distribution event. The allocation will allow team members to vote from day one using delegation. + However, the beneficiary will only get full control of the lock after their cliff period has passed. +2. MENTO portion (75% of the allocation) 75% as MENTO with a 1-year delay and 3 years linear vesting starting + at the token distribution event. This means the plan will kick in 1 year later, and linearly unlock for the subsequent years. + +Voting rights: Yes, with the veMENTO portion. + +### Mento Liquidity Support + +Purpose: The purpose of the Mento Liquidity Support is to support the Mento ecosystem through funding mission-aligned initiatives. +The focus of this allocation is to support the liquidity of the MENTO token and the Mento Platform stablecoins. + +Distribution: 100M (10% of fully diluted supply) + +Voting rights: No + +### Initial Airdrop to CELO holders and Mento stable assets users + +Purpose: Reward existing community members and users for their past contributions to developing and using Mento stable assets and the Celo ecosystem. + +Distribution: 50M tokens (5% of the fully diluted supply). Eligible address owners can claim their allocation, +which they will receive as a veMENTO locked for 2 years with linear unlock. Further details about the eligibility criteria are provided below. + +Voting rights: Yes. + +### Airdrop to Celo Community Treasury + +Purpose: Long-term incentive alignment between the Celo and Mento communities. + +Distribution: 50M (5% of fully diluted supply) with a 2-year delay followed by a 6-year linear vesting period via Hedgey 5 token vesting platform. + +Voting rights: No + +### Mento Reserve Safety Fund + +Purpose: An allocation to the Mento Reserve will be used as stablecoin collateral in the worst-case scenario of a loss-of-value +in primary collateral (USDC, DAI, etc.) through credit default events, hacks, etc. + +Distribution: 50M (5% of fully diluted supply) + +Voting rights: No + +## Transferability + +The MENTO token will be non-transferable at the genesis block (token and governance deployment block). +Holders can claim their allocation, lock it as veMENTO, and participate in governance, but not transfer the token. +At some point in the future, when certain milestones to be decided by the community are reached, +the transferability of the token can be turned on through a Mento governance proposal. + +## What’s in it for CELO stakeholders + +Having been incubated primarily by the Celo ecosystem, Mento recognizes this support and aims to reward CELO stakeholders +to keep them involved and continue to have a strong relationship with Celo. + +A total of 100M (10% of the total supply) Mento Tokens, equivalent to 16.67% of the initial supply, is allocated for +Celo stakeholders between the Celo Community Treasury allocation and the CELO holders and cStables user airdrop. + +### Airdrop to Celo Community Treasury + +At Genesis, 50M MENTO will be allocated to the Celo Community Treasury (unlocking over 8 years). +This allocation aims to provide the Celo ecosystem with long-term upside and influence in the Mento Protocol. +It can also be used to support cStable and other Mento stable token utilities further on the Celo network. + +### CELO Holders and cStables user airdrop eligibility criteria + +The distribution of the MENTO token will start with an airdrop to CELO holders and early cStable users. +Mento recognizes that their early support has been pivotal for the protocol, and these users are well-suited to govern it, +given the history of Mento Improvement Proposals that have been voted on in Celo Governance. + +50M MENTO will be distributed in the initial airdrop to users based on the following criteria: + +- Staked at least $10 (US dollars) worth of CELO (amount based on avg. over 16 monthly snapshots, + taken between November 15th, 2022, and February 15th, 2024); +- Held more than $10 (US dollars) worth of any of Mento’s decentralized stable assets (amount based on avg. over 16 monthly snapshots, + taken between November 15th, 2022, and February 15th, 2024); +- Transacted in any of Mento’s decentralized stable assets with a volume greater than $100 (US dollars) + (volume calculated as the cumulative sum over the 16 monthly snapshots between November 15th, 2022, and February 15th, 2024). + +Claimable amounts are concave (think square root) in the balances of locked CELO and Mento stablecoins, as well as the Mento stablecoin volumes: + +- 50% allocated to locked CELO holders +- 50% allocated to Mento stablecoin holders + +The airdrop period will last for 8 weeks. After it finishes, an unclaimed part of community allocation will be returned to Mento Treasury for future airdrops. + +## Watchdog + +At the start, the Mento protocol will establish a watchdog group to oversee the protocol’s governance process and ensure technical +parts of the governance proposals (execution code) match what’s written in the proposal. + +The group is controlled by a 3 out of 9 SAFE multi-signature wallet (multisig) with a special right to veto +(meaning to cancel the execution of) any governance proposal within 48 hours after it passes. + +The following criteria are considered for the first proposal of watchdog members. A watchdog committee member should: + +- be mission-aligned with Mento Protocol and Celo community; +- be an active contributor to one of the projects in the Celo ecosystem; +- have a technical background, given that the one and only responsibility is to review the proposal’s execution code. + +List of proposed members of the Mento watchdog committee: + +- Bogdan Dumitru (CTO, Mento Labs). +- Bayo Sodimu (Head of Engineering, Mento Labs). +- Phillip Paetz (Software Engineer, Mento Labs). +- Baransel Tekin (Software Engineer, Mento Labs). +- Luuk Weber (Founder, Kolektivo Labs). +- Martin Chrzanowski (Software Engineer, cLabs). +- Martin Volpe (Software Engineer, cLabs). +- Silas Boyd-Wiziker (CTO, Valora). +- Marek Olszewski (CTO, cLabs). + +The watchdog multisig was deployed with address 0xE6951C4176aaB41097C6f5fE11e9c515B7108acd. + +## Proposal details + +### Mento Protocol Governance Creation + +The spin-off and Governance transition plan will be executed in two steps: + +1. This proposal spins up the MENTO token, governance, locking, and airdrop contracts. +2. A follow-up proposal will come later, and governance rights will be transferred over the above-mentioned contracts. + +This allows the system to spin up and allows us to test governance in isolation before executing the full transfer. + +The governance spin-off, which is the subject of this proposal, happens through the factory contract, which can be found [here](https://github.com/mento-protocol/mento-core/blob/develop/contracts/governance/GovernanceFactory.sol). + +Through the `createGovernance` method, the factory contract does the following: + +1. Deploys an OpenZeppelin ProxyAdmin. +2. Deploys the Mento Token 2 which during construction mints the initial allocation following the distribution above. +3. Deploys the Emissions contract which will be responsible for the minting of the MENTO tokens to the Treasury according to the minting schedule. +4. Deploys the Airdrop contract 3 which community members will be able to redeem against. +5. Deploys the Locking contract which will be used to lock MENTO for veMENTO to participate in the Governance. +6. Deploys the OpenZeppelin TimelockController which will manage the timelock for the Governance proposals and ultimately act as the ProxyAdmin controller and treasury for the protocol. +7. Deploys the MentoGovernor, an instance of OpenZeppelin’s Governor configured for our needs. It will use the TimelockController from step (6). +8. Sets ownership of all the contracts deployed in steps 1-5 to the TimelockController from step (6). + +### Mento Protocol Foundation Setup + +To support the on-chain Mento Protocol DAO a Mento Protocol Foundation is being established which is supposed to support Mento ecosystem +growth - a foundation that is helping to execute the will of the community. To finance this foundation during times in which the MENTO +token is non-transferable, this proposal suggests that a loan of 800k USD and a maturity of 1 year is provided by the Mento Reserve to +the Mento Protocol Foundation. The loan amount is to be financed from the BTC and ETH part of the Mento Reserve and will be used to cover +entity setup costs, legal costs as well as early foundation expenses required for fostering Mento ecosystem growth. It is expected that +the foundation will receive funding from the Mento Community Fund going forward to repay the loan and to cover future expenses. + +## Verification + +The whole deployment code has been audited, intent can be verified by reading the code. There is a single function call in the proposal: + +**createGovernance**: + +- watchdogMultisig\_: address == 0xE6951C4176aaB41097C6f5fE11e9c515B7108acd +- airgrabRoot: bytes32 can be verified here: https://github.com/mento-protocol/mento-deployment/blob/main/data/airgrab.celo.root.json +- fractalSigner: address can be verified here: https://docs.developer.fractal.id/legacy-integrations/fractal-credentials-api#environments +- allocationParams: MentoAllocationParams: should match the allocation description in the proposal. + +There are additional parameters that are staticially defined in the GovernanceFactory contract: + +``` +// Airgrab configuration +uint32 public constant AIRGRAB_LOCK_SLOPE = 104; // Slope duration for the airgrabbed tokens in weeks +uint32 public constant AIRGRAB_LOCK_CLIFF = 0; // Cliff duration for the airgrabbed tokens in weeks +uint256 public constant AIRGRAB_DURATION = 10 weeks; +uint256 public constant FRACTAL_MAX_AGE = 180 days; // Maximum age of the kyc for the airgrab +uint256 public airgrabEnds; + +// Governance Timelock configuration +uint256 public constant GOVERNANCE_TIMELOCK_DELAY = 2 days; + +// Governor configuration +uint256 public constant GOVERNOR_VOTING_DELAY = 0; // Delay time in blocks between proposal creation and the start of voting. +uint256 public constant GOVERNOR_VOTING_PERIOD = 120_960; // Voting period in blocks for the governor (7 days in blocks CELO) +uint256 public constant GOVERNOR_PROPOSAL_THRESHOLD = 10_000e18; +uint256 public constant GOVERNOR_QUORUM = 2; // Quorum percentage for the governor +``` + +## Risk + +This proposal doesn't change anything in the Celo Protocol, it just seeds Mento Protocol Governance, therefore it currently poses no risk. +After the proposal passes and the airdrop starts, we will do more testing to ensure that the governance system works as intended and reaches +equilibrium before transfering Mento Protocol ownership as described in the Governance scope section. diff --git a/CGPs/cgp-0139/mainnet.json b/CGPs/cgp-0139/mainnet.json new file mode 100644 index 00000000..2b50ff6f --- /dev/null +++ b/CGPs/cgp-0139/mainnet.json @@ -0,0 +1,29 @@ +[ + { + "contract": "GovernanceFactory", + "address": "0xee6CE2dbe788dFC38b8F583Da86cB9caf2C8cF5A", + "function": "createGovernance", + "args": [ + "0xE6951C4176aaB41097C6f5fE11e9c515B7108acd", + "0x1c598bb5ad0b99c0f07235c1bd7327884bf9a74c9454c3d2a937fbe8336d071b", + "0xacD08d6714ADba531beFF582e6FD5DA1AFD6bc65", + [ + "50", + "50", + [ + "0x655133d8E90F8190ed5c1F0f3710F602800C0150", + "0xA74Ac93de1A209957E62391B01E09161277a9ffC", + "0x3468D23A0B1aB3Ab9A537813166A8f7ff1947014", + "0x87647780180B8f55980C7D3fFeFe08a9B29e9aE1" + ], + [ + "300", + "100", + "50", + "50" + ] + ] + ], + "value": "0" + } +]