mirror of
https://github.com/sigp/lighthouse.git
synced 2026-04-20 22:38:34 +00:00
Consensus context with proposer index caching (#3604)
## Issue Addressed Closes https://github.com/sigp/lighthouse/issues/2371 ## Proposed Changes Backport some changes from `tree-states` that remove duplicated calculations of the `proposer_index`. With this change the proposer index should be calculated only once for each block, and then plumbed through to every place it is required. ## Additional Info In future I hope to add more data to the consensus context that is cached on a per-epoch basis, like the effective balances of validators and the base rewards. There are some other changes to remove indexing in tests that were also useful for `tree-states` (the `tree-states` types don't implement `Index`).
This commit is contained in:
@@ -11,7 +11,7 @@ use slasher::{Config as SlasherConfig, Slasher};
|
||||
use state_processing::{
|
||||
common::get_indexed_attestation,
|
||||
per_block_processing::{per_block_processing, BlockSignatureStrategy},
|
||||
per_slot_processing, BlockProcessingError, VerifyBlockRoot,
|
||||
per_slot_processing, BlockProcessingError, ConsensusContext, VerifyBlockRoot,
|
||||
};
|
||||
use std::marker::PhantomData;
|
||||
use std::sync::Arc;
|
||||
@@ -1139,14 +1139,15 @@ async fn add_base_block_to_altair_chain() {
|
||||
// Ensure that it would be impossible to apply this block to `per_block_processing`.
|
||||
{
|
||||
let mut state = state;
|
||||
let mut ctxt = ConsensusContext::new(base_block.slot());
|
||||
per_slot_processing(&mut state, None, &harness.chain.spec).unwrap();
|
||||
assert!(matches!(
|
||||
per_block_processing(
|
||||
&mut state,
|
||||
&base_block,
|
||||
None,
|
||||
BlockSignatureStrategy::NoVerification,
|
||||
VerifyBlockRoot::True,
|
||||
&mut ctxt,
|
||||
&harness.chain.spec,
|
||||
),
|
||||
Err(BlockProcessingError::InconsistentBlockFork(
|
||||
@@ -1271,14 +1272,15 @@ async fn add_altair_block_to_base_chain() {
|
||||
// Ensure that it would be impossible to apply this block to `per_block_processing`.
|
||||
{
|
||||
let mut state = state;
|
||||
let mut ctxt = ConsensusContext::new(altair_block.slot());
|
||||
per_slot_processing(&mut state, None, &harness.chain.spec).unwrap();
|
||||
assert!(matches!(
|
||||
per_block_processing(
|
||||
&mut state,
|
||||
&altair_block,
|
||||
None,
|
||||
BlockSignatureStrategy::NoVerification,
|
||||
VerifyBlockRoot::True,
|
||||
&mut ctxt,
|
||||
&harness.chain.spec,
|
||||
),
|
||||
Err(BlockProcessingError::InconsistentBlockFork(
|
||||
|
||||
Reference in New Issue
Block a user