reth_consensus_common::calc

Function block_reward

Source
pub const fn block_reward(base_block_reward: u128, ommers: usize) -> u128
Expand description

Calculates the reward for a block, including the reward for ommer inclusion.

The base reward should be calculated using base_block_reward. ommers represents the number of ommers included in the block.

§Examples

// This is block 126 on mainnet.
let block_number = 126;
let block_difficulty = U256::from(18_145_285_642usize);
let total_difficulty = U256::from(2_235_668_675_900usize);
let number_of_ommers = 1;

let reward = base_block_reward(&*MAINNET, block_number, block_difficulty, total_difficulty)
    .map(|reward| block_reward(reward, 1));

// The base block reward is 5 ETH, and the ommer inclusion reward is 1/32th of 5 ETH.
assert_eq!(reward.unwrap(), ETH_TO_WEI * 5 + ((ETH_TO_WEI * 5) >> 5));

§References