Fetch Network
Ledger
CLI - Command Line Interface
Governance proposals
Bookmark

Governance proposals 📝

Within any decentralised network, any significant change or adjustment should be proposed and subsequently agreed upon by the community or stakeholders involved. This process ensures that decisions are made collectively, helping to maintain transparency, fairness, and the overall integrity of the network.

Hence, a governance proposal must be submitted to change any attribute of a network. This could be a simple poll, a software update or a governing parameter change. Whether it is a minor parameter tweak or a major software update, the proposal process is a crucial step in decentralized systems.

For further information on governance within the Fetch Ledger, have a look at the following documentation ↗️

Parameter change

This is an example of the process in which network parameters may be changed through the use of a governance proposal.

The values within this code can be changed in order to alter the minimum deposited fund threshold for a proposal to enter the voting phase, and the length of the deposit stage in which the minimum deposit threshold must be met.

# A JSON file containing the following code should be created to instantiate the proposal.
# The two variables of interest are the "amount" which is set from 10000000stake to 1000stake
# and the "max_deposit_period" which is changed from the default value to 7200000000000
# equal to 2 hours, instead of the standard 2 days (in nanoseconds).

{
  "title": "Staking Param Change",
  "description": "Update max validators",
  "changes": [
    {
      "subspace": "staking",
      "key": "MaxValidators",
      "value": 105
    }
  ],
  "deposit": "1000000000000000000atestfet"
}
# Create initial proposal by uploading the JSON file
# this is signed by a key 'proposer' that provides a portion of the current threshold deposit
fetchd tx gov submit-proposal --proposal ~/json_path/proposal.json --from proposer

# In order to later refer to this proposal, the proposal_id can be determined
fetchd query gov proposals

Proposal deposit phase

The characteristics of the deposit phase are described by a set of network governance parameters, where the deposit period is two days from the initial proposal deposit until expiration, and a minimum threshold of 10000000 denom as default. The minimum threshold must be met during this deposit period in order to proceed to the voting phase. The proposer may provide all of this threshold, or just some. In which case, supporters of the proposal may donate additional funding towards the goal of meeting the threshold.

At any point of the deposit stage, the deposit pot can be queried:

# To get the proposal ID, use the txhash obtained when the proposal was submitted and run the following command:
fetchd query tx <txhash>

# This command returns a text representation of the current total deposit value of a proposal
fetchd query gov deposits <proposal_id>

# Other users may contribute to funding the proposal using
fetchd tx gov deposit <proposal_id> <deposit_amount> --from contributer

Proposal voting and querying

After the deposit period has passed, there are two outcomes:

  • The current minimum threshold is met.
  • The value is not met and the funds are returned.

In the first case this proposal is submitted and to be voted on, returning a tally at the end of the voting period.

In order to submit a vote on a proposal that has passed into the voting phase, all staked users except the proposer may do so using this command.

# Submit a vote from a key 'voter' with the desired outcome of the voter
fetchd tx gov vote <proposal_id> <yes|no|no_with_veto|abstain> --from voter

The current voting turnout and tally can be queried, which displays a list of all voters and their choice:

# The current voting statistics can be printed using
fetchd query gov votes <proposal_id>

Example output

votes:
- option: VOTE_OPTION_YES
  proposal_id: "1"
  voter: fetch1dmehhhvul8y7slqs3zu2z3fede9kzlnyupd9rr
- option: VOTE_OPTION_NO
  proposal_id: "1"
  voter: fetch1064endj5ne5e868asnf0encctwlga4y2jf3h28
- option: VOTE_OPTION_YES
  proposal_id: "1"
  voter: fetch1k3ee923osju93jm03fkfmewnal39fjdbakje1x

Voting outcome

Once the voting period has ended, the results are used to determine the next step of the proposal. The potential outcomes include:

  • Majority yes vote

    • The proposal passes through and the users act according to the proposal type - e.g. A Software update proposal passes, and users begin uptake of the new version.
  • Majority no vote

    • The funds deposited to pass into the voting stage are returned, and there is no governance change.
  • Majority no with veto vote

    • This outcome is indicative of a proposal which may undermine the current governance system, e.g. a proposal to set the deposit threshold or voting period to an absurd value.
    • All funds deposited in the proposal are to be burned subject to this outcome, and there is no governance change.

Was this page helpful?

Bookmark