Add payload support to BlockReplayer

This commit is contained in:
Michael Sproul
2026-02-23 12:55:50 +11:00
parent 9452d51867
commit a959c5f640
11 changed files with 117 additions and 16 deletions

View File

@@ -205,8 +205,9 @@ pub fn get_attestation_performance<T: BeaconChainTypes>(
})
.collect::<Result<Vec<_>, _>>()?;
// TODO(gloas): add payloads
replayer = replayer
.apply_blocks(blocks, None)
.apply_blocks(blocks, vec![], None)
.map_err(|e| custom_server_error(format!("{:?}", e)))?;
}

View File

@@ -398,8 +398,9 @@ pub fn get_block_packing_efficiency<T: BeaconChainTypes>(
})
.collect::<Result<Vec<_>, _>>()?;
// TODO(gloas): add payloads
replayer = replayer
.apply_blocks(blocks, None)
.apply_blocks(blocks, vec![], None)
.map_err(|e: PackingEfficiencyError| custom_server_error(format!("{:?}", e)))?;
}

View File

@@ -56,6 +56,7 @@ pub fn get_block_rewards<T: BeaconChainTypes>(
let mut reward_cache = Default::default();
let mut block_rewards = Vec::with_capacity(blocks.len());
// TODO(gloas): handle payloads
let block_replayer = BlockReplayer::new(state, &chain.spec)
.pre_block_hook(Box::new(|state, block| {
state.build_all_committee_caches(&chain.spec)?;
@@ -78,7 +79,7 @@ pub fn get_block_rewards<T: BeaconChainTypes>(
)
.no_signature_verification()
.minimal_block_root_verification()
.apply_blocks(blocks, None)
.apply_blocks(blocks, vec![], None)
.map_err(unhandled_error)?;
if block_replayer.state_root_miss() {
@@ -138,11 +139,12 @@ pub fn compute_block_rewards<T: BeaconChainTypes>(
))
})?;
// TODO(gloas): handle payloads?
let block_replayer = BlockReplayer::new(parent_state, &chain.spec)
.no_signature_verification()
.state_root_iter([Ok((parent_block.state_root(), parent_block.slot()))].into_iter())
.minimal_block_root_verification()
.apply_blocks(vec![], Some(block.slot()))
.apply_blocks(vec![], vec![], Some(block.slot()))
.map_err(unhandled_error::<BeaconChainError>)?;
if block_replayer.state_root_miss() {

View File

@@ -66,11 +66,12 @@ pub fn get_state_before_applying_block<T: BeaconChainTypes>(
})
.map_err(|e| custom_not_found(format!("Parent state is not available! {:?}", e)))?;
// TODO(gloas): handle payloads?
let replayer = BlockReplayer::new(parent_state, &chain.spec)
.no_signature_verification()
.state_root_iter([Ok((parent_block.state_root(), parent_block.slot()))].into_iter())
.minimal_block_root_verification()
.apply_blocks(vec![], Some(block.slot()))
.apply_blocks(vec![], vec![], Some(block.slot()))
.map_err(unhandled_error::<BeaconChainError>)?;
Ok(replayer.into_state())