mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-10 04:01:51 +00:00
* Added Block Rewards * added new type * added enum * Fix phase0 block reward in rewards API (#4929) * Merge 'guav00a/proposer-rewards-api' * Merge unstable * Revamp phase0 reward API tests - Add test_rewards_base_slashings (testing #5101) - Improve fix to not include proposer reward in attestation reward API calculation (#4856) - Adjust test approach for phase0 tests: Pad with empty epochs to include all rewards in calculation - Simplify and unify code across all reward tests * Merge branch 'unstable' into fix-4929 * Merge branch 'unstable' into fix-4929 * Merge remote-tracking branch 'origin/unstable' into fix-4929 * Fix merge fallout * Remove junk revived in merge * Address review - check for attestations with lower inclusion delay - check for double attestations in block - add test * Merge branch 'unstable' into fix-4929 * Merge branch 'unstable' into fix-4929
26 lines
993 B
Rust
26 lines
993 B
Rust
use crate::sync_committee_rewards::get_state_before_applying_block;
|
|
use crate::BlockId;
|
|
use crate::ExecutionOptimistic;
|
|
use beacon_chain::{BeaconChain, BeaconChainTypes};
|
|
use eth2::lighthouse::StandardBlockReward;
|
|
use std::sync::Arc;
|
|
use warp_utils::reject::beacon_chain_error;
|
|
/// The difference between block_rewards and beacon_block_rewards is the later returns block
|
|
/// reward format that satisfies beacon-api specs
|
|
pub fn compute_beacon_block_rewards<T: BeaconChainTypes>(
|
|
chain: Arc<BeaconChain<T>>,
|
|
block_id: BlockId,
|
|
) -> Result<(StandardBlockReward, ExecutionOptimistic, bool), warp::Rejection> {
|
|
let (block, execution_optimistic, finalized) = block_id.blinded_block(&chain)?;
|
|
|
|
let block_ref = block.message();
|
|
|
|
let mut state = get_state_before_applying_block(chain.clone(), &block)?;
|
|
|
|
let rewards = chain
|
|
.compute_beacon_block_reward(block_ref, &mut state)
|
|
.map_err(beacon_chain_error)?;
|
|
|
|
Ok((rewards, execution_optimistic, finalized))
|
|
}
|