Skip to main content

Governance Module

Before you start, you should have a basic understanding of the ZIGChain Governance. Read the Governance Article to get started.

The ZIGChain Governance is based on the Cosmos SDK - Governance Module but with specific parameters, which you can find in the Governance Parameters section.

If you're looking for quick commands, refer to the Governance Quick Sheet.


Governance Parameters

The governance process in ZIGChain is governed by the following parameters:

⚠️ These values may change via governance proposals. Always confirm using the CLI or API.

ParametersTestnet ValueMainnet Value
burn_proposal_deposit_prevoteFALSEFALSE
burn_vote_quorumFALSEFALSE
burn_vote_vetoTRUETRUE
expedited_min_deposit5,000,000,000 uzig (5,000 ZIG)5,000,000,000,000 uzig (5,000,000 ZIG)
expedited_threshold0.667 (66.7%)0.667 (66.7%)
expedited_voting_period5m24h
max_deposit_period336h (14 days)336h (14 days)
min_deposit100,000,000 uzig (100 ZIG)10,000,000,000 uzig (10,000 ZIG)
min_deposit_ratio00
min_initial_deposit_ratio0.04 (4%)0.04 (4%)
proposal_cancel_ratio0.5 (50%)0.5 (50%)
proposal_cancel_destNONENONE
quorum0.334 (33.4%)0.334 (33.4%)
threshold0.51 (51%)0.51 (51%)
veto_threshold0.334 (33.4%)0.334 (33.4%)
voting_period10m96h (4 days)

Governance Parameters Overview

Below are detailed explanations of the key governance parameters in ZIGChain:


Burn Parameters

burn_proposal_deposit_prevote

  • Description: Determines what happens to the deposit if a proposal fails to meet the minimum deposit requirement by the end of the deposit period.

    • TRUE: The deposit is burned (permanently removed from circulation).
    • FALSE: The deposit is refunded to the proposer and supporters.
  • Default: FALSE

  • Observation: While setting this parameter to TRUE can reduce spam, it may also discourage valid proposals.

burn_vote_quorum

  • Description: Determines what happens to the deposit if a proposal does not reach the required quorum during the voting period.

    • TRUE: The deposit is burned (permanently removed from circulation).
    • FALSE: The deposit is refunded to the proposer and supporters.
  • Default: FALSE

burn_vote_veto

  • Description: Determines what happens to the deposit if a proposal is rejected due to a high number of "No with Veto" votes and is tagged as vetoed.

    • TRUE: Deposited tokens are burned if the veto threshold is met (e.g., over 33.4% "No with Veto").
    • FALSE: Deposits are refunded despite the veto outcome.
  • Default: TRUE

  • Observation: This parameter is essential to deter spammers and reduce governance fatigue.


Expedited Proposal Parameters

expedited_min_deposit

  • Description: Specifies the minimum deposit required for expedited proposals. Expedited proposals have a higher deposit requirement than regular proposals.

  • Default: 5,000,000,000,000 uzig (5,000,000 ZIG)

  • Unit: uzig

expedited_threshold

  • Description: Defines the percentage of "Yes" votes (excluding abstentions) required for expedited proposals to pass. Expedited proposals require a higher threshold than regular proposals.

  • Default: 0.667 (66.7%)

expedited_voting_period

  • Description: Specifies the voting period duration for expedited proposals. Results are tallied and executed after this period ends.

  • Default: 24h


Deposit Parameters

max_deposit_period

  • Description: Specifies the maximum time allowed to collect deposits on a proposal.

    • The deposit period ends when either:
      • The required deposit amount is reached.
      • The maximum time limit expires.
    • If the minimum deposit is not reached within this period, the deposit is either returned or burned, depending on the burn_proposal_deposit_prevote setting.
  • Default: 336h (14 days)

min_deposit

  • Description: The minimum amount required for a proposal to proceed to the voting stage.

  • Default: 10,000,000,000 uzig (10,000 ZIG)

min_deposit_ratio

  • Description: Specifies the minimum deposit as a percentage of min_deposit. This affects any deposit, including the initial one.

  • Default: 0

  • Example: If min_deposit is 100 uzigs and min_deposit_ratio is 1%, the required minimum deposit is 1 uzig.

min_initial_deposit_ratio

  • Description: Specifies the required minimum deposit percentage when submitting a proposal. Only affects the initial deposit, not subsequent ones.

  • Default: 0.04 (4%)

  • Observation: Ensures proposers have "skin in the game" while keeping participation accessible.


Proposal Cancellation Parameters

