diff --git a/crates/rpc/rpc/src/trace.rs b/crates/rpc/rpc/src/trace.rs index e73e2adbfdc..50a2966e300 100644 --- a/crates/rpc/rpc/src/trace.rs +++ b/crates/rpc/rpc/src/trace.rs @@ -6,7 +6,7 @@ use crate::eth::{ }; use async_trait::async_trait; use jsonrpsee::core::RpcResult as Result; -use reth_consensus_common::calc::{base_block_reward, block_reward}; +use reth_consensus_common::calc::{base_block_reward, block_reward, ommer_reward}; use reth_primitives::{revm::env::tx_env_with_recovered, BlockId, Bytes, SealedHeader, B256, U256}; use reth_provider::{BlockReader, ChainSpecProvider, EvmEnvProvider, StateProviderFactory}; use reth_revm::database::StateProviderDatabase; @@ -363,25 +363,25 @@ where block.header.difficulty, header_td, ) { + let block_reward = block_reward(base_block_reward, block.ommers.len()); traces.push(reward_trace( &block.header, RewardAction { author: block.header.beneficiary, reward_type: RewardType::Block, - value: U256::from(base_block_reward), + value: U256::from(block_reward), }, )); - if !block.ommers.is_empty() { + for uncle in &block.ommers { + let uncle_reward = + ommer_reward(base_block_reward, block.header.number, uncle.number); traces.push(reward_trace( &block.header, RewardAction { - author: block.header.beneficiary, + author: uncle.beneficiary, reward_type: RewardType::Uncle, - value: U256::from( - block_reward(base_block_reward, block.ommers.len()) - - base_block_reward, - ), + value: U256::from(uncle_reward), }, )); }