Overview of Celo
Celo is a mobile optimized blockchain offering an accessible suite of financial tools to anyone with a cellphone. Mobile users can download a Celo light-client which connects with full nodes in the network. This makes Celo ideal for low-power and low-bandwidth mobile devices. These full nodes earn fees for forwarding transactions to validator nodes on behalf of mobile users. To enable this, Celo has created a complete stack of new blockchain software. While the code has a shared ancestry with Ethereum, Celo differs in important areas from consensus to use cases, as we will explore in this blog post.
Celo boasts a lightweight identity layer which lets users securely identify and transact with others based on their contacts’ phone numbers. Attestations is a function which allows users to verify their phone number for a small fee. This process will verify the ownership of a phone number, linking it to the user. Attestations then verifies and installs mapping for the phone number to a user’s account.
Celo’s native token is CELO (previously known as Celo Gold). CELO has an ERC20 interact, so users can interface with CELO via the token standard, however they are not required to transfer via the ERC20 interface. Celo allows users to pay transaction fees in assets other than the native CELO asset. This is in contrast to Ethereum, where Ether must be used to pay transaction fees. For stablecoins issued on Celo, for example, transactions can be paid for in those currencies.
Celo supports a suite of stable ERC-20 tokens whose value can be paired with a real-world asset, including currencies, commodities or natural resources. The Celo Dollar is the first stablecoin to be supported on Celo, which is a 1:1 peg for the US Dollar. Achieving this relies on Oracles, who are trusted sources of information fed from exchanges external to the network. The Celo protocol ensures that there is always enough collateral to redeem the amount of Celo in circulation.
Celo’s native token is the key needed to participate in the blockchain’s consensus process.
Proof of Stake Ecosystem
Celo uses a Byzantine Fault Tolerant (BFT) consensus algorithm which validators use to advance the network. This has the advantage of creating blocks in five seconds, as opposed to the longer wait time needed in traditional Proof of Work networks. Furthermore, all blocks enjoy immediate finality on Celo, meaning there’s no need to wait longer than one block to confirm transactions won’t be changed. The decentralized ledger is updated when at least two-thirds of nodes are in agreement. Celo’s Proof of Stake (PoS) mechanism determines which nodes become these validators, and how incentives are aligned to serve the Celo network. Operating such a PoS system successfully guarantees Celo’s security, while minimizing the environmental impact that securing the network requires.
Celo is a highly inclusive blockchain as it allows anyone to participate in consensus. This means that holders of the native Celo token are incentivized to take part in the PoS protocol. Validators are responsible for maintaining the blockchain, determining which transactions get applied and producing new blocks. Rather than voting on the validators themselves, token holders can vote for Validator Groups, acting as intermediaries between voters and validators. Each group has five validator candidates. Validator elections are held every epoch (roughly once per day), where the protocols elects a maximum of 100 validators. Each epoch, an elected validator must be re-elected to continue serving their role in the network. Validators are chosen relative to the amount of votes allocated to them for each Validator Group.
Decentralization of the network is encouraged, as Validator Groups can only have a small, fixed number of validators. This means that managing more Validator Groups becomes more complex for organizations or individuals wanting to participate more. These challenges dis-incentivize any single entity from creating many Validator Groups, encouraging a diversity of validators across the network.
How to get started with Celo staking
Participating in staking and governance requires users to transfer their native Celo tokens to a ‘Locked’ smart contract. This way of working ensures that the asset cannot be used more than once in the same vote. The locked Celo can also be used for voting on governance proposals. Users also have the option of creating a voting key which allows the wallet’s private key to be held offline, while the voting key remains online to participate in governance and electing validators.
Voting for validators is proportional to a user’s Locked balance. This means that the more tokens a person owns, the greater their influence will be in the validator election process. A single account can split their Locked balance to have outstanding votes for up to 10 groups.
Celo Staking Rewards
Celo stakers earn rewards when their chosen group elects validator(s) who advance the blockchain by minting blocks. These rewards automatically compound, using the funds to increase the voting weight behind the same group. This incentivizes ongoing participation in the election progress.
Validator groups receive a piece of the rewards allocated to validators for advancing the blockchain.
What makes a good validator? Key considerations
Validators are critical to the success of the Celo network. Choosing the right validator means taking into account a number of factors, some of which are listed below.
- Proven Identification: Validators and groups who supply verifiable DNS claims can securely prove that they are the entity responsible for a validator or group.
- Voting Cap: Celo sets out a voting cap for each validator group. This cap is set to be the number of votes that would be needed to elect all validators, plus one more validator. The cap is enforced at time of voting: no user can cast a vote if it exceeds the votes allowed for the cap. A group’s cap rises when adding a new validator or the total amount of voting Locked increases. If a validator chooses to leave, or the amount of Locked falls, the cap reduces. When choosing a validator group, it is important to choose only those below the cap threshold.
- Reliable: Votes should be allocated to those who are reliable. This is because the BFT consensus implemented by Celo relies on two-thirds of participants positively contributing honestly to the network.
- No Recent Slashing: It is important to look for groups who have suffered minimal slashing. While a voter’s funds are never at risk, poorly performing validators are harmful to overall network health. Choosing a good validator improves the performance of the network while also increasing rewards.
- Running an Attestation Service: The Attestation Service allows users to verify that they have access to a phone number, and map it to an address. It’s a service that validators have the option of running, and it makes it easier for new users to begin using Celo.
While these are all of the ‘on-chain’ criteria for choosing a validator, there is also a merit in choosing a validator who helps improve the Celo community. This means voting on certain validator groups may mean supporting those entities who develop educational content for Celo, improve sustainability of the project and have initiatives around financial inclusion.
Celo used for validator voting is never at risk. Good or bad performance by the validators that are elected can cause a staker to receive higher or lower rewards, however. Celo’s tokens locked into the smart contract will always be available for unlocking in the future. Slashing in the protocol exists, yet is only applied to validators and Validator Groups. A user’s funds are never at risk.
Slashing at a validator level can occur when validators have poor uptime. To be considered up, validators must have at least one block from the previous ten blocks minted.
As there are a limited number of validators allowed in the network, reliable infrastructure is critical. The current requirement for running a validator is 10,000 CELO to be registered, and 10,000 CELO per member validator to register a Validator Group. For a full outline on staking requirements for validators, see here.