The Referenda Pallet¶
The Referenda Pallet allows token holders to make, delegate, and manage Conviction-weighted votes on referenda.
With the rollout of OpenGov (also referred to as Governance v2), several modifications have been introduced to the governance process. As a result, the governance system in Governance v1 uses the Democracy Pallet and Democracy Precompile for all governance-related functionality. In OpenGov, governance-related functionality is based on three new pallets and precompiles: the Preimage Pallet and Preimage Precompile, the Referenda Pallet and Referenda Precompile, and the Conviction Voting Pallet and Conviction Voting Precompile. OpenGov has launched on Moonriver, and once it has been rigorously tested, a proposal will be made for it to be launched on Moonbeam. Until then, Moonbeam still uses Goverance v1. The aforementioned precompiles are Solidity interfaces that enable you to perform governance functions using the Ethereum API. Some of the functionality of the Referenda Pallet is available through the Referenda Precompile.
This guide will provide an overview of the extrinsics, storage methods, and getters for the pallet constants available in the Referenda Pallet on Moonbeam. This guide assumes you are familiar with governance-related terminology, if not, please check out the governance overview page for more information.
Referenda Pallet Interface¶
The Referenda Pallet provides the following extrinsics (functions):
- cancel(index) - cancels an ongoing referendum given the index of the referendum to cancel. This type of action requires a proposal to be created and assigned to the Emergency Canceller Track
- kill(index) - cancels an ongoing referendum and slashes the deposits given the index of the referendum to cancel. This type of action requires a proposal to be created and assigned to the Emergency Killer Track
- placeDecisionDeposit(index) - posts the Decision Deposit for a referendum given the index of the referendum
- refundDecisionDeposit(index) - refunds the Decision Deposit for a closed referendum back to the depositor given the index of the referendum
- submit(proposalOrigin, proposal, enactmentMoment) - proposes a referendum on a privileged action given the Origin from which the proposal should be executed, the proposal, and the moment tht the proposal should be enacted
The Referenda Pallet includes the following read-only storage methods to obtain chain state data:
- decidingCount() - returns the number of referenda being decided currently
- palletVersion() - returns the current pallet version
- referendumCount() - returns the number of referenda started so far
- referendumInfoFor(u32) - returns information concerning any given referendum
- trackQueue(u16) - returns the sorted list of referenda ready to be decided but not yet being decided on, ordered by conviction-weighted approvals. This should be empty if the deciding count is less than the maximum referenda that can be decided on
The Referenda Pallet includes the following read-only functions to obtain pallet constants:
- maxQueued() - returns the maximum size of the referendum queue for a single Track
- submissionDeposit() - returns the minimum amount to be used as a deposit for a public referendum proposal
- tracks() - returns information concerning the different referendum Tracks
- undecidingTimeout() - the number of blocks after submission that a referendum must begin being decided by. Once this passes, then anyone may cancel the referendum
| Created: February 15, 2023