How to Use Governance

This page describes the necessary steps to be taken by those who wish to submit and vote on proposals in the Onomy DAO.

The Onomy Protocol DAO was formed on mainnet launch, in November 2022. The following steps can be taken to query and interact with the Onomy Governance module using CLI.

You will first have to download the Onomy binaries available here. Follow the instructions to get them set up so you are able to access command line.

CLI

A user can query and interact with the gov module using the CLI.

Query

The query commands allow users to query gov state.

onomyd query gov --help

deposit

The deposit command allows users to query a deposit for a given proposal from a given depositor.

onomyd query gov deposit [proposal-id] [depositer-addr] [flags]

Example:

onomyd query gov deposit 1 onomy1..

Example Output:

amount:

-amount: "100" denom: stake depositor: onomy1.. proposal_id: "1"

Deposits

The deposits command allows users to query all deposits for a given proposal.

onomyd query gov deposits [proposal-id] [flags]

Example:

onomyd query gov deposits 1

Example Output:

deposits:

-amount:

-amount: "100" denom: stake depositor: onomy1.. proposal_id: "1" pagination: next_key: null total: "0"

Param

The param command allows users to query a given parameter for the gov module.

onomyd query gov param [param-type] [flags]

Example:

onomyd query gov param voting

Example Output:

voting_period: "172800000000000"

Params

The params command allows users to query all parameters for the gov module.

onomyd query gov params [flags]

Example:

onomyd query gov params

Example Output:

Proposal

The proposal command allows users to query a given proposal.

onomyd query gov proposal [proposal-id] [flags]

Example:

onomyd query gov proposal 1

Example Output:

Proposals

The proposals command allows users to query all proposals with optional filters.

onomyd query gov proposals [flags]

Example:

onomyd query gov proposals

Example Output:

Proposer

The proposer command allows users to query the proposer for a given proposal.

onomyd query gov proposer [proposal-id] [flags]

Example:

onomyd query gov proposer 1

Example Output:

proposal_id: "1" proposer: onomy1r0tllwu5c9dtgwg3wr28lpvf76hg85f5zmh9l2

Tally

The tally command allows users to query the tally of a given proposal vote.

onomyd query gov tally [proposal-id] [flags]

Example:

onomyd query gov tally 1

Example Output:

abstain: "0"

"no": "0"

no_with_veto: "0"

"yes": "1"

Vote

The vote command allows users to query a vote for a given proposal.

onomyd query gov vote [proposal-id] [voter-addr] [flags]

Example:

onomyd query gov vote 1 onomy1..

Example Output:

option: VOTE_OPTION_YES

options:

-option: VOTE_OPTION_YES

weight: "1.000000000000000000" proposal_id: "1"

voter: onomy1..

Votes

The votes command allows users to query all votes for a given proposal.

onomyd query gov votes [proposal-id] [flags]

Example:

onomyd query gov votes 1

Example Output:

Transactions

The tx commands allow users to interact with the gov module.

onomyd tx gov --help

Deposit

The deposit command allows users to deposit tokens for a given proposal.

onomyd tx gov deposit [proposal-id] [deposit] [flags]

Example:

onomyd tx gov deposit 1 10000000stake --from onomy1..

submit-proposal

The submit-proposal command allows users to submit a governance proposal and to optionally include an initial deposit.

onomyd tx gov submit-proposal [command] [flags]

Example:

onomyd tx gov submit-proposal --title="Test Proposal" --description="testing, testing, 1, 2, 3" --type="Text" --deposit="10000000stake" --from onomy1..

Example (cancel-software-upgrade):

onomyd tx gov submit-proposal cancel-software-upgrade --title="Test Proposal" --description="testing, testing, 1, 2, 3" --deposit="10000000stake" --from onomy1..

Example (param-change):

onomyd tx gov submit-proposal param-change proposal.json --from onomy1..

Example (software-upgrade):

