How to submit and coordinate governance proposals on Injective testnet.
Governance proposals on testnet follow the same mechanics as mainnet, but with shorter voting periods. Use a deposit slightly below min_deposit so the proposal doesn’t enter voting immediately, giving you time to coordinate.
Submitting a Proposal
All proposals use the same CLI command with a JSON file:
Use --deposit="40000000000000000000inj" (40 INJ) to keep the proposal below min_deposit initially, so it doesn’t enter voting before you’ve coordinated with validators.
Coordinating Validator Votes
After submitting your proposal, reach out to the team to coordinate testnet validator votes:
Share your proposal ID and a brief description of what it does
You can also track your proposal on the Testnet Hub.
Proposal Examples
Every proposal JSON follows the same structure. The messages array contains one or more SDK messages that execute when the proposal passes. The sender in each message must be the governance module account: inj10d07y265gmmuvt4z0w9aw880jnsr700jstypyt.
Set Token Metadata (Peggy/IBC Denoms)
Use this when you’ve bridged a token via Peggy or IBC and need to set its name, symbol, and decimals so MetaMask and Blockscout display it correctly.
{ "messages": [ { "@type": "/injective.tokenfactory.v1beta1.MsgSetDenomMetadata", "sender": "inj10d07y265gmmuvt4z0w9aw880jnsr700jstypyt", "metadata": { "base": "peggy0xYOUR_TOKEN_ADDRESS", "name": "Your Token Name", "symbol": "SYMBOL", "display": "SYMBOL", "description": "Description of your token", "decimals": 18, "denom_units": [ { "denom": "peggy0xYOUR_TOKEN_ADDRESS", "exponent": 0, "aliases": [] }, { "denom": "SYMBOL", "exponent": 18, "aliases": [] } ] } } ], "metadata": "", "deposit": "40000000000000000000inj", "title": "Set SYMBOL token metadata", "summary": "Set bank denom metadata for peggy0xYOUR_TOKEN_ADDRESS so the MTS ERC20 returns correct name, symbol, and decimals.", "expedited": true}
See the token metadata guide for why this is needed and how it works for each denom type.
Delete a Token Pair
Use this to remove a broken or incorrect MTS token pair (e.g., one deployed with wrong metadata).
{ "messages": [ { "@type": "/injective.erc20.v1beta1.MsgDeleteTokenPair", "sender": "inj10d07y265gmmuvt4z0w9aw880jnsr700jstypyt", "bank_denom": "peggy0xYOUR_TOKEN_ADDRESS" } ], "metadata": "", "deposit": "40000000000000000000inj", "title": "Delete incorrect token pair", "summary": "Remove the MTS token pair for peggy0xYOUR_TOKEN_ADDRESS so it can be recreated.", "expedited": true}
Register an Oracle Provider
Use this to register a custom price feed provider for derivative markets.