Celo is an open, decentralized platform that enables a monetary system that creates conditions of prosperity for all. It’s an ambitious project aiming to make it straightforward for anyone with a smartphone anywhere in the world to maintain a current account, send money to friends, and pay merchants.
The Celo whitepaper summarizes the project’s approach to achieving these goals. The project embraces a full-stack approach, where many innovations at different layers combine to make the technology stack meet the needs of the community’s various stakeholders. There’s a lot of detail in there, and this blog post aims to unpack some that detail. We will take a tour of the key components: subsequent posts will dive into the technical aspects of the various elements presented here.
Cryptocurrencies offer many benefits for transferring value compared to fiat currencies. They enable faster payments at lower costs with 24/7 global access. In addition, these new digital assets can be programmed allowing for new and more efficient forms of financial services. The challenge however, is crypto-assets are volatile and require long hexadecimal cryptographic addresses to transfer value — making them hard to use as a medium of exchange.
Therefore, for a cryptocurrency payments solution to prosper, it should offer stable-value assets and a frictionless user experience that makes exchanging value as simple as sending a text message. This is what Celo enables.
Celo, more specifically, is a mobile-first solution that’s composed of the following three elements:
- Lightweight identity for a better user experience
- Stability mechanism for stable-value currencies
- Incentives and governance system for platform sustainability
The above components are part of a proof-of-stake smart contract platform that’s based off Ethereum. The Celo protocol is powered by a native digital asset called Celo Gold and all Celo assets (Celo Gold and Celo stablecoins) are ERC-20 compliant to facilitate token distribution via decentralized exchanges. Details about this underlying core layer will be shared in a separate whitepaper.
To exchange cryptocurrencies today a receiver has to download a wallet, generate a public/private key pair, and then share the long hexadecimal address (derived from the public key) with the sender. Celo simplifies this by allowing people to send value to each other with only a phone number — bypassing the traditional approach of long complicated cryptographic addresses all together. In addition, if someone hasn’t yet registered on the Celo network (i.e. they haven’t yet proven that they own their phone number), the crypto-assets are held by the protocol until they verify themselves.
Celo enables mobile phone payments using something called “address-based encryption” (which is a variant of “identity-based encryption”). Address-based encryption ties a phone number to a Celo address (similar to an Ethereum address) so that when a payment is initiated the phone number can be used instead of the address, which simplifies the user experience. To preserve privacy, a hash of the phone number is stored on the blockchain rather than the phone number itself.
Verification occurs when a phone number is attached to a Celo address. Broadly speaking, it works in the following way:
- A user sends a request to attach their phone number to a public Celo address;
- Once the request is received by the network, three secure messages in the form of a text messages are sent to their phone number;
- The user broadcasts the signed secure messages back out to the network, proving ownership of their phone number;
- Once all signed messages are received by the network, the verification is considered successful and the phone number is marked as verified on the blockchain.
We’ll go over the technicality of the above in a separate blog post.
Additionally, if someone changes their phone number they can re-verify themselves with the new phone number attaching it to their original address.Therefore, several phone numbers can be tied to a single public Celo address. A user may also revoke or change the address associated to their phone number at any time.
It’s worth noting that this scheme could work with any identifier that can receive secure messages, not just phone numbers. IP addresses or bank routing and account numbers could be additional methods.
Finally, attaching phone numbers to Celo addresses enables capturing reputation (like a credit score). Celo uses EigenTrust for measuring this. It’s quite complicated to explain but in short EigenTrust is a decentralized algorithm where a phone number’s score is defined by the number of other phones who trust it weighted by their reputation scores (similar to how PageRank works).
One of the biggest barriers to adoption of cryptocurrencies as a medium of exchange is volatility. Stable-value currencies address this barrier whilst also removing price risk from financial contracts denominated in those currencies. Furthermore, enabling a family of stable-value assets (as opposed to just one currency) would allow the creation of regional and utility assets that would foster local economies and enable people to hedge price-risk with respect to the local goods and services they regularly use.
Celo therefore allows for multiple stable-value currencies where each coin is pegged to a measurable value such as the Dollar, Euro, basket of goods in Greece, the price of a barrel of oil, and more . Each Celo stablecoin maintains its peg by adjusting its supply to match demand. The family of stablecoins is collateralized via a basket of crypto-assets that acts as a reserve and that acts to absorb volatility risk.
How Stability is Achieved
The protocol has a fixed supply of Celo Gold (cGLD). Part of the cGLD will be activated at launch and the rest minted by the network over time. The majority of cGLD launch supply will be used to fund the reserve where it’s anticipated that 50% of cGLD will go to the reserve and 50% of cGLD will be used to buy crypto-assets (e.g. Bitcoin and Ether) to also be placed in the reserve. In the future, the reserve could also include natural-capital-backed assets such as tokenized forests.
Let’s look at what happens when there’s only one stablecoin. The first one will be Celo USD (cUSD) pegged to the US Dollar.
When the price of cUSD is above the peg it means there’s more demand for it than supply available. In such instances, the protocol expands the supply of cUSD by minting new cUSD and selling it for cGLD via a Uniswap-like decentralized exchange called CP-DOTO.
Similarly, when the price of cUSD is below the peg it means there’s less demand for it than supply available. In such instances, the protocol contracts supply by buying cUSD off the market in exchange cGLD from the reserve, again via a Uniswap-like decentralized exchange called CP-DOTO. The acquired cUSD is then destroyed by the protocol.
To encourage long-term holding of Celo Gold and to ensure that the reserve remains healthy, there’s a variable fee on Celo Gold transactions that goes to bolstering the reserve. The rate is based on the reserve ratio, which is defined as the value of the reserve with respect of the value (e.g. cUSD) to be stabilized — the lower the reserve ratio, the higher the transfer fee. In addition, if the reserve ratio is below target level, a substantial part of the block reward minted by the network gets allocated to the reserve.
A description of how the price stability protocol works in detail can be found in this blog post and an analysis of the stability characteristics can be found in the Stability white paper. In addition, a detailed description of how the expansion and contraction mechanism works (i.e. CP-DOTO) can be found in this blog post.
Family of Stablecoins
In the case where there are several stablecoins, the protocol is designed to adjust supply by trading between these before going through the reserve, which makes the process more efficient. For example, if Celo USD (cUSD) demand increases and Celo EUR (cEUR) demand decreases then the protocol will create cUSD and sell them at market rate in exchange for cEUR that will then be destroyed by the protocol. With such a mechanism Celo stakeholders are incentivized to grow usage of the entire Celo ecosystem rather than focus on individual stable-assets. For example, introducing cEUR could decrease demand of cUSD but as long as the total demand for cEUR and cUSD increases, the total ecosystem grows.
New stablecoins are introduced via a governance process to ensure platform sustainability. To avoid a new asset having a negative impact on the stability of the other tokens (e.g. if it has high volatility) Celo uses a proof-of-bonded-stake model to vote on new introductions. It’s expected that Celo Gold holders will only vote favorably if they think the new stablecoin will grow and/or stabilize the Celo ecosystem.
Lastly, it’s worth noting that not all stablecoins need to use the same shared reserve. One could create a new stable token and initiate a separate reserve for that asset. That reserve would have its own local reserve currency. This would support the creation of local and functional currencies backed by collateral specifically tailored to each environment. For example, one such possibility is that some of the local reserve currency could get distributed to local inhabitants, which would allow them to benefit from the adoption of the local stablecoin, acting like a social dividend in the process. The decentralized nature of Celo means that different communities can use it as a foundation for many different projects.
Incentives and Governance
Celo’s governance structure is designed to incentivize behavior that aligns with long-term protocol stability. This is achieved through a proof-of-bonded-stake model, which encourages long-term holding of Celo Gold by weighting rewards according to the amount of Celo Gold bonded and length of time remaining in the bond.
Governance is managed on-chain. For a small submission fee anyone can propose protocol improvements along with an implementation fee. These are voted on by Celo Gold holders weighted by their bonded-stake. Proposals for introducing new stablecoins or new crypto-assets to the reserve follow a similar process. The only difference is that instead of paying a submission fee proposers have to stake Celo Gold. New stable assets that are not backed by the shared reserve (and instead have their own reserve and local reserve currency) do not need to go through the governance process to avoid existing Celo Gold holders vetoing that initiative.
In conclusion, the Celo protocol introduces a mobile-first protocol designed to be user friendly by addressing barriers to cryptocurrency adoption whilst remaining as inclusive as possible. In addition, the protocol supports a new type of monetary ecology that includes local and regional currencies, social dividends, demurrage, and natural-capital backed currencies.