Skip to main content
Version: 6.0.4

Governance & Voting Guide

TRON uses a Delegated Proof of Stake (DPoS) governance model. TRX holders can vote for Super Representatives (SRs) and participate in network governance through proposals.

Super Representatives

Super Representatives produce blocks and participate in governance. There are 27 SRs and 100+ SR Partners (candidates).

Apply to Become a Super Representative

const tx = await tronWeb.transactionBuilder.applyForSR(
'TOwnerAddress', // applicant address
'https://your-website.com', // official website URL
);
const signedTx = await tronWeb.trx.sign(tx);
const receipt = await tronWeb.trx.sendRawTransaction(signedTx);
note

Applying for SR requires burning 9,999 TRX.

Voting for Super Representatives

Vote for SRs

// Vote for multiple SRs
const votes = {
'TSR1Address': 1000, // 1000 votes for SR1
'TSR2Address': 500, // 500 votes for SR2
'TSR3Address': 200, // 200 votes for SR3
};

const tx = await tronWeb.transactionBuilder.vote(
votes, // votes object: { address: voteCount }
'TVoterAddress', // voter address (optional, uses default)
);
const signedTx = await tronWeb.trx.sign(tx);
const receipt = await tronWeb.trx.sendRawTransaction(signedTx);
tip

Your voting power equals the total TRX you have staked (frozen). You must freeze TRX before voting.

List Super Representatives

const srList = await tronWeb.trx.listSuperRepresentatives();
srList.forEach(sr => {
console.log(`${sr.address}: ${sr.voteCount} votes`);
});

Governance Proposals

SRs can create proposals to modify TRON network parameters.

Create a Proposal

// Propose to change network parameter #0 (maintenance interval) to 10000
const parameters = [{ key: 0, value: 10000 }];

const tx = await tronWeb.transactionBuilder.createProposal(
parameters, // array of { key, value } pairs
'TSRAddress', // issuer address (must be an SR)
);
const signedTx = await tronWeb.trx.sign(tx);
const receipt = await tronWeb.trx.sendRawTransaction(signedTx);

Vote on a Proposal

const tx = await tronWeb.transactionBuilder.voteProposal(
1, // proposal ID
true, // true = approve, false = disapprove
'TSRAddress', // voter address (must be an SR)
);
const signedTx = await tronWeb.trx.sign(tx);
const receipt = await tronWeb.trx.sendRawTransaction(signedTx);

Delete a Proposal

Only the proposer can delete their own pending proposal:

const tx = await tronWeb.transactionBuilder.deleteProposal(
1, // proposal ID
'TSRAddress', // issuer address (must be the original proposer)
);
const signedTx = await tronWeb.trx.sign(tx);
const receipt = await tronWeb.trx.sendRawTransaction(signedTx);

Query Proposals

// List all proposals
const proposals = await tronWeb.trx.listProposals();

// Get specific proposal by ID
const proposal = await tronWeb.trx.getProposal(1);
console.log('Proposal:', proposal);
// {
// proposal_id: 1,
// proposer_address: '...',
// parameters: [{ key: 0, value: 10000 }],
// expiration_time: ...,
// state: 'PENDING' | 'APPROVED' | 'DISAPPROVED' | 'CANCELLED',
// approvals: ['TSR1', 'TSR2', ...]
// }

Common Network Parameters

KeyParameterDescription
0MaintenanceTimeIntervalTime between maintenance periods
1AccountUpgradeCostCost to apply for SR (in SUN)
2CreateAccountFeeFee for creating a new account
3TransactionFeeBandwidth unit price
4AssetIssueFeeTRC-10 token creation fee
5WitnessPayPerBlockSR block reward
11EnergyFeeEnergy unit price
12TotalEnergyCurrentLimitTotal energy limit