mirror of
https://github.com/sigp/lighthouse.git
synced 2026-04-26 01:03:40 +00:00
Merge remote-tracking branch 'origin/deneb-free-blobs' into tree-states
This commit is contained in:
@@ -171,7 +171,7 @@ impl InvalidPayloadRig {
|
||||
async fn build_blocks(&mut self, num_blocks: u64, is_valid: Payload) -> Vec<Hash256> {
|
||||
let mut roots = Vec::with_capacity(num_blocks as usize);
|
||||
for _ in 0..num_blocks {
|
||||
roots.push(self.import_block(is_valid.clone()).await);
|
||||
roots.push(self.import_block(is_valid).await);
|
||||
}
|
||||
roots
|
||||
}
|
||||
@@ -225,7 +225,7 @@ impl InvalidPayloadRig {
|
||||
let head = self.harness.chain.head_snapshot();
|
||||
let state = head.beacon_state.clone();
|
||||
let slot = slot_override.unwrap_or(state.slot() + 1);
|
||||
let (block, post_state) = self.harness.make_block(state, slot).await;
|
||||
let ((block, blobs), post_state) = self.harness.make_block(state, slot).await;
|
||||
let block_root = block.canonical_root();
|
||||
|
||||
let set_new_payload = |payload: Payload| match payload {
|
||||
@@ -289,7 +289,7 @@ impl InvalidPayloadRig {
|
||||
}
|
||||
let root = self
|
||||
.harness
|
||||
.process_block(slot, block.canonical_root(), block.clone())
|
||||
.process_block(slot, block.canonical_root(), (block.clone(), blobs.clone()))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
@@ -330,7 +330,7 @@ impl InvalidPayloadRig {
|
||||
|
||||
match self
|
||||
.harness
|
||||
.process_block(slot, block.canonical_root(), block)
|
||||
.process_block(slot, block.canonical_root(), (block, blobs))
|
||||
.await
|
||||
{
|
||||
Err(error) if evaluate_error(&error) => (),
|
||||
@@ -693,7 +693,8 @@ async fn invalidates_all_descendants() {
|
||||
.state_at_slot(fork_parent_slot, StateSkipConfig::WithStateRoots)
|
||||
.unwrap();
|
||||
assert_eq!(fork_parent_state.slot(), fork_parent_slot);
|
||||
let (fork_block, _fork_post_state) = rig.harness.make_block(fork_parent_state, fork_slot).await;
|
||||
let ((fork_block, _), _fork_post_state) =
|
||||
rig.harness.make_block(fork_parent_state, fork_slot).await;
|
||||
let fork_block_root = rig
|
||||
.harness
|
||||
.chain
|
||||
@@ -704,6 +705,8 @@ async fn invalidates_all_descendants() {
|
||||
|| Ok(()),
|
||||
)
|
||||
.await
|
||||
.unwrap()
|
||||
.try_into()
|
||||
.unwrap();
|
||||
rig.recompute_head().await;
|
||||
|
||||
@@ -789,7 +792,8 @@ async fn switches_heads() {
|
||||
.state_at_slot(fork_parent_slot, StateSkipConfig::WithStateRoots)
|
||||
.unwrap();
|
||||
assert_eq!(fork_parent_state.slot(), fork_parent_slot);
|
||||
let (fork_block, _fork_post_state) = rig.harness.make_block(fork_parent_state, fork_slot).await;
|
||||
let ((fork_block, _), _fork_post_state) =
|
||||
rig.harness.make_block(fork_parent_state, fork_slot).await;
|
||||
let fork_parent_root = fork_block.parent_root();
|
||||
let fork_block_root = rig
|
||||
.harness
|
||||
@@ -801,6 +805,8 @@ async fn switches_heads() {
|
||||
|| Ok(()),
|
||||
)
|
||||
.await
|
||||
.unwrap()
|
||||
.try_into()
|
||||
.unwrap();
|
||||
rig.recompute_head().await;
|
||||
|
||||
@@ -815,13 +821,16 @@ async fn switches_heads() {
|
||||
})
|
||||
.await;
|
||||
|
||||
// The fork block should become the head.
|
||||
assert_eq!(rig.harness.head_block_root(), fork_block_root);
|
||||
// NOTE: The `import_block` method above will cause the `ExecutionStatus` of the
|
||||
// `fork_block_root`'s payload to switch from `Optimistic` to `Invalid`. This means it *won't*
|
||||
// be set as head, it's parent block will instead. This is an issue with the mock EL and/or
|
||||
// the payload invalidation rig.
|
||||
assert_eq!(rig.harness.head_block_root(), fork_parent_root);
|
||||
|
||||
// The fork block has not yet been validated.
|
||||
assert!(rig
|
||||
.execution_status(fork_block_root)
|
||||
.is_strictly_optimistic());
|
||||
.is_optimistic_or_invalid());
|
||||
|
||||
for root in blocks {
|
||||
let slot = rig
|
||||
@@ -1012,6 +1021,7 @@ async fn payload_preparation() {
|
||||
.unwrap(),
|
||||
fee_recipient,
|
||||
None,
|
||||
None,
|
||||
);
|
||||
assert_eq!(rig.previous_payload_attributes(), payload_attributes);
|
||||
}
|
||||
@@ -1034,8 +1044,8 @@ async fn invalid_parent() {
|
||||
// Produce another block atop the parent, but don't import yet.
|
||||
let slot = parent_block.slot() + 1;
|
||||
rig.harness.set_current_slot(slot);
|
||||
let (block, state) = rig.harness.make_block(parent_state, slot).await;
|
||||
let block = Arc::new(block);
|
||||
let (block_tuple, state) = rig.harness.make_block(parent_state, slot).await;
|
||||
let block = Arc::new(block_tuple.0);
|
||||
let block_root = block.canonical_root();
|
||||
assert_eq!(block.parent_root(), parent_root);
|
||||
|
||||
@@ -1045,7 +1055,7 @@ async fn invalid_parent() {
|
||||
|
||||
// Ensure the block built atop an invalid payload is invalid for gossip.
|
||||
assert!(matches!(
|
||||
rig.harness.chain.clone().verify_block_for_gossip(block.clone()).await,
|
||||
rig.harness.chain.clone().verify_block_for_gossip(block.clone().into()).await,
|
||||
Err(BlockError::ParentExecutionPayloadInvalid { parent_root: invalid_root })
|
||||
if invalid_root == parent_root
|
||||
));
|
||||
@@ -1428,13 +1438,13 @@ async fn build_optimistic_chain(
|
||||
.server
|
||||
.all_get_block_by_hash_requests_return_natural_value();
|
||||
|
||||
return rig;
|
||||
rig
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn optimistic_transition_block_valid_unfinalized() {
|
||||
let ttd = 42;
|
||||
let num_blocks = 16 as usize;
|
||||
let num_blocks = 16_usize;
|
||||
let rig = build_optimistic_chain(ttd, ttd, num_blocks).await;
|
||||
|
||||
let post_transition_block_root = rig
|
||||
@@ -1488,7 +1498,7 @@ async fn optimistic_transition_block_valid_unfinalized() {
|
||||
#[tokio::test]
|
||||
async fn optimistic_transition_block_valid_finalized() {
|
||||
let ttd = 42;
|
||||
let num_blocks = 130 as usize;
|
||||
let num_blocks = 130_usize;
|
||||
let rig = build_optimistic_chain(ttd, ttd, num_blocks).await;
|
||||
|
||||
let post_transition_block_root = rig
|
||||
@@ -1543,7 +1553,7 @@ async fn optimistic_transition_block_valid_finalized() {
|
||||
async fn optimistic_transition_block_invalid_unfinalized() {
|
||||
let block_ttd = 42;
|
||||
let rig_ttd = 1337;
|
||||
let num_blocks = 22 as usize;
|
||||
let num_blocks = 22_usize;
|
||||
let rig = build_optimistic_chain(block_ttd, rig_ttd, num_blocks).await;
|
||||
|
||||
let post_transition_block_root = rig
|
||||
@@ -1619,7 +1629,7 @@ async fn optimistic_transition_block_invalid_unfinalized() {
|
||||
async fn optimistic_transition_block_invalid_unfinalized_syncing_ee() {
|
||||
let block_ttd = 42;
|
||||
let rig_ttd = 1337;
|
||||
let num_blocks = 22 as usize;
|
||||
let num_blocks = 22_usize;
|
||||
let rig = build_optimistic_chain(block_ttd, rig_ttd, num_blocks).await;
|
||||
|
||||
let post_transition_block_root = rig
|
||||
@@ -1732,7 +1742,7 @@ async fn optimistic_transition_block_invalid_unfinalized_syncing_ee() {
|
||||
async fn optimistic_transition_block_invalid_finalized() {
|
||||
let block_ttd = 42;
|
||||
let rig_ttd = 1337;
|
||||
let num_blocks = 130 as usize;
|
||||
let num_blocks = 130_usize;
|
||||
let rig = build_optimistic_chain(block_ttd, rig_ttd, num_blocks).await;
|
||||
|
||||
let post_transition_block_root = rig
|
||||
@@ -1854,8 +1864,8 @@ impl InvalidHeadSetup {
|
||||
.chain
|
||||
.state_at_slot(slot - 1, StateSkipConfig::WithStateRoots)
|
||||
.unwrap();
|
||||
let (fork_block, _) = rig.harness.make_block(parent_state, slot).await;
|
||||
opt_fork_block = Some(Arc::new(fork_block));
|
||||
let (fork_block_tuple, _) = rig.harness.make_block(parent_state, slot).await;
|
||||
opt_fork_block = Some(Arc::new(fork_block_tuple.0));
|
||||
} else {
|
||||
// Skipped slot.
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user