Reward calculation

How block production rewards (8 TRX/block) and voting rewards (128 TRX/block) are calculated and distributed to SRs, SR Partners, and their voters.

📘

Prerequisites

Two types of rewards are generated by the TRON network and distributed to SRs, SR Partners, and the voters who voted for them.

The two reward types

Reward typePer blockDistributed to
Block production reward8 TRXThe SR who produced the block
Voting reward128 TRXThe top 127 candidates (27 SRs and 100 SR Partners), weighted by votes received

Both rewards are subject to a brokerage ratio — the share that the SR or SR Partner keeps as commission before distributing the rest to their voters. The default brokerage is 20% (SR keeps 20%, voters split 80% in proportion to their votes).

SRs and SR Partners can query their brokerage ratio via wallet/getBrokerage and modify it via wallet/updateBrokerage.

Daily block budget

The TRON network produces blocks every 3 seconds. At each 6-hour Maintenance Period boundary, the boundary block itself is produced normally, but its next block is scheduled 6 seconds later (MAINTENANCE_SKIP_SLOTS = 2) to let the new active SR set initialize — the network does not "stop" for 6 seconds. So in a 24-hour day:

Total post-boundary gap time = 4 maintenance periods × 6 seconds = 24 seconds
Time available for blocks    = 86,400 − 24 = 86,376 seconds
Blocks produced per day      = 86,376 ÷ 3   = 28,792 blocks

This produces:

  • Block production rewards per day = 28,792 × 8 TRX = 230,336 TRX
  • Voting rewards per day = 28,792 × 128 TRX = 3,685,376 TRX

Block production rewards

The 8 TRX per block is awarded to whichever SR produced that block. The 27 SRs take turns producing blocks, so over a day each SR produces about 28,792 / 27 ≈ 1,066 blocks (assuming all SRs are active).

At 20% brokerage, an SR earns approximately:

Daily SR commission from block production
  = 230,336 / 27 × 20% ≈ 1,706 TRX

The remaining 80% is distributed to voters in proportion to the votes each voter cast for that SR:

Daily voter reward from block production
  = 230,336 / 27 × 80% × (Voter's votes for this SR / Total votes for this SR)
📘

SR Partners earn no block production rewards

Only the top 27 (the SRs) produce blocks. SR Partners (ranks 28–127) receive no block production rewards — only voting rewards.

Voting rewards

The 128 TRX per block is split among the top 127 candidates: the 27 SRs and the 100 SR Partners ranked 28–127. Each candidate's share is proportional to the votes they received from the network as a whole. With 28,792 blocks per day:

Daily voting reward for an SR or SR Partner
  = 3,685,376 × (Votes obtained by this candidate / Total votes for top 127)
  × Brokerage ratio

And the daily voting reward to a voter who voted for that SR or SR Partner:

Daily voter reward
  = 3,685,376 × (Voter's votes / Total votes for top 127) × (1 − Brokerage ratio)

(The math simplifies because the SR's votes cancel: a voter's reward is just their share of the total network votes, multiplied by 80%.)

Worked examples

For these examples, assume a voter has cast 10,000,000 votes, and the total votes across all top 127 candidates is 28,978,895,254 at the time of writing.

Example 1 — Voting for an SR

The SR has obtained 1,233,278,454 votes total, with a 10% brokerage.

RecipientBlock production rewardVoting rewardTotal
SR230,336 / 27 × 10% = 853.1 TRX3,685,376 × 1,233,278,454 / 28,978,895,254 × 10% = 15,684.8 TRX16,537.9 TRX
Voter230,336 / 27 × 90% × 10,000,000 / 1,233,278,454 = 62.3 TRX3,685,376 × 10,000,000 / 28,978,895,254 × 90% = 1,144.1 TRX1,206.4 TRX

Example 2 — Voting for an SR Partner

The SR Partner has obtained 82,830,160 votes total, with the default 20% brokerage. SR Partners do not produce blocks, so block production reward is 0.

RecipientBlock production rewardVoting rewardTotal
SR Partner0 TRX3,685,376 × 82,830,160 / 28,978,895,254 × 20% = 2,106.6 TRX2,106.6 TRX
Voter0 TRX3,685,376 × 10,000,000 / 28,978,895,254 × 80% = 1,017.3 TRX1,017.3 TRX
📘

Reward distribution and withdrawal

Reward distribution is automatic but withdrawals are not. Rewards accrue to your account automatically as blocks are produced. To bring them into your spendable balance, you must call wallet/withdrawbalance. Use wallet/getReward to check your unwithdrawn balance.

How rewards are accumulated and settled

The user-facing formulas above are simplifications. Internally, the network handles rewards in three layers:

  1. Per-block — when an SR produces a block, the 8 TRX block reward goes into that SR's commission pool, and the 128 TRX voting reward is added to a chain-wide cycle-level pool keyed by the current Maintenance Period cycle.
  2. Per-cycle (every Maintenance Period) — the chain records the active SR set and each SR's vote count for the cycle. Voter shares are not paid out per-block; they accumulate against this cycle-level snapshot.
  3. At withdraw time — when a voter calls wallet/withdrawbalance or queries wallet/getReward, the network computes their accumulated share across every cycle they voted in, using the snapshot of votes at the start of each cycle.

The implication for users:

  • A vote change takes effect at the next Maintenance Period boundary, not immediately. If you re-cast votes mid-cycle, the new distribution applies from the next cycle onward.
  • Cancelling votes mid-cycle does not cancel rewards for the current cycle — the snapshot taken at cycle start still credits your share.
  • Rewards are queryable any time without a withdrawal — wallet/getReward returns the unwithdrawn balance computed live from snapshots.

Reward parameters at a glance

Block production reward, voting reward, and maintenance period are chain parameters that can change via SR vote — query wallet/getchainparameters for live values. Brokerage works differently: there is a code-level default (DEFAULT_BROKERAGE = 20 in DelegationStore.java), but each SR/SR Partner can override their own brokerage individually via wallet/updateBrokerage.

ParameterMechanismDefault
Block production rewardChain parameter #5 getWitnessPayPerBlock8 TRX (8,000,000 sun)
Voting rewardChain parameter #31 getWitness127PayPerBlock128 TRX (128,000,000 sun)
Default brokerageCode constant + per-account override20% (each SR can override their own)
Maintenance periodChain parameter #0 getMaintenanceTimeInterval6 hours

Related resources