Launch of $cCOP, Colombia’s First Decentralized Stablecoin

Dear all Celo Community

CeloColombia DAO, with the support of Mento Labs and the local community, is excited to propose the launch of $cCOP, a decentralized stablecoin for Colombia.

Why Colombia and Why $cCOP?

We propose $cCOP, a stablecoin pegged to the Colombian Peso (COP), built on the Mento Platform within the Celo blockchain.

The name $cCOP stands for “Colombian Peso” offering Colombians a familiar and trusted financial tool that seamlessly integrates into their daily lives.

By introducing $cCOP, we aim to make cryptocurrency more accessible and relevant for everyday transactions in Colombia, allowing users to participate in the crypto space while staying grounded in their local currency.

The launch of $cCOP not only reflects a direct connection to the Colombian Peso but also symbolizes our commitment to empowering the Colombian people and driving economic growth through decentralized technology.

Community-Led and Decentralized

$cCOP will be governed by CeloColombia DAO, embodying a community-led vision similar to other Mento stablecoins like cUSD, cEUR, and cREAL. Unlike fiat-backed or centrally controlled stablecoins, $cCOP will have no banking footprint or central custodian. It will operate through smart contracts with no single entity controlling its supply, ensuring decentralization, transparency, and resilience.

Our goal is to provide a reliable, stable alternative for Colombians who want to engage with the crypto world without the complexities of foreign currencies. With $cCOP, businesses and individuals will have a tool for smooth financial transactions, fostering broader economic growth in Colombia.

Colombia’s Growing Crypto Landscape

Colombia ranks 15th globally in cryptocurrency adoption, and is among the top 5 in Latin America. With over $70 billion in monthly crypto transactions and more than 600 outlets in the country accepting cryptocurrencies, Colombia is an active hub in the crypto ecosystem.

Remittances also play a significant role in the economy, with inflows reaching $9.4 billion in 2022. $cCOP can provide an efficient, low-cost solution for remittances and other financial services, further driving adoption in the country.

However, Colombia’s crypto market has lacked a stable, peso-pegged option, and previous attempts have failed, eroding trust in the ecosystem. $cCOP, as a decentralized, transparent alternative, has the potential to restore confidence and provide a trustworthy stablecoin for everyday use.

The Path Forward

We believe $cCOP can serve as a stable bridge between Colombia’s traditional financial system and the emerging world of decentralized finance. By tackling challenges like liquidity, adoption, and trust, $cCOP has the potential to become an essential tool for everyday transactions, remittances, and commerce.

Mento Labs Involvement

Mento Labs will provide the technical infrastructure needed to develop and launch the $cCOP stablecoin on the Mento Platform.

CeloColombia DAO will handle the governance and promote community engagement, ensuring that $cCOP meets the needs of the Colombian people. Together, we aim to enhance stability, trust, and utility within Colombia’s evolving crypto ecosystem.

Mento Labs has extensive experience in building decentralized stablecoins for other currencies, such as $PUSO, $cKES, $cREAL, $eXOF, $cEUR, and $cUSD. The infrastructure developed for $cCOP will leverage Mento’s proven framework, ensuring a secure and scalable platform for Colombia’s first peso-pegged decentralized stablecoin.

Notably, all Mento stablecoins, including $cCOP, can be used to pay for gas fees on the Celo blockchain, making transactions more seamless for users. The Mento Asset Exchange allows users to trade $cCOP and other Mento or non-Mento stablecoins (e.g., USDT and USDC) at respective FX rates. It operates as a virtual AMM (Automated Market Maker), with the Mento Reserve acting as a liquidity provider.

Key features of the Mento Asset Exchange for $cCOP include:

  • Liquidity for $cCOP does not need to be pre-provided; it is minted or burned during swaps.
  • This mechanism ensures efficient trading, allowing slippage and throughput to be optimized without relying on external liquidity providers.

A range of safety mechanisms, such as on-chain circuit breakers and trading limits, can be configured for each trading pair, enhancing security. More details can be found in the official Mento documentation.

Proposed Logo


We look forward to engaging with the community and discussing the next steps for $cCOP’s success.

17 Likes

