Council

Overview

  • Council represents passive stakeholders. The council is an on-chain entity comprising several actors, each represented as an on-chain account. Council takes 4 tasks:

    • Controlling treasury

    • Proposing sensible referenda

    • Canceling uncontroversially dangerous or malicious referenda

    • Electing the technical committee

  • Referendum: A proposal that is in the process of being voted on for either acceptance or rejection as a change to the system. For a referendum to be proposed by the council, a strict majority of members must be in favor, with no member exercising a veto. Vetoes may be exercised only once by a member for any single proposal; if, after a cool-down period, the proposal is resubmitted, they may not veto it a second time.

  • Cool-off period: The period in blocks where a proposal may not be re-submitted after being vetoed.

How to be a council member?

Diagram

Description

Submit candidacy

  • Submitting your candidacy for the council requires a small bond of GLCH.

  • Runners-up are selected after every round and are reserved members in case one of the winners gets forcefully removed.

  • You can also vote for yourself in case no one else does. Before submitting your candidacy, you not only get votes from the supporters but also can vote for yourself in case no one else does.

  • After submitting your candidacy, your account becomes a candidate.

Voting on candidate

  • Members of the network choose candidates and vote for them by staking an amount of GLCH (no limit). Each voter can choose up to 16 distinct candidates to vote for and your stake will equalize between them to ensure candidates get a chance to become candidates fairly.

  • Locked balance for bonding is used for voting Council

    1/ Transferable=50, bond staking= 50, vote Council= 60 -> Locked= 60, Transferable= 40 (decrease by 10), bonded= 50.

    + Assume that user unbonds= 30 → Bonded= 20, Locked= 60, not display unbonded. It means that unbonded=30 is still locked for voting Council (ensure locked balance= 60) and can’t be withdrawn until the user unvotes Council =60.

    + When user unvote council=60 → Transferable= 40 + 10+ 30= 80, Bonded= 20. Locked= 20.

    2/ Transferable=50, bond staking= 50, vote Council =40 (< bondStaking) → Locked= 50, Transferable= 50 (no changes), Bonded=50.