onomyd tx gov submit-proposal software-upgrade v2 --title="Test Proposal" --description="testing, testing, 1, 2, 3" --upgrade-height 1000000 --from onomy1..

Vote

The vote command allows users to submit a vote for a given governance proposal.

onomyd tx gov vote [command] [flags]

Example:

onomyd tx gov vote 1 yes --from onomy1..

Weighted-vote

The weighted-vote command allows users to submit a weighted vote for a given governance proposal.

onomyd tx gov weighted-vote [proposal-id] [weighted-options]

Example:

onomyd tx gov weighted-vote 1 yes=0.5,no=0.5 --from onomy1

gRPC

A user can query the gov module using gRPC endpoints.

Proposal

The Proposal endpoint allows users to query a given proposal.

onomy.gov.v1beta1.Query/Proposal

Example:

grpcurl -plaintext -d '{"proposal_id":"1"}' localhost:9090 onomy.gov.v1beta1.Query/Proposal

Example Output:

Proposals

The Proposals endpoint allows users to query all proposals with optional filters.

onomy.gov.v1beta1.Query/Proposals

Example:

grpcurl -plaintext localhost:9090 onomy.gov.v1beta1.Query/Proposals

Vote

The Vote endpoint allows users to query a vote for a given proposal.

onomy.gov.v1beta1.Query/Vote

Example:

grpcurl -plaintext -d '{"proposal_id":"1","voter":"onomy1.."}' localhost:9090 onomy.gov.v1beta1.Query/Vote

Example Output:

{ "vote": {

"proposalId": "1",

"voter": "onomy1..",

"option": "VOTE_OPTION_YES",

"options": [

{

"option": "VOTE_OPTION_YES",

"weight": "1000000000000000000"

}

]

}

}

Votes

The Votes endpoint allows users to query all votes for a given proposal.

onomy.gov.v1beta1.Query/Votes

Example:

grpcurl -plaintext -d '{"proposal_id":"1"}' localhost:9090 onomy.gov.v1beta1.Query/Votes

Example Output:

Params

The Params endpoint allows users to query all parameters for the gov module.

onomy.gov.v1beta1.Query/Params

Example:

grpcurl -plaintext -d '{"params_type":"voting"}' localhost:9090 onomy.gov.v1beta1.Query/Params

Example Output:

{

"votingParams": {

"votingPeriod": "172800s"

},

"depositParams": { "maxDepositPeriod": "0s"

},

"tallyParams": {

"quorum": "MA==",

"threshold": "MA==", "vetoThreshold": "MA==" } }

Deposit

The Deposit endpoint allows users to query a deposit for a given proposal from a given depositor.

onomy.gov.v1beta1.Query/Deposit

Example:

grpcurl -plaintext '{"proposal_id":"1","depositor":"onomy1.."}' localhost:9090 onomy.gov.v1beta1.Query/Deposit

Example Output:

{ "deposit": {

"proposalId": "1",

"depositor": "onomy1..",

"amount": [

{

"denom": "stake",

"amount": "10000000" } ] } }

Deposits

The Deposits endpoint allows users to query all deposits for a given proposal.

onomy.gov.v1beta1.Query/Deposits

Example:

grpcurl -plaintext -d '{"proposal_id":"1"}' localhost:9090 onomy.gov.v1beta1.Query/Deposits

Example Output:

{ "deposits": [ { "proposalId": "1", "depositor": "onomy1..", "amount": [ { "denom": "stake", "amount": "10000000" } ] } ], "pagination": { "total": "1" } }

TallyResult

The TallyResult endpoint allows users to query the tally of a given proposal.

onomy.gov.v1beta1.Query/TallyResult

Example:

grpcurl -plaintext -d '{"proposal_id":"1"}' localhost:9090 onomy.gov.v1beta1.Query/TallyResult

Example Output:

{

"tally": {

"yes": "1000000",

"abstain": "0",

"no": "0",

"noWithVeto": "0"

}

}

REST

A user can query the gov module using REST endpoints.

Proposal

