# 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, of which the generator receives 2 WAVES. The community of block generators can change the block reward by voting. Thus, the Waves protocol provides decentralized and absolutely transparent monetary governance.
The block reward is introduced by feature #14 “Block Reward and Community Driven Monetary Policy”. Sharing of the block reward is introduced by feature #19 “Block Reward Distribution”.
# 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 100,000 blocks (about 70 days) following the end of voting.
- The final 10,000 blocks of each 100,000 block period is a voting period for the following 100,000 block stretch.
# 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": 3439900,
"totalWavesAmount": 11019940600000000,
"currentReward": 600000000,
"minIncrement": 50000000,
"term": 100000,
"nextCheck": 3439999,
"votingIntervalStart": 3430000,
"votingInterval": 10000,
"votingThreshold": 5001,
"votes": {
"increase": 1237,
"decrease":1624
}
}
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,440,000, the block reward is 6 WAVES. At the height of 3,530,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,540,000 to 3,639,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,630,000 to 3,639,999.