Renounce candidate

  • Unless your candidacy wins, the bond will be forfeited. The vote for council is locked when an election is processed. You can receive your bond back by manually renouncing your candidacy only before election happens.

  • When voting for candidates, voters lock in a certain amount of votes on these candidates. If one of the candidates renounces their candidacy, the locked amount for voting won’t be returned because other candidates still take part in the next election with this amount. If voters want to take back the locked amount, they need to Unvote or call extrinsic to execute function `electionsPhragmen. removeVoter'

Winning

The result of the voting is based on the ElectionsPhragmen method. (See more in ElectionsPhragmen)

  • Council member

    • If you win a council election, your account will be on the council member list. Maximum number of council: 13

    • When a council member wants to leave their seat in the Council, they can call extrinsic with the function ‘Developer -> Extrinsic -> ElectionPhragmen -> renounceMember`

  • Runner up

    • At the end of each term, the Phragmén election algorithm runs, and the result will choose the new councilors based on the vote configurations of all voters. The election also chooses a set number of runners-up that will remain in the queue with their votes intact until the next election. Max runners up: 30.

    • When a council member wants to leave their seat in the Council, they can call extrinsic with the function ‘Developer -> Extrinsic -> ElectionPhragmen -> renounceRunnerup`

Council proposal

Types of proposal

Unanimous Council - When all council members agree on a proposal, it can be moved to a referendum. This referendum will have a negative turnout bias (that is, the smaller the amount of stake voting, the smaller the amount necessary for it to pass, see more in Democracy)

Majority Council - When agreement from only a simple majority of council members occurs, the referendum can also be voted upon, but it will be majority carries (51% wins).

Veto proposal

For a referendum to be proposed by the council, a strict majority of members must be in favor, with no member exercising a veto. Only one of the technical committee members may veto a coming council proposal. Vetoes may be exercised only once by a member for any single proposal. The proposal can’t be resubmitted during the cool-off period. After a cool-down period, if the proposal is resubmitted, they may not veto it a second time.

Voting on proposal

Transaction fees will be waived if the council member is voting on any particular proposal for the first time and the call is successful. Subsequent vote changes will charge a fee.

Submit proposal

Propose motion

Council members choose the following functions in pallet Democracy to submit a proposal. Each motion needs to pass a predefined origin for approval.

Function

Origin

external_propose

Approved by more than 50% member council

external_propose_majority

Approved by at least 80% member council

external_propose_default

Approved by 100% member council

After being approved by Council, the proposal submitted by Council is put into External queue in Democracy.

Propose external

Proposing external required approval of at least 80% member council for moving to an external queue in Democracy

Voting on proposal

For the proposals made by Council, transaction fees will be waived if the council member votes on any particular proposal for the first time and the call is successful. Subsequent vote changes will charge a fee.

Canceling proposal

  • The Council members are given a grant by chain to cancel the proposal in referendum whenever they find it unreasonable. Each voting and canceling request is considered a transaction. On-chain, the transaction is made in order. Therefore, the request for voting proposal and request for canceling proposal is made in order.

    • During the voting period, the proposal is removed from the referendum whenever it reaches 100% of the Council’s request for canceling, no matter which percentage of votes for agreement the proposal reaches.

    • Until the voting period ends, the request is rejected if there is less than 100% of the Council's request for canceling. Then the proposal is still kept in the referendum and passed to the enactment queue.

Prime members

Role

  • The council implements a prime member prime member whose vote acts as the default for other members that fail to vote before the timeout.

  • A "prime" member may be set to help determine the default vote behavior based on chain config. If PrimeDefaultVote used, the prime vote acts as the default vote in case of any abstentions after the voting period. If MoreThanMajorityThenPrimeDefaultVote is used, then abstentions will first follow the majority of the collective voting, and then the prime member. Motions are open for members to vote on for a minimum period given by MotionDuration. As soon as the required number of approvals is given, the motion is closed and executed. If the number of approvals is not reached during the voting period, then close may be called by any account to force the end of the motion explicitly. If a prime member is defined, then their vote is used instead of any abstentions and the proposal is executed if enough approvals count the new votes.

How to become prime members

  • The prime member is chosen based on a Borda count.

  • The Borda count is a ranked voting system: the voter ranks the list of candidates in order of preference. So, for example, the voter gives an n point to their most preferred candidate, an n-1 point to their second most preferred, and so on. (n - the number of candidates that voter votes for)

For example of selecting prime members

Voter V votes for three candidates, A, B, and C, in order: B-A-C.

So B, A, and C get 3, 2, and 1 point respectively. If A and C are selected to be council members, their points (2, 1 respectively) will be used for selecting a prime member (the person with a max total point).

Scenarios of proposing referendum

Pallet

Function call

Description

Democracy

emergencyCancel

  • Cancel a proposal in referendum

  • Require 100% of Council members to approve

Democracy

externalPropose

  • Propose a proposal in external queue

  • Require more than 50% of Council members to approve

Democracy

externalProposeMajority

  • Propose a proposal in external queue

  • Require at least 80% of Council members to approve

Democracy

externalProposeDefault

  • Propose a proposal in external queue

  • Require 100% of Council members to approve

Tip

slashTip

  • Remove and slash an already-open tip.

  • Require 100% of Council members to approve

Tip

tip

  • Declare a tip value for an already-open tip.

  • Any council members can call function in Extrinsic, NOT in Council motion.

Tip

tipNew

  • Give a tip for something new; no finder's fee will be taken.

  • Any council members can call function in Extrinsic, NOT in Council motion.

Staking

cancelDeferredSlash

  • Cancel enactment of a deferred slash.

  • Require at least 75% of Council members to approve

Bounty

approveBounty

  • Approve a bounty proposal

  • Require at least 60% of Council members to approve

Bounty

proposeCurator

  • Assign a curator to a funded bounty.

  • Require at least 60% of Council members to approve

Bounty

unassignCurator

  • Unassign curator from a bounty.

  • Require at least 50% of Council members to approve

Treasury

approveProposal

  • Approve a proposal.

  • Require at least 60% of Council members to approve

Treasury

rejectProposal

  • Reject a proposed spend.

  • Require more than 60% of Council members to approve

Council

execute

  • Dispatch a proposal from a member using the `Member` origin.

  • Council members call function in Extrinsic

Council

propose

  • Add a new proposal to either be voted on or executed directly.

  • Council members call function in Extrinsic

Council

vote

  • Add an aye or nay vote for the sender to the given proposal.

  • Council members call function in Extrinsic

Last updated