mirror of
https://github.com/sigp/lighthouse.git
synced 2026-05-30 20:57:10 +00:00
Convert RpcBlock to an enum that indicates availability (#8424)
Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu> Co-Authored-By: Mark Mackey <mark@sigmaprime.io> Co-Authored-By: Eitan Seri-Levi <eserilev@gmail.com> Co-Authored-By: Jimmy Chen <jchen.tc@gmail.com>
This commit is contained in:
@@ -21,7 +21,6 @@ use beacon_chain::{
|
||||
compute_proposer_duties_from_head, ensure_state_can_determine_proposers_for_epoch,
|
||||
},
|
||||
custody_context::NodeCustodyType,
|
||||
data_availability_checker::MaybeAvailableBlock,
|
||||
historical_blocks::HistoricalBlockError,
|
||||
migrate::MigratorConfig,
|
||||
};
|
||||
@@ -3176,16 +3175,19 @@ async fn weak_subjectivity_sync_test(
|
||||
.expect("should get block")
|
||||
.expect("should get block");
|
||||
|
||||
if let MaybeAvailableBlock::Available(block) = harness
|
||||
.chain
|
||||
.data_availability_checker
|
||||
.verify_kzg_for_rpc_block(
|
||||
let rpc_block =
|
||||
harness.build_rpc_block_from_store_blobs(Some(block_root), Arc::new(full_block));
|
||||
|
||||
match rpc_block {
|
||||
RpcBlock::FullyAvailable(available_block) => {
|
||||
harness
|
||||
.build_rpc_block_from_store_blobs(Some(block_root), Arc::new(full_block)),
|
||||
)
|
||||
.expect("should verify kzg")
|
||||
{
|
||||
available_blocks.push(block);
|
||||
.chain
|
||||
.data_availability_checker
|
||||
.verify_kzg_for_available_block(&available_block)
|
||||
.expect("should verify kzg");
|
||||
available_blocks.push(available_block);
|
||||
}
|
||||
RpcBlock::BlockOnly { .. } => panic!("Should be an available block"),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3194,15 +3196,16 @@ async fn weak_subjectivity_sync_test(
|
||||
let mut batch_with_invalid_first_block =
|
||||
available_blocks.iter().map(clone_block).collect::<Vec<_>>();
|
||||
batch_with_invalid_first_block[0] = {
|
||||
let (block_root, block, data) = clone_block(&available_blocks[0]).deconstruct();
|
||||
let (_, block, data) = clone_block(&available_blocks[0]).deconstruct();
|
||||
let mut corrupt_block = (*block).clone();
|
||||
*corrupt_block.signature_mut() = Signature::empty();
|
||||
AvailableBlock::__new_for_testing(
|
||||
block_root,
|
||||
AvailableBlock::new(
|
||||
Arc::new(corrupt_block),
|
||||
data,
|
||||
&beacon_chain.data_availability_checker,
|
||||
Arc::new(spec),
|
||||
)
|
||||
.expect("available block")
|
||||
};
|
||||
|
||||
// Importing the invalid batch should error.
|
||||
@@ -3746,7 +3749,13 @@ async fn process_blocks_and_attestations_for_unaligned_checkpoint() {
|
||||
assert_eq!(split.block_root, valid_fork_block.parent_root());
|
||||
assert_ne!(split.state_root, unadvanced_split_state_root);
|
||||
|
||||
let invalid_fork_rpc_block = RpcBlock::new_without_blobs(None, invalid_fork_block.clone());
|
||||
let invalid_fork_rpc_block = RpcBlock::new(
|
||||
invalid_fork_block.clone(),
|
||||
None,
|
||||
&harness.chain.data_availability_checker,
|
||||
harness.spec.clone(),
|
||||
)
|
||||
.unwrap();
|
||||
// Applying the invalid block should fail.
|
||||
let err = harness
|
||||
.chain
|
||||
@@ -3762,7 +3771,13 @@ async fn process_blocks_and_attestations_for_unaligned_checkpoint() {
|
||||
assert!(matches!(err, BlockError::WouldRevertFinalizedSlot { .. }));
|
||||
|
||||
// Applying the valid block should succeed, but it should not become head.
|
||||
let valid_fork_rpc_block = RpcBlock::new_without_blobs(None, valid_fork_block.clone());
|
||||
let valid_fork_rpc_block = RpcBlock::new(
|
||||
valid_fork_block.clone(),
|
||||
None,
|
||||
&harness.chain.data_availability_checker,
|
||||
harness.spec.clone(),
|
||||
)
|
||||
.unwrap();
|
||||
harness
|
||||
.chain
|
||||
.process_block(
|
||||
|
||||
Reference in New Issue
Block a user