I’ve always believed there was a real need for this, I’m beyond excited for this launch! This is something I’ve been anticipating for a long time and now it’s happening

6 Likes

I believe in this wonderful proposal 100 % and I think is near this launching!!!

I am really so excited with the real financial will democratizing crypto Colombian currency. A real crypto decentralized and the better a steblecoin!

The idea is simple and the power is huge!!! It´s time to give life coming soon.

5 Likes

yes, but when #cCOP?

5 Likes

The idea is coming soon!

4 Likes

Super excited about $cCOP! The Mento Labs team is proud to support this initiative and provide the technical infrastructure. On our end, everything is ready for cCOP.

With a large population of Colombians living abroad, remittances are a significant part of the economy, and crypto is increasingly being used as a faster, cheaper alternative for cross-border payments. Additionally, a local currency stablecoin can help make capital more accessible by supporting local credit and lending projects.

6 Likes

Excited to see this finally come to life! Looking forward to exploring the possibilities with a Colombian stablecoin.

4 Likes

I’m excited to learn about the launch of $cCOP, a stablecoin pegged to the Colombian Peso. This is a significant development for Colombia as it makes cryptocurrency accessible for everyday use, whether for remittances, payments, or savings, without the need for a bank.

This initiative empowers Colombians with a decentralized financial tool they can trust. Furthermore, it paves the way for other Latin American countries to adopt similar measures, fostering growth in the region through crypto innovation. I strongly believe that $cCOP can have a positive impact on Colombia and beyond!

4 Likes

I support this initiative! Fantastic idea and community support!

4 Likes

This is very exciting! Looking forward to seeing how $cCOP can transform financial accessibility and resilience in Colombia, bringing more people into the digital economy with local currency stability at the core.

4 Likes

I’m all in for this initiative!
Colombia is one of the most active Latin American countries in crypto, with significant activity in both transactions and remittances. However, we still don’t have a trusted, peso-pegged stablecoin that meets the needs of everyday users.
$cCOP could fill that gap perfectly.

This won’t be just another crypto token—$cCOP would make crypto more accessible and relevant for daily life. By making it reachable to the entire community and moving away from the fluctuations of foreign currencies like the dollar or euro, Colombians would benefit from the stability of their local currency while tapping into the world of decentralized finance.

This could be a game-changer for our country, empowering more people to join the digital economy while staying connected to what they know and trust.

4 Likes

I’m a big fan of the concept of cCOP and the potential of the Colombian market! I am in favor of making this happen.

7 Likes

That’s excellent news for the Colombia blockchain ecosystem. :rocket:

5 Likes

oh wow! it’s great to see this initiative coming to live!!

decentralized local stablecoins is the way forward!

4 Likes

this initiative is very good ! Go !

3 Likes

Amazing, Celo’s stablecoin roster increases again!

3 Likes

Hey everyone! The first proposal to enable the needed oracles for the launch of $cCOP is already out:

A second proposal for the official launch of $cCOP will soon follow.

This post provides an overview of the transactions to whitelist the Chainlink relayer contracts that will report the rates needed for the cCOP. As with previous proposals, the Celo community will have the opportunity to verify these transactions. In preparation for the upcoming CGP, we have completed the following steps:

  • Tested the proposal on Alfajores
  • Simulated the proposal on a fork of Celo Mainnet and conducted tests against this fork

The transactions included in the upcoming CGP will be categorized as follows, with transaction indices noted in brackets:

  1. Whitelisting and configuring Chainlink Relayers in SortedOracles (0-3)
  2. Configuring rate feed aliases in SortedOracles (3-4)

Before we dive into the details of each section and transaction, we recommend setting up celocli to follow along. For those technically inclined, you can find everything described here in our deployment tooling repository. For verifying the addresses included in the proposal, please refer to the Appendix at the bottom for helpful tips.

1. Whitelisting and configuring of Chainlink Relayers in SortedOracles

In a previous Mento upgrade, a Chainlink Relayer contract was introduced.

The ChainlinkRelayer transmits rate feed data from a single Chainlink price feed or an aggregation of multiple Chainlink price feeds to the SortedOracles contract.

This contract can aggregate multiple price feeds to provide derived rate feeds to the protocol. This is necessary because it is more efficient for Oracle providers to report FX rates against the dollar and crypto-asset rates against the dollar, rather than providing all possible combinations.