The proposals endpoint allows users to query a given proposal.

/onomy/gov/v1beta1/proposals/{proposal_id}

Example:

curl localhost:1317/onomy/gov/v1beta1/proposals/1

Example Output:

{ "proposal": { "proposal_id": "1", "content": { "@type": "/onomy.gov.v1beta1.TextProposal", "title": "Test Proposal", "description": "testing, testing, 1, 2, 3" }, "status": "PROPOSAL_STATUS_VOTING_PERIOD", "final_tally_result": { "yes": "0", "abstain": "0", "no": "0", "no_with_veto": "0" }, "submit_time": "2021-09-16T19:40:08.712440474Z", "deposit_end_time": "2021-09-18T19:40:08.712440474Z", "total_deposit": [ { "denom": "stake", "amount": "10000000" } ], "voting_start_time": "2021-09-16T19:40:08.712440474Z", "voting_end_time": "2021-09-18T19:40:08.712440474Z" } }

Proposals

The proposals endpoint also allows users to query all proposals with optional filters.

/onomy/gov/v1beta1/proposals

Example:

curl localhost:1317/onomy/gov/v1beta1/proposals

Voter Vote

The votes endpoint allows users to query a vote for a given proposal.

/onomy/gov/v1beta1/proposals/{proposal_id}/votes/{voter}

Example:

curl localhost:1317/onomy/gov/v1beta1/proposals/1/votes/onomy1..

Example Output:

{ "vote": { "proposal_id": "1", "voter": "onomy1..", "option": "VOTE_OPTION_YES", "options": [ { "option": "VOTE_OPTION_YES", "weight": "1.000000000000000000" } ] } }

Votes

The votes endpoint allows users to query all votes for a given proposal.

/onomy/gov/v1beta1/proposals/{proposal_id}/votes

Example:

curl localhost:1317/onomy/gov/v1beta1/proposals/1/votes

Example Output:

{ "votes": [ { "proposal_id": "1", "voter": "onomy1..", "option": "VOTE_OPTION_YES", "options": [ { "option": "VOTE_OPTION_YES", "weight": "1.000000000000000000" } ] } ], "pagination": { "next_key": null, "total": "1" } }

Params

The params endpoint allows users to query all parameters for the gov module.

/onmoy/gov/v1beta1/params/{params_type}

Example:

curl localhost:1317/onomy/gov/v1beta1/params/voting

Example Output:

{ "voting_params": { "voting_period": "172800s" }, "deposit_params": { "min_deposit": [ ], "max_deposit_period": "0s" }, "tally_params": { "quorum": "0.000000000000000000", "threshold": "0.000000000000000000", "veto_threshold": "0.000000000000000000" } }

Deposits

The deposits endpoint allows users to query a deposit for a given proposal from a given depositor.

/onomy/gov/v1beta1/proposals/{proposal_id}/deposits/{depositor}

Example:

curl localhost:1317/onomy/gov/v1beta1/proposals/1/deposits/onomy1..

Example Output:

{ "deposit": { "proposal_id": "1", "depositor": "onomy1..", "amount": [ { "denom": "stake", "amount": "10000000" } ] } }

Proposal Deposits

The deposits endpoint allows users to query all deposits for a given proposal.

/onomy/gov/v1beta1/proposals/{proposal_id}/deposits

Example:

curl localhost:1317/onomy/gov/v1beta1/proposals/1/deposits

Example Output

{ "deposits": [ { "proposal_id": "1", "depositor": "onomy1..", "amount": [ { "denom": "stake", "amount": "10000000" } ] } ], "pagination": { "next_key": null, "total": "1" } }

Tally

The tally endpoint allows users to query the tally of a given proposal.

/onomy/gov/v1beta1/proposals/{proposal_id}/tally

Example:

curl localhost:1317/onomy/gov/v1beta1/proposals/1/tally

Example Output:

{ "tally": { "yes": "1000000", "abstain": "0", "no": "0", "no_with_veto": "0" } }

Last updated