Block Producer Rewards

Rewards for Block Producers (BPs) are issued through inflation by minting new tokens. The system maintains a constant inflation rate, and the minted tokens are distributed as rewards to the Block Producers, providing them with financial incentives for operating the network.

1. Inflation Generation

EOSIO mints tokens based on an annual inflation rate (continuous_rate). The amount of new tokens is calculated based on the total supply of tokens currently issued and the rate of increase over time. The additional tokens generated through inflation are calculated using the following formula:

Additional_Inflation = (continuous_rate * total_supply * time_elapsed) / useconds_per_year

Where:

• continuous_rate: Annual inflation rate

• total_supply: Total tokens currently issued

• time_elapsed: Time elapsed since the last reward payout (in microseconds)

• useconds_per_year: Number of microseconds in a year (= 31,536,000 seconds)

This process allows the system to mint additional tokens through inflation, which are used for BP rewards and network operations.

2. Token Distribution

The newly minted tokens are distributed as rewards to Block Producers in two main ways:

• Per-block reward: Rewards proportional to the number of blocks produced by the Block Producer.

• Per-vote reward: Rewards proportional to the number of votes received by the Block Producer.

The proportion of total inflation tokens allocated to BPs is calculated as follows:

To_Producers = (new_tokens * pay_factor_precision) / inflation_pay_factor

Where:

• new_tokens: Total amount of new tokens minted

• pay_factor_precision: A constant for precision adjustment

• inflation_pay_factor: Inflation factor for BP rewards

The total BP rewards are divided into two parts:

• Per-block reward: Rewards distributed based on the number of blocks produced by BPs.

To_Per-block_Pay = (To_Producers * pay_factor_precision) / votepay_factor

• Per-vote reward: Rewards distributed based on the number of votes received by BPs.

To_Per-vote_Pay = To_Producers - To_Per-block_Pay

3. Block Producer Rewards

Each Block Producer can claim rewards based on the number of blocks they have produced and the votes they have received. This claim can be made once per day, and the rewards are divided into per-block and per-vote rewards.

• Per-block pay: Paid proportionally to the number of blocks produced by the BP.

Producer_Per-block_Pay = (perblock_bucket * unpaid_blocks) / total_unpaid_blocks

• Per-vote pay: Paid based on the number of votes received and the duration those votes have been maintained.

Producer_Per-vote_Pay = (new_votepay_share * pervote_bucket) / total_votepay_share

Here, new_votepay_share reflects the total votes received by the BP up to the claim time, considering the duration those votes have been held.

Last updated