For example, Chainlink reports the COP/USD rate for the Colombian Peso, but it does not directly provide the CELO/COP rate, which is needed for gas payments in a COP stable token. However, by using both the COP/USD and CELO/USD rates, the following path can be derived:

CELO/USD * inverse(COP/USD) = CELO/COP.

A separate ChainlinkRelayer instance will be deployed for each required rate feed.

TX#0 - whitelist CELO/COP Relayer in SortedOracles - addOracle()

  • Verify the SortedOracleProxy address
  • Verify the Rate Feed Identifier
    • address(uint160(uint256(keccak256(abi.encodePacked("relayed:CELOCOP”)))));
  • Verify the ChainlinkRelayer address

TX#1 - configure CELO/COP token report expiry time in SortedOracles - setTokenReportExpiry()

  • Verify the SortedOracleProxy address
  • Verify the Rate Feed Identifier
    • address(uint160(uint256(keccak256(abi.encodePacked("relayed:CELOCOP”)))));
  • Verify Report Expiry Seconds
    • 6 minutes = 360

TX#2 - whitelist COP/USD Relayer in SortedOracles - addOracle()

  • Verify the SortedOracleProxy address
  • Verify the Rate Feed Identifier
    • address(uint160(uint256(keccak256(abi.encodePacked("relayed:COPUSD”)))));
  • Verify the ChainlinkRelayer address

TX#3 - configure COP/USD token report expiry time in SortedOracles-setTokenReportExpiry()

  • Verify the SortedOracleProxy address
  • Verify the Rate Feed Identifier
    • address(uint160(uint256(keccak256(abi.encodePacked("relayed:COPUSD”)))));
  • Verify Report Expiry Seconds
    • 6 minutes = 360

2. Configuring rate feed alias in SortedOracles

SortedOracles now has a new feature for equivalent tokens. When a token is configured with an equivalent token, SortedOracles will return the median rate of the equivalent token when queried. This feature was first used for gas payments with USDC by setting its equivalent token to cUSD.

This update also allows us to eliminate the distinction between rate feeds for tokens and those derived from identifiers.

In the context of cCOP, this means we can report to the rate feed defined by the canonical ID: relayed:CELOCOP, and then have the address of cCOP point to that for gas payments.

TX#4 - configure equivalent token for CELO/COP rate in SortedOracles-setEquivalentToken()

  • Verify the SortedOracleProxy address
  • Verify the token address
    • StableTokenCOPProxy address
  • Verify the Rate Feed Identifier
    • address(uint160(uint256(keccak256(abi.encodePacked("relayed:CELOCOP”)))));

Appendix: Verifying an address

Verifying that an address in the CGP is correct requires a few different strategies depending on what that address is (see the mento docs for some additional information). Here are common situations:

  • Is it a rate feed identifier like: address(uint160(keccack256(”relayed:CELOCOP”)))
    • Use Keccak-256 Online 2 to compute the keccak
    • Take the last 40 characters (20 bytes) of the keccak and compare with the value
  • Is it a Mento contract?
  • Is it a Core Celo contract?
    • Yes:
      • It’s probably GoldToken or FeeCurrencyWhiteList which can be both verified in the Celo Registry
2 Likes

Hi folks,

A proposal to officially launch $cCOP was submitted yesterday and it’s available for voting:

This post outlines the transactions that will be part of the activation of $cCOP and the creation of a new Mento pair cUSD/cCOP, to be proposed by CeloColombia DAO. As with previous proposals, the Celo community will have the opportunity to verify these transactions. In preparation for the upcoming CGP, we have done the following:

  • Tested the proposal on Alfajores
  • Simulated the proposal on a fork of Celo Mainnet, in addition to running tests against the fork

The prerequisite work for $cCOP activation has been done in a recent proposal:

The transactions that will be in the upcoming CGP will be broken down into the following sections, noted here with transaction indices in brackets:

  1. Initialization of the cCOP stable token (0-6)
  2. Configure the new exchange (7)
  3. Configure trading limits (8-9)
  4. Configure BreakerBox (10-11)
  5. Configure the MedianDeltaBreaker (12-14)

Before we dive deep into each section and transaction, we recommend you have celocli set up to follow along. For the tech savvy, you can find everything we are describing here in our deployment tooling repository as code. For verifying that addresses included in the proposal are correct, please refer to the Appendix at the bottom for some handy tips.

1. Initialization of the cCOP stable token

This includes all the transactions related to registering cCOP as an official mento stable token: initializing the token contract, configuring its constitution parameters, adding it to the reserve, and whitelisting it as a gas currency.

TX#0 - initialize the cCOP proxy token contract and set its implementation address
This proxy contract was deployed and verified on Celo’s mainnet and points to the new StableTokenV2 implementation contract. Immediately after, ownership of the proxy contract was transferred to governance.

  • Verify the StableTokenCOPProxy address
  • Verify the StableTokenV2 implementation address
  • Verify the initialization parameters for the new stable token:
    • name: Celo Colombian Peso
    • symbol: cCOP
    • initialBalanceAddresses: [] (no pre-mint)
    • initialBalanceValues: [] (no pre-mint)

TX#1 - Call StableTokenV2 initializer

  • Verify the StableTokenCOPProxy address
  • Verify the StableTokenV2 implementation address
  • Verify the initialization parameters:
    • broker: - Verify the broker proxy address
    • validators: - Verify the validators address
    • exchange: address(0) - Exchanges have been deprecated and replaced by the broker

TX#2 - set constitution parameters for transfer(address,uint256)

  • Verify the GovernanceProxy address
  • Verify the StableTokenCOPProxy address
  • Verify the function selector: bytes4(keccak256(bytes("transfer(address,uint256)")))
  • Verify the threshold: 0.9 * 1e24 (same as existing stables)

TX#3 - set constitution parameters for transferWithComment(address,uint256,string)

  • Verify the GovernanceProxy address
  • Verify the StableTokenCOPProxy address
  • Verify the function selector: bytes4(keccak256(bytes("transferWithComment(address,uint256,string)")))
  • Verify the threshold: 0.6 * 1e24 (same as existing stables)

TX#4 - set constitution parameters for approve(address,uint256)

  • Verify the GovernanceProxy address
  • Verify the StableTokenCOPProxy address
  • Verify the function selector: bytes4(keccak256(bytes("approve(address,uint256)")))
  • Verify the threshold: 0.6 * 1e24 (same as existing stables)

TX#5 - add cCOP as a stable token to the Reserve

  • Verify the ReserveProxy address
  • Verify the StableTokenCOPProxy address

TX#6 - whitelist cCOP as a gas currency

  • Verify the FeeCurrencyWhitelistProxy address
  • Verify the StableTokenCOPProxy address

2. Configure the new exchange

:warning: Verification tip: As in previous proposals, we recommend ignoring the args field from celocli and focusing on params, as well as ignoring the numbered fields and instead focusing only on the named fields. This is due to how nested structs are serialized by celocli, which might make the payload look confusing.

The pool configuration structures are documented here: https://docs.mento.org/mento/developers/smart-contracts/bipoolmanager

TX#7 - create the cUSD/cCOP exchange

  • Verify the BiPoolManagerProxy address
  • Verify the exchange configuration

3. Configure trading limits

Similar to the previous section, the output of celocli is too verbose when dealing with arguments and structs, so it’s recommended to ignore args and numbered fields and to focus instead on params and named fields.

The TradingLimit.Config structure is documented here: TradingLimits | Mento Protocol

TX#8 - configure trading limits on cUSD for the cUSD/cCOP exchange

  • Verify BrokerProxy address
  • Verify the arguments:
    • exchangeId: the deterministic id of the cUSD/cCOP exchange
    • token: which asset in the pair to target, in this case, the cCOP token address
    • config: the trading limit configuration

TX#9 - Configure trading limits on cCOP for the cUSD/cCOP exchange

  • Verify Broker address
  • Verify the arguments:
    • exchangeId: the deterministic id of the cUSD/cCOP exchange
    • token: which asset in the pair to target, in this case, the cCOP token address
    • config: the trading limit configuration

4. Configure BreakerBox

Here we configure the BreakerBox to ensure it monitors changes to the new COP/USD rate.

TX#10 - adding rate feeds to the BreakerBox:

  • Verify the BreakerBox address
  • Verify the arguments:
    • newRateFeedIDs an array of oracle feed ids. In this case, the array only contains the id of COP/USD
      • COP/USD - address(uint160(uint256(keccak256("relayed:COPUSD"))))

TX#11 - enable the MedianDeltaBreaker on the COP/USD rate feed

  • Verify the BreakerBox address
  • Verify the arguments:
    • breakerAddress should be the MedianDeltaBreaker
    • rateFeedID should be the identifier for the COP/USD rate, i.e. address(uint160(uint256(keccak256("relayed:COPUSD"))))
    • enable true

5. Configure the MedianDeltaBreaker

These transactions configure the MedianDeltaBreaker with the appropriate values needed to determine when the breaker should trip for the COP/USD rate feed and how much time should pass before the breakers can be reset.

TX#12 - set the cooldown time on the MedianDeltaBreaker for the COP/USD rate feed

  • Verify the MedianDeltaBreaker address
  • Verify the arguments:
    • rateFeedIDs: the array of rate feeds to configure:
      • COP/USD: address(uint160(uint256(keccak256("relayed:COPUSD"))))
    • cooldownTimes: the array of cooldown times to be configured per rate feed. The values are in seconds.
      • COP/USD: 15 minutes = 900s

TX#13 - set the rate change thresholds on the MedianDeltaBreaker for the COP/USD rate feed

  • Verify the MedianDeltaBreaker address
  • Verify the arguments:
    • rateFeedIDs: the array of rate feeds to configure:
      • COP/USD: address(uint160(uint256(keccak256("relayed:COPUSD"))))
    • rateChangeThresholds: The array of rate change thresholds to be configured per rate feed. The values are fixed-point numbers – a number with 24 decimals, i.e. 1 is written as 1e24.
      • COP/USD: 4e22 = 4%

TX#14 - set the smoothing factor on the MedianDeltaBreaker for the COP/USD rate feed

  • Verify the MedianDeltaBreaker address
  • Verify the arguments:
    • rateFeedID: The id of the rate feed to be updated
      • COP/USD: address(uint160(uint256(keccak256("relayedCOPUSD"))))
    • newSmoothingFactor: The new smoothing factor value. The value is a fixed point number, similar to the rate change threshold.
      • COP/USD: 5e21 = 0.5%

Appendix: Verifying an address

Verifying that an address in the CGP is correct requires a few different strategies depending on what that address is (see the mento docs for some additional information). Here are common situations:

  • Is it a rate feed identifier like: address(uint160(keccack256(”relayed:COPUSD”)))
    • Use Keccak-256 Online 2 to compute the keccak
    • Take the last 40 characters (20 bytes) of the keccak and compare with the value
  • Is it a Mento contract?
  • Is it a Core Celo contract?
    • Yes:
      • It’s probably GoldToken or FeeCurrencyWhiteList which can be both verified in the Celo Registry

We are very excited to have partnered with CeloColombia DAO and look forward to the use cases that $cCOP will enable. If you would like to deploy a stable token on top of the Mento Platform we would love to hear from you as well. Please join our discord and reach out.

5 Likes

Hey Mento team! :tada:

Big thanks for your thorough breakdown and ongoing support! :raised_hands: We’re beyond excited to have Mento Labs helping us bring $cCOP to life :rocket:. Your testing, simulations, and technical expertise :wrench: give us so much confidence that everything is on the right track.

We believe $cCOP will unlock amazing opportunities for Colombians :colombia: – from easier remittances :earth_africa: to smoother everyday transactions :shopping_cart:, all while keeping things simple with local currency :dollar:. With your help, we’re building not just a stablecoin but a tool for real financial empowerment :muscle:.

Let’s make this a game-changer together! :fire: We’re pumped to see the magic we can create with $cCOP and can’t wait for what’s next.

Unergy is looking forward for this! We already have a working bridge in Celo for our token, and the use of $cCOP could bring some interesting use cases. We are considering on opening a $cCOP/uWatt liquidity pool once it is out, and we are also open to offer support needed for other initiatives around the $cCOP.

1 Like