Skip to content
Tenzro
← All tutorials
Tutorial · Quickstarts

Vote on a governance proposal

Read open proposals, check your stake-weighted voting power, delegate it or cast a vote signed by your hardware-rooted key, and follow a proposal to execution.

Beginner15 min

Tenzro Network 1 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 TNZO holders who stake vote on them. Voting weight follows bonded stake, and you can delegate your voting weight without delegating the stake itself.

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.xyz

1. List open proposals

bash
tenzro governance list --active --rpc $RPC

The table shows each proposal's ID, title, type, status and current tally. Add --detailed for descriptions and voting windows, or --format json to script against it. 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. Delegate (optional)

If you would rather another participant votes on your behalf, delegate your voting weight to them. Your stake stays bonded to you and keeps earning; only the vote moves. Delegation changes state, so it is an owner method signed by your account:

ts
import { TenzroClient } from "tenzro-sdk";

const client = new TenzroClient({
  endpoint: "https://rpc.tenzro.xyz",
  apiEndpoint: "https://api.tenzro.xyz",
});

await client.governance.delegateVotingPower("0x<delegate-address>", "<amount-in-wei>");

5. Cast your vote

bash
tenzro governance vote <proposal-id> yes \
  --reason "Raises the storage bond in line with the SLA change" \
  --rpc $RPC

The choices are yes, no and abstain. The vote is a state change, so it is signed by the key behind your identity: your passkey asks for your fingerprint, face or PIN, or the operator node signs with a key derived from its TPM. 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.

6. Follow the proposal to execution

bash
tenzro governance list --detailed --rpc $RPC

When the voting window closes, a proposal that meets its quorum and threshold passes, waits out its timelock, and is then executed on chain. The timelock gives everyone time to see exactly what will change before it does.

7. Make a proposal

Any staker can propose. A proposal posts a bond in TNZO, returned if the proposal passes and burned if it fails, which keeps the queue free of spam:

bash
tenzro governance propose \
  "Raise the minimum storage bond" \
  "Aligns the storage bond with the retrievability SLA. Details and analysis: <link>" \
  --type parameter \
  --rpc $RPC

Types are parameter, treasury and upgrade, plus economic_policy with --policy-json. 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