Submit a governance proposal

Submit a Governance Proposal via CLI (Mac)

In this guide, we will provide a step-by-step walkthrough on how to submit a governance proposal using the Command Line Interface (CLI).

Prerequisites

  • Have homebrew: https://brew.sh/

  • Install Go 1.21, git

  • Follow the dYdX setup guide below

Setup the dYdX CLI

Create an address to submit the proposal

Set up a dYdX Chain address:

$ dydxprotocold keys add <address name>

- address: dydx1m5...dfpe3
  name: <address name>
  pubkey: '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"BrarpF..Q1"}'
  type: local


**Important** write this mnemonic phrase in a safe place.
It is the only way to recover your account if you ever forget your password.

Some mnemonic words...

Preparing a governance proposal

  1. Do a test transaction to initialize the address or the chain will not know you initialized a new address. This can be done by receiving some funds in your new wallet.

  2. Create a new JSON file based on previous proposals to get the correct format. Refer to previous proposals here: https://www.mintscan.io/dydx/proposals, for example:

  • deposit cannot be less than the minimum deposit amount, which is 2000 DYDX, or 2000000000000000000000adydx . In the example above, we use 10000 DYDX, which will make the proposal active upon publishing.

  • messages can contain more than one message for sub-items of the proposal, but cannot be empty, i.e. a proposal needs at least one motion. Adding more than one message would look like follows

  • authorityuse the same authority for each message - dydx10d07y265gmmuvt4z0w9aw880jnsr700jnmapky

  1. Create the proposal Tx.

πŸ’‘ This step can be executed from any workstation. It is not even necessary to have added neither walletA , walletB , walletC nor ourMultisig .

Submit the proposal first on Testnet and if succssful, submit the proposal on mainnet.

  • dydx1z79c98w069eugzjme0dkd6quuhm8vfh2a00smh is the address of the multisig from which we send tokens - in case you have instantiated the multisig locally, you can use it’s name, e.g. ourMultisig

  • proposalFile.json is the path to the file where you have store the proposal JSON

  • fees value 5000000000000000adydx may need adjustment; the transaction will fail only when broadcasted if this amount is not enough

Last updated