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.
Requirements
- A computer with a stable internet connection.
- A modern web browser (e.g., Google Chrome, Mozilla Firefox, etc.).
- The
celocli
tool installed on your machine. - CELO tokens in your account (can be testnet tokens).
Prerequisites
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.
Conclusion
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.
References
- Celo Official Documentation
- Celo Governance Overview
- Celo CLI (Command Line Interface) Documentation
- Celo Forum for community discussions and governance proposals.