Crypto Paper: Celo

I read Celo: A Multi-Asset Cryptographic Protocol for Decentralized Social Payments (this link is a hosted version of what can be found at this live URL, which points to version DRAFT 0.22 at the time of writing.)

What did I learn? What did I understand? What was confusing? Is Celo worth something? Let's write this down.

New Concepts

Let's cover what I had to research while reading this whitepaper. Celo didn't invent these concepts but they are referenced or used.

Celo Concepts

Now let's get into the meat of this paper: what is Celo? It's a collection of cryptocurrencies aimed at enabling social payments (think: Venmo or TransferWise).

Celo doesn't have any technical innovations at its core. The innovation is in how the pieces are put together. To enable social payments Celo bets on making public keys disappear and have users issue payment to phone numbers, emails, or other more familiar destination "addresses". That's done through a simple distributed hash table of (alias, public key). To write a record (email@example.org, '0x12345...') in the shared hash table, a validator has to generate a secret and send it to email@example.org. This secret then has to be signed with the private key associated with 0x12345... and sent back to the validator. It's not rocket-science but it sounds solid. I'd be happy not to have to deal with public keys or QR codes to pay friends and family. This is extremely similar to Ethereum Name Service.

Another "social" Celo feature is a distributed "trust" score based on previous user payment activity. Neat but not exactly new or mind-boggling.

The other interesting piece is the way Celo makes its currencies stable. Celo Gold and a basket of other crypto-currencies (ETH, BTC, etc) are in the Celo Reserve. This backs the Celo Dollar, which is a stable crypto-currency pegged to USD. How is it kept stable? If the Celo Dollar goes above the US Dollar, more Celo Dollars are created. If the Celo Dollar goes below: Celo dollars are bought back with the Celo Reserve. The interesting bit comes from the fact that the Celo Reserve is common to multiple stable currencies in Celo. Say Celo Dollar, Celo Euro and Celo Yen use the same underlying Celo reserve. If the Celo Dollar is above its USD peg and the Celo Yen is below its JPY peg, the reserve does not need to be touched. Celo Yens are bought back with brand-new Celo Dollars. This shrinks the supply of Celo Yen and expands the Celo Dollar without touching Celo's reserve of Celo Gold and crypto-currencies.

Celo also allows for new currencies to be created with their own reserve ("partition reserve") instead of using the common pre-established Celo reserve of Celo Gold and other cryptos ("shared reserve").

Celo is a proof-of-stake network, with the variation that the weight of the participant is proportional to the amount of money bonded AND the time left in each bond. Each network participant can vote on the price of stable currencies when they're created and vote on network proposals which can be technical improvements or new stable currencies. I personally really like the idea of the network voting on technical proposals along with an implementation fee. Dash does this as well.