Celo Protocol Integration Guide
A comprehensive guide for applications building and integrating on Celo.
General Guidelines
Address Handling
Celo addresses are identical to Ethereum addresses. When displaying and requesting user-inputted addresses, ensure to use and validate address checksums following the EIP55 standard to detect typos.
For core smart contracts, developers are encouraged to use the Registry to reference contracts, allowing for potential repointing via Governance.
Custodian/Exchange Integration
For detailed information, refer to Custody. Below is a summary:
Transfer Detection
Stable-value currencies, cUSD and cEUR, are represented by StableToken
and StableTokenEUR
contracts, accessible via the ERC20 interface. The native asset CELO can be accessed via the GoldToken
ERC20 interface or natively, similar to ETH on Ethereum.
Contract addresses can be found by querying the registry or in the Listing Guide.
Proof of Stake Participation
Users may participate in Celo's Proof of Stake system to help secure the network and earn rewards.
Authorized Signers
Celo's core smart contracts use the Accounts
abstraction, allowing balance-moving keys to be held in cold storage, while other keys can be authorized to vote and held in warm storage or online.
Release Gold Contract
The ReleaseGold
smart contract, which is audited, allows for the scheduled release of CELO to users.
Wallet Integration
These guidelines apply to any application that manages keys and allows users to interact and transfer value on the Celo platform.
Key Derivation
Celo wallets should follow BIP44 for deriving private keys from BIP39 mnemonics. Celo's key derivation path is m/44'/52752'/0'/0
. The first key is typically the account key
for balance transfers, while the second key can be derived as the dataEncryptionKey
for encrypting information.
Identity Protocol
Celo has a lightweight identity protocol that allows users to address each other via phone numbers. To protect user privacy, Celo wallets should implement the Phone Number Privacy protocol to prevent large-scale harvesting of phone numbers.
Wallet Address Management
When transferring assets, wallets should check the receiving account's walletAddress
. Smart contract accounts may have different recovery characteristics but receive funds at a different address. A walletAddress
of 0x0
indicates that a different mechanism is required to acquire the walletAddress
.
Transaction Metadata
cUSD (StableToken) includes an additional method, transferWithComment
, allowing senders to specify a comment. Celo wallets should support this feature and encrypt comments to the dataEncryptionKey
when applicable.
Validator Group Explorers
Validator Group Explorers are essential to Celo's Proof of Stake system. Explorers should consider the following standards to ensure a consistent experience:
Account Names
All Celo accounts on Accounts.sol
can claim any name. Explorers should display these names while being aware of potential fraud.
Identity Claims
Celo accounts can claim existing identities, some of which are verifiable (e.g., Domain Names, Keybase profiles). Explorers should display these identities to reduce impersonation risks.
Performance Metrics
Validator Groups and their validators may perform differently. Explorers should reflect this to help voters choose an optimal validator set. While uptime (block signatures) affects rewards, explorers should also display other metrics that impact the Celo ecosystem's success, such as performance in the identity protocol.