mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-14 18:32:42 +00:00
## Issue Addressed #3708 ## Proposed Changes - Add `is_finalized_block` method to `BeaconChain` in `beacon_node/beacon_chain/src/beacon_chain.rs`. - Add `is_finalized_state` method to `BeaconChain` in `beacon_node/beacon_chain/src/beacon_chain.rs`. - Add `fork_and_execution_optimistic_and_finalized` in `beacon_node/http_api/src/state_id.rs`. - Add `ExecutionOptimisticFinalizedForkVersionedResponse` type in `consensus/types/src/fork_versioned_response.rs`. - Add `execution_optimistic_finalized_fork_versioned_response`function in `beacon_node/http_api/src/version.rs`. - Add `ExecutionOptimisticFinalizedResponse` type in `common/eth2/src/types.rs`. - Add `add_execution_optimistic_finalized` method in `common/eth2/src/types.rs`. - Update API response methods to include finalized. - Remove `execution_optimistic_fork_versioned_response` Co-authored-by: Michael Sproul <michael@sigmaprime.io>
28 lines
1.0 KiB
Rust
28 lines
1.0 KiB
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 block_root = block.canonical_root();
|
|
|
|
let mut state = get_state_before_applying_block(chain.clone(), &block)?;
|
|
|
|
let rewards = chain
|
|
.compute_beacon_block_reward(block_ref, block_root, &mut state)
|
|
.map_err(beacon_chain_error)?;
|
|
|
|
Ok((rewards, execution_optimistic, finalized))
|
|
}
|