proposal_cancel_ratio

  • Description: Determines the percentage of the deposit forfeited when a proposal is canceled before the voting period starts.

  • Default: 0.5 (50%)

  • Example: If proposal_cancel_ratio is 0.5, 50% of the deposit is lost, and the rest is refunded.

proposal_cancel_dest

  • Description: Specifies where the forfeited deposit is sent if a proposal is canceled.

    • Empty: Lost funds are burned.
    • Specified Address: Funds are sent to this address.
  • Default: NONE


Voting Parameters

quorum

  • Description: Minimum percentage of votes from the total bonded stake required for a proposal to be valid.

    • If quorum is not reached, the proposal is canceled, and deposits are either refunded or burned, depending on the burn_vote_quorum parameter.
  • Default: 0.334 (33.4%)

threshold

  • Description: Defines the proportion of "Yes" votes (excluding abstentions) required for a proposal to pass.

  • Default: 0.51 (51%)

veto_threshold

  • Description: Specifies the threshold of "No with Veto" votes needed to veto a proposal.

    • If "No with Veto" votes exceed this threshold, the proposal is vetoed. Deposits are burned or refunded based on the burn_vote_veto parameter.
  • Default: 0.334 (33.4%)

voting_period

  • Description: Specifies the duration of the voting period for regular proposals. Results are calculated and executed after this period ends.

  • Default: 96h

Governance CLI Quick Sheet

Fetch Params CLI

zigchaind q gov params \
--node https://public-zigchain-rpc.numia.xyz

Fetch Params REST API

curl -s "https://api.zigchain.com/cosmos/gov/v1/params/" | jq '.params'

Draft a governance proposal:

zigchaind tx gov draft-proposal \
--chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz

Submit a governance proposal:

zigchaind tx gov submit-proposal draft_proposal.json \
--from <key-name> --chain-id zigchain-1 \
--node https://public-zigchain-rpc.numia.xyz \
--gas-prices 0.0025uzig --gas auto --gas-adjustment 1.3

Check a specific proposal:

PROPOSAL_ID=1
zigchaind query gov proposal $PROPOSAL_ID \
--chain-id zigchain-1 \
--node https://public-zigchain-rpc.numia.xyz

Check all proposals:

zigchaind query gov proposals --chain-id zigchain-1 --node https://public-zigchain-rpc.numia.xyz

Deposit funds to a proposal:

zigchaind tx gov deposit $PROPOSAL_ID 1000000uzig \
--from <key-name> --chain-id zigchain-1 \
--node https://public-zigchain-rpc.numia.xyz \
--gas-prices 0.0025uzig --gas auto --gas-adjustment 1.3

Vote on a proposal:

zigchaind tx gov vote $PROPOSAL_ID yes --from <key-name> --chain-id zigchain-1 \
--node https://public-zigchain-rpc.numia.xyz \
--gas-prices 0.0025uzig --gas auto --gas-adjustment 1.3

Vote with weight on a proposal:

zigchaind tx gov weighted-vote 1 yes=0.6,no=0.3,abstain=0.05,no_with_veto=0.05 \
--from <key-name> --chain-id zigchain-1 \
--node https://public-zigchain-rpc.numia.xyz \
--gas-prices 0.0025uzig --gas auto --gas-adjustment 1.3

Cancel a proposal:

zigchaind tx gov cancel-proposal $PROPOSAL_ID --from <key-name> --chain-id zigchain-1 \
--node https://public-zigchain-rpc.numia.xyz \
--gas-prices 0.0025uzig --gas auto --gas-adjustment 1.3

Query the proposal voting status:

zigchaind query gov tally $PROPOSAL_ID --chain-id zigchain-1 \
--node https://public-zigchain-rpc.numia.xyz

Query all the votes in a proposal:

zigchaind query gov votes $PROPOSAL_ID --chain-id zigchain-1 \
--node https://public-zigchain-rpc.numia.xyz

Query a specific vote in a proposal:

zigchaind query gov vote $PROPOSAL_ID <voter_address> --chain-id zigchain-1 \
--node https://public-zigchain-rpc.numia.xyz

Query a specific deposit in a proposal:

zigchaind query gov deposit $PROPOSAL_ID <depositor_address> --chain-id zigchain-1 \
--node https://public-zigchain-rpc.numia.xyz

Query all the deposits in a proposal:

zigchaind query gov deposits $PROPOSAL_ID --chain-id zigchain-1 \
--node https://public-zigchain-rpc.numia.xyz

Query constitution:

zigchaind query gov constitution --chain-id zigchain-1 \
--node https://public-zigchain-rpc.numia.xyz

References