Skip to content
Tenzro
← All tutorials
Tutorial · Quickstarts

Vote on a governance proposal

Read open proposals, check stake-weighted voting power, cast a validator's vote signed by its hardware-rooted root, and follow a proposal to execution.

Beginner15 min

Tenzro Network is stewarded by the Tenzro Foundation, a non-profit that maintains the open-source protocol and acts as the governing body for TNZO. Changes to the network's parameters, treasury and upgrades go through on-chain proposals, and validators vote on them with the stake bonded behind them.

In this tutorial you read the open proposals, check your voting power, vote, and follow a proposal through to execution.

Prerequisites

  • The tenzro CLI (see CLI reference), set up with your hardware-rooted identity: a passkey account for a person (tenzro passkey login) or the machine's TPM 2.0 or Secure Enclave for an operator node.
  • Staked TNZO. Unbonded tokens carry no vote. Staking and the 7-day unbonding period are described in Token economics.
bash
export RPC=https://rpc.tenzro.com

1. List open proposals

bash
tenzro governance list --limit 20 --rpc $RPC

The list shows each proposal's ID, action, status and current tally, newest first. Add --kind parameter_change to keep one kind, --json to script against it, and tenzro governance show <proposal-id> for one proposal in full. The same data is available from the open JSON-RPC method tenzro_listProposals.

2. Read one proposal

bash
curl -s $RPC -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tenzro_getProposal","params":["<proposal-id>"]}' | jq .result

Check what the proposal would change. Parameter proposals name the parameter and its new value; economic-policy proposals carry the complete policy as JSON, because a partial change would not add up to a whole payment split. Compare it with the policy the network is applying now:

bash
tenzro governance economic-policy --json --rpc $RPC

3. Check your voting power

bash
curl -s $RPC -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tenzro_getVotingPower","params":["0x<your-address>"]}' | jq .result

Voting power is derived from your bonded stake. Tokens that are unbonding, or held but not staked, do not count.

4. Cast your vote

bash
tenzro governance vote <proposal-id> --validator <validator-account> --yes \
  --rpc $RPC

Pass --yes or --no. A ballot carries the stake bonded behind a validator, and is cast by the validator's root: the operator's passkey asks for a fingerprint, face or PIN, or, with --machine-root, an autonomous machine's own hardware key approves it. Every signature is hybrid, with a post-quantum ML-DSA-65 leg.

Voting carries no penalty for being on the losing side. It records your preference; it does not put your stake at risk.

5. Follow the proposal to execution

bash
tenzro governance show <proposal-id> --rpc $RPC

When the voting window closes, a proposal that meets its quorum and threshold passes and waits out its timelock; then anyone may enact it with tenzro governance execute <proposal-id>. The timelock gives everyone time to see exactly what will change before it does, and to raise a concern (tenzro governance concern <proposal-id>), which past a quorum doubles the timelock once.

6. Make a proposal

An account with bonded stake can propose. The proposal carries its action as JSON:

bash
tenzro governance propose \
  --action '{"action":"parameter_change","key":"<parameter>","value":1,"memo":"Aligns the storage stake with the SLA. Analysis: <link>"}' \
  --rpc $RPC

Actions are parameter_change, policy_update and treasury_grant; --file reads the action from a JSON file. Check the current deposit and voting window in Governance before you submit. Discuss significant changes with the community and the Foundation before proposing, so voters have the context they need.

Next steps