Governance

Creating a New Proposal

Anybody can create a governance proposal which will start in the deposit period, and will be promoted to voting period once the minimum deposit amount is met. Anyone can deposit to a proposal in deposit period.

To submit a new proposal, you can send a transaction with the proposal details and a specified deposit amount. This deposit amount doesn't have to be greater than the MinDeposit (minimum to enter voting) amount, but until the overall deposit amount is met, the proposal will remain in deposit period.

A submit-proposal transaction must include a nonzero positive deposit amount

Example

gameid tx gov submit-proposal param-change proposal.json --from {proposer_key}

Note that we allow for expedited proposals via the --is-expedited flag. This halves the time of the proposal but requires twice the amount of deposit.

You can also view existing proposal details and the state of the proposal (deposit period, voting period, etc) by querying for a specific proposal id.

Example

gameid query gov proposal {proposal_id}

You can also query for the proposer for a specified proposal to view the address that initially submitted the proposal

Example

gameid query gov proposer {proposal_id}

If a created proposal is in a pending deposit period, you can add to the deposits in order to contribute for the proposal to enter the voting period. The deposit amount is denominated in amount to deposit and the deposit token such as 10000game.

If a proposal fails to meet MinDeposit before the deposit period ends, ALL deposits are burned

Example

gameid tx gov deposit {proposal_id} {deposit_amount} --from {your_key}

A user can query the deposit made by a specific address on a specific proposal. This can be used to see your current deposit amount or to see the amount another account deposited.

Example

gameid query gov deposit {proposal_id} {depositor_addr}

You can also query all deposits made for a proposal with a separate query command.

Example

gameid query gov deposits {proposal_id}

Voting on Proposals

This allows an address to vote on a specified proposal. There are four voting options when voting on a proposal

yes
no
abstain
no_with_veto

Example

gameid tx gov vote {proposal_id} {vote_option} --from {voter_key} --chain-id {chain_id}

The weighted vote transaction allows a voter to partially allocate voting power to various voting options. This is especially useful in cases where the vote is voting on the behalf of multiple stakeholders with different voting decisions.

When performing a weighted vote, the transaction is executed with voting weights instead of a single option. The voting weights are expressed as a comma separated string of vote options mapping to voting weights. The voting weights must add up to 1 for the transaction to be valid.

Voting Weights Example

yes=0.3,no=0.2,no_with_veto=0.15,abstain=0.35

Example

gameid tx gov weighted-vote {proposal_id} {voting_weights} --from {voter_key} --chain-id {chain_id} 

Query

This will return the information about a single proposal specified by proposal_id.

Example

gameid query gov proposal {proposal_id} --chain-id {chain_id}

This will return the current vote tally for the proposal_id provided.

Example

gameid query gov tally {proposal_id} --chain-id {chain_id}

This will return all the votes on the specified proposal.

Example

gameid query gov votes {proposal_id} --chain-id {chain_id}

This will query the vote information for a specific voter address and proposal id.

Example

gameid query gov vote {proposal_id} {voter_addr} --chain-id {chain_id}

Last updated