# Community-Driven Monetary Policy
# Block Reward
Block reward is an additional issue of WAVES token with each new block on the blockchain. The reward is shared between the block generator, Waves DAO, and the XTN buy-back contract.
The current block reward is 6 WAVES. Once feature #23 "Boost Block Reward" is activated, the block reward will be 60 WAVES (the multiplier of ×10 applies within 300,000 blocks on Mainnet, 2000 blocks on Testnet and Stagenet). The community of block generators can change the block reward by voting.
The block reward is introduced by feature #14 “Block Reward and Community Driven Monetary Policy”. Block reward distribution is introduced by feature #19 “Block Reward Distribution” and adjusted by feature #20 “Capped XTN buy-back & DAO amounts”.
# Block Reward Distribution
Before activation of feature #23 “Boost Block Reward” and 300,000 blocks after activation:
- If the block reward is greater than 6 WAVES, then Waves DAO and the XTN buy-back smart contract each receive 2 WAVES, and the block generator receives the rest.
- If the block reward is between 2 and 6 WAVES, then Waves DAO and the XTN buy-back smart contract each receive
(R - 2) / 2
, whereR
is the block reward (integer division is assumed). - If the block reward is less than 2 WAVES, the block generator receives the entire block reward.
Within 300,000 blocks since activation of feature #23, each participant's portion of the block reward is calculated as described above and then multiplied by 10.
Since activation of feature #21 “Cease XTN buy-back” (but not earlier than 100,000 blocks after activation of feature #19), the crediting of the block reward share to the XTN buy-back smart contract will cease. Its share will be received by the block generator.
# Voting Rules
- Each generating node can vote to increase, decrease or leave the current reward unchanged.
- Voting lasts for 10,000 blocks.
- As a result of voting, the block reward may increase or decrease by 0.5 WAVES or remain the same.
- The established block reward remains unchanged for 50,000 blocks (about 35 days) following the end of voting. (Before activation of feature #20 this term was 100,000 blocks.)
- During the last 10,000 blocks of the 50,000 block term, voting for the next term is held.
# Current Voting Status
You can view the current voting status by making a request to the Node REST API.
Example request:
curl -X 'GET' \
'http://nodes.wavesnodes.com/blockchain/rewards' \
-H 'accept: application/json'
Example response:
{
"height": 3751610,
"totalWavesAmount": 11206966600000000,
"currentReward": 600000000,
"minIncrement": 50000000,
"term": 50000,
"nextCheck": 3789999,
"votingIntervalStart": 3780000,
"votingInterval": 10000,
"votingThreshold": 5001,
"votes": {
"increase": 0,
"decrease": 0
},
"daoAddress": "3PEgG7eZHLFhcfsTSaYxgRhZsh4AxMvA4Ms",
"xtnBuybackAddress": "3PFjHWuH6WXNJbwnfLHqNFBpwBS5dkYjTfv"
}
In the example above, the value of the JSON's currentReward
field is 600,000,000 WAVELETs, that is 6 WAVES.
# Cast Vote
A generating node specifies the new desired reward size using the waves.rewards.desired setting in the node configuration file; the setting value is specified in WAVELETs.
If the value is greater than the current reward size, then the block generator votes for the current reward size increase; if the value is smaller — for the decrease. If the setting value is not specified in the configuration file, then the generator votes for keeping the current reward size.
When a node generates a block, it writes into that block the value of the waves.rewards.desired
setting from its own configuration file. If the setting value is not specified in the configuration file, then -1 is written to the block.
During the voting period of 10,000 blocks, a node can generate several blocks, therefore one node can vote several times. How often a node generates blocks is determined by the LPoS consensus.
# Wrap-up
To count the votes, all 10,000 blocks generated during the voting period are inspected.
If either -1 or the value that is equal to the current reward size is recorded to the block, then the generator votes for keeping the current reward size.
If the value recorded to the block is greater than the current reward size, then the generator votes for the current reward size increase; if the value is smaller — for the decrease.
The block reward is increased/decreased only if more than half of the 10,000 votes, that is 5,001 votes or more, were given for increase/decrease. The amount of the current reward is increased/decreased by 0.5 WAVES step.
# Example
At the blockchain height of 3,751,610, the block reward is 6 WAVES. At the height of 3,780,000, the next voting begins.
Let's say that 4500 votes of 10,000 voting blocks are cast to increase the reward, 1500 to decrease, and 4000 to keep the reward the same.
As a result, at height from 3,790,000 to 3,839,999, the block reward will remain the same 6 WAVES. Although the highest number of votes are cast for the reward increase, it is not enough to change the current reward size. For the current size to be increased, at least 5,001 votes must be cast for the increase.
The next vote will take place from a height of 3,830,000 to 3,839,999.
# Voting While Feature #23 is Active
Feature #23 does not impact the voting procedure itself. The ×10 multiplier only affects the final block reward.
Details:
- The generator specifies the desired reward size before applying the ×10 multiplier: for example, 700_000_000, which corresponds to 7 WAVES.
- When votes are counted, the desired reward size is compared to the existing reward size before applying the multiplier, currently 6 WAVES.
- If a majority of the votes support an increase in the reward size, it is raised by 0.5 WAVES, from 6 to 6.5 WAVES. Subsequently, the ×10 multiplier is applied. Therefore, for the next 50,000 blocks (and within 300,000 blocks since the activation of feature #23), the block generator, Waves DAO, and the XTN buy-back smart contract will collectively receive 65 WAVES per block. (In case of reducing the reward size, the calculation is similar.)