A Step-by-Step Guide to Celo's On-Chain Governance System

A Step-by-Step Guide to Celo's On-Chain Governance System https://celo.academy/uploads/default/optimized/2X/a/a1c2a5e31cd70d82f0394239772743cacab0ef43_2_1024x576.jpeg
none 0.0 0

A Step-by-Step Guide to Celo’s On-Chain Governance System

Celo’s on-chain governance system allows the community to make decisions that affect the network. This system enables Celo users to submit, debate, and vote on governance proposals, which might involve changes to the protocol, network parameters, or the allocation of community funds.


  1. A computer with a stable internet connection.
  2. A modern web browser (e.g., Google Chrome, Mozilla Firefox, etc.).
  3. The celocli tool installed on your machine.
  4. CELO tokens in your account (can be testnet tokens).


To follow this guide, you should have:

  • Basic knowledge of blockchain and smart contracts.
  • Familiarity with the Celo platform.
  • A configured Celo development environment.
  • The celocli command-line interface installed.
  • Some CELO tokens for voting (testnet tokens are fine for this tutorial).

Understanding Celo’s Oracles

In the Celo ecosystem, Oracles play a vital role in maintaining the stability of Celo’s native stablecoins. They provide accurate, up-to-date external price information to the Celo network, which is crucial for minting and redeeming stablecoins.

Let’s take a closer look at the oracles currently operating on the Celo network:

  • Celo Reserve Oracles: These oracles provide information about the reserves backing Celo’s stablecoins. This includes information such as the current amount of assets in reserve, which is critical for maintaining the peg of the stablecoins.

  • RedStone Oracles: RedStone is an oracle provider that delivers real-time data feeds to blockchains. In the context of Celo, RedStone oracles could provide data like price feeds, which are important for financial applications and maintaining stablecoins.

  • Band Protocol: Band Protocol is a cross-chain data oracle platform that aggregates and connects real-world data and APIs to smart contracts. On Celo, Band Protocol can provide various types of data needed by smart contracts.

  • Pyth Network: Pyth Network is a specialized oracle solution designed to provide high-frequency and high-accuracy data for decentralized applications (dApps). In Celo, this could include financial market data, trading data, and more.

  • Witnet: Witnet is a decentralized oracle network that connects smart contracts to any online data source. Smart contracts on Celo can request data from Witnet, which retrieves the data in a decentralized and trustless way.

These oracles play a vital role in Celo’s ecosystem by providing reliable and accurate information from the outside world, enabling the full functionality of Celo’s on-chain governance and financial systems.

Step 1: Understand Celo’s Governance Model

Celo uses a participatory on-chain governance model. This model consists of three phases: proposal, approval, and referendum.

  • Proposal: Any user can pay a deposit in CELO tokens to propose a change. Proposals are written in a JSON format that describes the changes to be made.

  • Approval: A multisig “Governance Approver” contract, initially set to a group of reputable validators, approves which proposals will go to a vote.

  • Referendum: Once approved, all users can vote on the proposal. Voting power is proportional to the user’s locked CELO balance. A proposal passes if it meets quorum and approval conditions.

Step 2: Proposing a Governance Proposal

As a proposer, you have to submit your proposal in the JSON format. Let’s assume we want to change the minimum locked CELO required for voting from 10 to 15.

The proposal might look like this:

  "descriptionURL": "https://forum.celo.org/t/proposal-to-change-the-minimum-locked-celo-for-voting/123",
  "changes": [
      "contract": "LockedGold",
      "function": "setVotingLockedGoldRequirements",
      "args": [ "15000000000000000000" ],
      "value": "0"

You can submit this proposal using the celocli command-line interface:

celocli governance:propose --proposal "proposal.json" --from <YOUR_ADDRESS>

Remember, proposing a change requires you to pay a deposit in CELO tokens. This is to discourage spam proposals.

Step 3: Voting on a Governance Proposal

As a voter, you can vote on the proposals that have been approved by the Governance Approver.

First, you have to lock your CELO tokens:

celocli lockedgold:lock --from <YOUR_ADDRESS> --value <VALUE_TO_LOCK>

Then, you can vote on a proposal using the proposal ID:

celocli governance:vote --proposalID <PROPOSAL_ID> --value <YES/NO/ABSTAIN> --from <YOUR_ADDRESS>

Step 4: Monitoring the Proposal

After the voting, you can monitor the proposal status using the following command:

celocli governance:view --proposalID <PROPOSAL_ID>

This command provides information about the proposal, including the current tally of votes.


This tutorial gave you a basic understanding of how to interact with the Celo governance system. Participating in governance is a fundamental part of being a member of the Celo community. Whether you’re proposing changes or voting on them, your involvement helps shape the direction of the Celo platform.

What’s Next?

After mastering the basics of Celo’s On-Chain Governance System, consider exploring the following areas:

  • Deep Dive into Smart Contracts: Understand the intricacies of Celo’s smart contract system and learn how to write your own contracts.
  • Validator Groups and Election Mechanics: Learn about Celo’s Proof of Stake system, how to set up a validator group, and participate in validator elections.
  • Celo Native Assets and Stablecoins: Dive into Celo’s asset model and how it enables a family of stablecoins.

About the Author

Elijah Sorinola

Web3 technical writer with a passion for communicating complex technical concepts in a clear and concise manner. Let’s connect on LinkedIn to discuss your content needs.



Congratulations on being among the top voted proposals this week! This is now approved by @Celo_Academy for you to get started whenever you’d like. :mortar_board: :seedling:

@Elijah007 I’ll be reviewing this

This looks okay, I’ll be moving to published

Please attach source code repo @Elijah007

Hello we are expecting explanation of each oracle, here is the link for the list Oracles on Celo | Celo Documentation

Hi @ishan.pathak2711 thanks for the feedback. I’m not sure if this article needs a repo, except you want me to upload just the JSON file.

Let me know what you think. Thanks

No need of repo, but please address the other request which I shared @Elijah007

done @ishan.pathak2711