--- cgp: 232 title: "Celo's Next Chapter: Opera Transition from Distribution Partner to Network Stakeholder" date-created: 2026-03-18 author: "Pavel Hornak" status: DRAFT discussions-to: https://forum.celo.org/t/celos-next-chapter-opera-proposal-to-transition-from-distribution-partner-to-network-stakeholder/13124 governance-proposal-id: date-executed: --- ## Overview This governance proposal transfers 160,000,000 CELO from the `CeloUnreleasedTreasury` contract to an Opera-controlled Safe, transitioning Opera from a distribution partner to a long-term network stakeholder. The transfer uses a temporary registry swap pattern (same as [CGP-0207](https://github.com/celo-org/governance/blob/main/CGPs/cgp-0207.md)). This proposal marks the first joint initiative from Celo Core Co. following the recent unification of cLabs and the Celo Foundation ([Celomorphosis](https://x.com/Celo/status/2013627730227519755)). ## Motivation Opera has driven meaningful user adoption of Celo through MiniPay, the self-custodial stablecoin wallet that has surpassed 13M users across 66 geographies, with over 40 Mini Apps and real-world use cases. The partnership has produced all-time highs in network activity with 700K+ DAUs and 4.23M+ WAUs of USDT — more than any other chain. The current structure of recurring governance proposals limits long-term planning. This proposal shifts the partnership from a short-term, proposal-based funding model to a long-term, aligned partnership by: - Transitioning Opera from a distribution partner to a full network stakeholder and CELO holder - Replacing the quarterly proposal model with a one-time lump-sum transfer of 160M CELO - Removing recurring governance overhead while preserving the Community Fund - Capping Opera's governance voting power at 10% of total staked CELO (as reported by [mondo.celo.org](https://mondo.celo.org/)), with the exception of protocol emergencies Opera also brings access to hundreds of millions of users globally, including 60M Opera Mini users with access to points ready to potentially convert to cash redemption within MiniPay. ## Specification This proposal requests a one-time transfer of 160,000,000 CELO from the unreleased treasury to an Opera-controlled Safe to support a three-year partnership. ### Payment Terms | Milestone | CELO | $ Value at 30d-avg of $0.0771 | | --- | --- | --- | | Community Grants (2026 – Q3 2029) | 95,802,412.45 | $7,386,366 | | CELO Native Token Integration | 3,242,542.15 | $250,000 | | Ramp Infrastructure & Maintenance | 3,242,542.15 | $250,000 | | Expanded Asset Support and Forthcoming Product Launches | 10,700,389.11 | $650,000 | | Additional Growth Budget | 46,368,352.79 | $3,575,000 | | **TOTAL** | **159,356,238.65** | **$12,286,366** | The requested CELO will be transferred in a single transaction to an Opera-controlled Safe upon approval of the proposal. ### Metrics Success will be evaluated across adoption, ecosystem growth, and engagement metrics including: MiniPay active user growth, Mini App launches and usage, transaction volume, onchain activity driven through Opera-integrated products, and geographic expansion across priority markets (LATAM, Southeast Asia, APAC, Sub-Saharan Africa). Quarterly reporting will continue as established: - [Season 2 Funding Request](https://forum.celo.org/t/sustaining-and-expanding-minipay-as-celo-s-global-stablecoin-distribution-layer/) - [Q4 2025](https://forum.celo.org/t/minipay-update-q4-2025/) - [Q3 2025](https://forum.celo.org/t/minipay-update-q3-2025/) - [Q2 2025](https://forum.celo.org/t/minipay-update-q2-2025/) - [Q1 2025](https://forum.celo.org/t/minipay-update-q1-2025) ## Background — Technical Mechanism The `CeloUnreleasedTreasury` contract holds unreleased CELO tokens and exposes a `release(address to, uint256 amount)` function restricted to the `EpochManager` via the `onlyEpochManager` modifier. Since governance cannot directly call `release()`, a temporary registry swap is required to authorize the transfer. The contract's internal accounting (`remainingBalanceToRelease`) matches the actual balance (~287.7M CELO), so no storage correction is needed — the `release()` call will succeed as-is. This is the same registry swap pattern used in [CGP-0207](https://github.com/celo-org/governance/blob/main/CGPs/cgp-0207.md), with a different amount and recipient. ### Current On-Chain State | Field | Value | | ------------------------- | -------------------------------------------- | | Proxy address | `0x7A8c7a833565fc428cdFBa20FE03fAfb178A434f` | | remainingBalanceToRelease | ~287,713,538 CELO | | Actual balance | ~287,713,538 CELO | | EpochManager (registry) | `0xF424B5e85B290b66aC20f8A9EAB75E25a526725E` | | Governance | `0xD533Ca259b330c7A88f74E000a3FaEa2d63B7972` | ## Proposed Changes This proposal executes 3 transactions atomically: ### Transaction 1: Temporarily set Governance as EpochManager - **Destination**: `Registry.setAddressFor` - **Data**: Sets `EpochManager` registry entry to the Governance contract (`0xD533Ca259b330c7A88f74E000a3FaEa2d63B7972`) - **Value**: 0 - **Effect**: Allows the Governance contract (executing this proposal) to pass the `onlyEpochManager` check ### Transaction 2: Transfer 160,000,000 CELO - **Destination**: `CeloUnreleasedTreasury.release` - **Data**: Calls `release(0xF2eb5933F4585625157Fa8624a9AB91152aBD751, 160000000000000000000000000)` - **Value**: 0 ### Transaction 3: Restore EpochManager in Registry - **Destination**: `Registry.setAddressFor` - **Data**: Restores `EpochManager` to `0xF424B5e85B290b66aC20f8A9EAB75E25a526725E` - **Value**: 0 ### Json Script See [mainnet.json](cgp-0232/mainnet.json). ## Verification Verify the proposal transactions: ```bash celocli governance:show --proposalID --jsonTransactions cgp-0232-proposal.json --node https://forno.celo.org ``` Verify the EpochManager address is correctly restored after execution: ```bash cast call 0x000000000000000000000000000000000000ce10 "getAddressForStringOrDie(string)(address)" "EpochManager" --rpc-url https://forno.celo.org # Should return 0xF424B5e85B290b66aC20f8A9EAB75E25a526725E ``` Verify the treasury accounting is consistent: ```bash cast call 0x7A8c7a833565fc428cdFBa20FE03fAfb178A434f "getRemainingBalanceToRelease()(uint256)" --rpc-url https://forno.celo.org # Should be ~127.7M CELO (287.7M - 160M) ``` ## Risks - **Registry swap window**: Between transactions 1 and 3, the Governance contract is registered as `EpochManager`. Any contract querying the registry for `EpochManager` during this window would get the Governance address. Since all transactions execute atomically within a single governance execution, there is no window for external exploitation. - **Balance sufficiency**: The treasury currently holds ~287.7M CELO with matching `remainingBalanceToRelease`. The 160M transfer is well within bounds. - **Post-execution accounting**: After execution, `remainingBalanceToRelease` will equal ~127.7M CELO. Future `release()` calls by EpochManager will continue to work correctly. - **Governance concentration**: Opera's CELO holdings could give significant governance weight. This is mitigated by the agreed cap of 10% of total staked CELO for governance voting, with the exception of protocol emergencies. ## Useful Links - [Forum Discussion](https://forum.celo.org/t/celos-next-chapter-opera-proposal-to-transition-from-distribution-partner-to-network-stakeholder/13124) - [CeloUnreleasedTreasury Contract](https://github.com/celo-org/celo-monorepo/blob/master/packages/protocol/contracts-0.8/common/CeloUnreleasedTreasury.sol)