mirror of
https://github.com/sigp/lighthouse.git
synced 2026-04-19 05:48:31 +00:00
Update database and block replayer to handle payload envelopes (#8886)
Closes: - https://github.com/sigp/lighthouse/issues/8869 - Update `BlockReplayer` to support replay of execution payload envelopes. - Update `HotColdDB` to load payload envelopes and feed them to the `BlockReplayer` for both hot + cold states. However the cold DB code is not fully working yet (see: https://github.com/sigp/lighthouse/issues/8958). - Add `StatePayloadStatus` to allow callers to specify whether they want a state with a payload applied, or not. - Fix the state cache to key by `StatePayloadStatus`. - Lots of fixes to block production and block processing regarding state management. - Initial test harness support for producing+processing Gloas blocks+envelopes - A few new tests to cover Gloas DB operations Co-Authored-By: Eitan Seri- Levi <eserilev@gmail.com> Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu> Co-Authored-By: Michael Sproul <michael@sigmaprime.io> Co-Authored-By: Michael Sproul <michaelsproul@users.noreply.github.com> Co-Authored-By: Jimmy Chen <jchen.tc@gmail.com>
This commit is contained in:
@@ -20,7 +20,7 @@ use tracing::{debug, instrument};
|
||||
use types::data::ColumnIndex;
|
||||
use types::{
|
||||
BeaconStateError, ChainSpec, DataColumnSidecar, DataColumnSidecarFulu, DataColumnSubnetId,
|
||||
EthSpec, Hash256, Slot,
|
||||
EthSpec, Hash256, Slot, StatePayloadStatus,
|
||||
};
|
||||
|
||||
/// An error occurred while validating a gossip data column.
|
||||
@@ -706,9 +706,16 @@ fn verify_proposer_and_signature<T: BeaconChainTypes>(
|
||||
index = %column_index,
|
||||
"Proposer shuffling cache miss for column verification"
|
||||
);
|
||||
// We assume that the `Pending` state has the same shufflings as a `Full` state
|
||||
// for the same block. Analysis: https://hackmd.io/@dapplion/gloas_dependant_root
|
||||
chain
|
||||
.store
|
||||
.get_advanced_hot_state(block_parent_root, column_slot, parent_block.state_root)
|
||||
.get_advanced_hot_state(
|
||||
block_parent_root,
|
||||
StatePayloadStatus::Pending,
|
||||
column_slot,
|
||||
parent_block.state_root,
|
||||
)
|
||||
.map_err(|e| GossipDataColumnError::BeaconChainError(Box::new(e.into())))?
|
||||
.ok_or_else(|| {
|
||||
GossipDataColumnError::BeaconChainError(Box::new(
|
||||
|
||||
Reference in New Issue
Block a user