This site requires Javascript to be enabled.

Governance

Governance is crucial for decentralized decision-making and the evolution of the Archway network. It enables token holders to propose, vote on, and implement changes to the network, ensuring that it remains adaptive, secure, and aligned with the community's interests. Archway facilitates governance by providing a structured framework that outlines how proposals are made, discussed, and voted on, leveraging the staked ARCH tokens as a means to measure voting power. This process ensures that all stakeholders have a voice in the network's future direction.

Governance Parameters

For governance proposals to be voted on, they must be submitted on-chain with a deposit not less than the min_deposit parameter set in the governance module, before the deposit end time. As of version 6.0.0 of the Archway protocol, a new parameter, min_initial_deposit_ratio, was added. This ratio is the portion of the min_deposit that must be paid at the time of submission for the proposal to be added to the chain, aiming to prevent proposal spamming. This min_deposit feature is currently disabled.

Deposits are refunded if a proposal gets approved or declined. However, if there are sufficient NO WITH VETO votes, the depositors will lose their deposits. Depositors will also forfeit their deposits if a quorum of more than 1% is not reached. In both scenarios, the deposits will be burnt.

The governance parameters can be accessed via the CLI, as demonstrated in the following example:

Mainnet

Constantine

archwayd q gov params --node https://rpc.mainnet.archway.io:443

Try it:

archwayd q gov params --node https://rpc.mainnet.archway.io:443
Try It

As of this writing the following are the governance parameters for Mainnet and Constantine (Testnet):

Mainnet

Constantine

  • Proposal minimum deposit: 5000 ARCH
  • Depositing period: 2 days
  • Voting period: 7 days
  • Quorum (min % of total voting power participated for results to be valid): 33.4%
  • Threshold (min % of Yes excluding Abstain votes for a proposal to be accepted): More than 50% of Yes votes excluding Abstain votes
  • VetoThreshold (min % of NoWithVeto votes for a proposal to be rejected): 33.4%

Best Practices

Code of Conduct

See the following signaling proposal for the implementation of the code of conduct.

Preliminary Forum Discussions

Proposals should be submitted to the Governance forum for review and discussion prior to being submitted on-chain.

This will enable preliminary exploration amongst community members to fully understand the scope of the proposal, provide input/ feedback, and ultimately improve the proposal before pushing toward a formal on-chain vote.

Proposals should be posted to the forum for a minimum of 3 days before being submitted for a vote on-chain.

Info

Software upgrade proposals will not need to follow this process.

Submit proposal on testnet

Before you submit the proposal on Mainnet it is recommended to test out the proposal on Testnet first.

You may want to submit your proposal to Testnet before Mainnet for a number of reasons:

  • To signal that your proposal is about to go live on Mainnet
  • To share what the proposal will look like in advance with stakeholders
  • To test out any messages that will be executed once the proposal is approved

You will need CONST Testnet tokens to create the proposal on Testnet. There is a faucet available on Discord. You can also find the faucet links for the different networks on the Networks page.

Create proposal

In previous versions, the Archway governance module featured specific proposal types and templates for creating proposals. However, with the release of version 6.0.0 of the Archway protocol, this approach has been phased out in favor of a single, standardized method for creating governance proposals.

The previous solution was quite restrictive, but now a proposal can execute any message supported by the blockchain. You are now able to execute one or more messages automatically following the approval of a proposal.

You would therefore execute the following command to create a governance proposal:

Mainnet

Constantine

$ archwayd tx gov submit-proposal path/to/proposal.json --from mywallet --node https://rpc.mainnet.archway.io:443 --chain-id archway-1 --gas auto --gas-prices $(archwayd q rewards estimate-fees 1 --node 'https://rpc.mainnet.archway.io:443' --output json | jq -r '.gas_unit_price | (.amount + .denom)') --gas-adjustment 1.3

Where proposal.json contains:

{   // array of proto-JSON-encoded sdk.Msgs   "messages": [      {         "@type": "/cosmos.bank.v1beta1.MsgSend",         "from_address": "cosmos1...",         "to_address": "cosmos1...",         "amount":[{"denom": "stake","amount": "10"}]      }   ],   // Metadata can be any of base64 encoded, raw text, stringified json, IPFS link to json   "metadata": "4pIMOgIGx1vZGU=",   "deposit": "10aarch",   "title": "My proposal",   "summary": "A short summary of my proposal"}

Here is an example of the metadata:

{   "title": "",   "authors": [""],   "summary": "",   "details": "",   "proposal_forum_url": "",   "vote_option_context": "",}

Message types

To find the correct message format, you should refer to the proto file of the relevant module. This involves reviewing the required fields and their types, then mirroring this structure in the messages JSON array, as demonstrated in the provided example. For instance, the MsgSend message from the Cosmos SDK Bank module is used in the example. To locate the necessary fields, visit the Cosmos SDK repository, navigate to the release version installed by the Archway protocol, and explore the proto folder for the transaction message details. The MsgSend details are available at: Cosmos SDK GitHub repository.

// MsgSend represents a message to send coins from one account to another.message MsgSend {  option (cosmos.msg.v1.signer) = "from_address";  option (amino.name)           = "cosmos-sdk/MsgSend";  option (gogoproto.equal)           = false;  option (gogoproto.goproto_getters) = false;  string   from_address                    = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];  string   to_address                      = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];  repeated cosmos.base.v1beta1.Coin amount = 3 [    (gogoproto.nullable)     = false,    (amino.dont_omitempty)   = true,    (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"  ];}

This indicates that from_address, to_address, and amount are mandatory fields, and it also specifies their types, which must be considered. For instance, the amount field is of type cosmos.base.v1beta1.Coin, so it's necessary to consult the proto definition for this type and structure the fields accordingly.

Depositing funds after a proposal has been submitted

If you've submitted a proposal without yet meeting the minimum token deposit, there's no need to worry! You still have time to deposit additional tokens to advance your proposal to the voting stage if the deposit time period has not elapsed. For instance, you can execute the following command:

archwayd tx gov deposit 8 10000000000000aarch --from mywallet --node https://rpc.mainnet.archway.io:443

Where 8 is the proposal ID and 10000000000000aarch is the amount to be deposited.

Verifying the proposal transaction

After you sign the transaction, a transaction hash will appear in the terminal. You can query the transaction either through the CLI or by using a block explorer by searching for the transaction hash.

To query proposals via the CLI, you would use one of the following commands:

archwayd q gov proposals --node https://rpc.mainnet.archway.io:443

Try it:

archwayd q gov proposals --node https://rpc.mainnet.archway.io:443
Try It

Or query a specific proposal id, for example:

archwayd q gov proposal 8  --node https://rpc.mainnet.archway.io:443

Try it:

archwayd q gov proposal 8  --node https://rpc.mainnet.archway.io:443
Try It

If there are issues with the proposal transaction, you can still query the transaction ID. For example:

archwayd q tx 39EB4C85EC00281BB54EEE6BC87F17038F3528D5E54BF7FFBDF13E7C15DF92FE  --node https://rpc.mainnet.archway.io:443

Try it:

archwayd q tx 39EB4C85EC00281BB54EEE6BC87F17038F3528D5E54BF7FFBDF13E7C15DF92FE  --node https://rpc.mainnet.archway.io:443
Try It

and check the value of the raw_log field for useful information.

Voting on proposal

Now that the proposal is on-chain, you can engage the community on Discourse and Discord to make sure that the minimum quorum threshold is met.

We've put together several guides on how to vote on governance proposals. To get started, check out this overview: Voting on Governance Proposals Guide.

Drop Camp is here!

Join the queue and be one of the first to get in!.

Go Camping ↗