mirror of
https://github.com/sigp/lighthouse.git
synced 2026-07-01 20:04:41 +00:00
Cleanup signature_verify_chain_segment
This commit is contained in:
@@ -621,6 +621,7 @@ pub(crate) fn process_block_slash_info<T: BeaconChainTypes, TErr: BlockBlobError
|
||||
/// signature in the block is invalid, an `Err` is returned (it is not possible to known _which_
|
||||
/// signature was invalid).
|
||||
///
|
||||
/// Also performs kzg verification on columns if they exist.
|
||||
/// ## Errors
|
||||
///
|
||||
/// The given `chain_segment` must contain only blocks from the same epoch, otherwise an error
|
||||
@@ -651,17 +652,17 @@ pub fn signature_verify_chain_segment<T: BeaconChainTypes>(
|
||||
&chain.spec,
|
||||
)?;
|
||||
|
||||
let mut available_blocks = Vec::with_capacity(chain_segment.len());
|
||||
let mut envelopes = Vec::with_capacity(chain_segment.len());
|
||||
let mut signature_verified_blocks = Vec::with_capacity(chain_segment.len());
|
||||
|
||||
for (block_root, block) in chain_segment {
|
||||
let consensus_context =
|
||||
ConsensusContext::new(block.slot()).set_current_block_root(block_root);
|
||||
|
||||
let (available_block, envelope) = block.into_available_block()?;
|
||||
available_blocks.push(available_block.clone());
|
||||
envelopes.push(envelope);
|
||||
// This gets columns from the block for pre-gloas and from the envelope for
|
||||
// post gloas.
|
||||
if let Some(columns) = block.data_columns() {
|
||||
verify_columns_against_block(&chain.kzg, block.as_block(), &columns)?;
|
||||
}
|
||||
let (available_block, _envelope) = block.into_available_block()?;
|
||||
signature_verified_blocks.push(SignatureVerifiedBlock {
|
||||
block: MaybeAvailableBlock::Available(available_block),
|
||||
block_root,
|
||||
@@ -670,16 +671,6 @@ pub fn signature_verify_chain_segment<T: BeaconChainTypes>(
|
||||
});
|
||||
}
|
||||
|
||||
chain
|
||||
.data_availability_checker
|
||||
.batch_verify_kzg_for_available_blocks(&available_blocks)?;
|
||||
|
||||
for (available_block, maybe_envelope) in available_blocks.iter().zip(envelopes.iter()) {
|
||||
if let Some(envelope) = maybe_envelope {
|
||||
verify_columns_against_block(&chain.kzg, available_block.block(), &envelope.columns)?;
|
||||
}
|
||||
}
|
||||
|
||||
// verify signatures
|
||||
let pubkey_cache = get_validator_pubkey_cache(chain)?;
|
||||
let mut signature_verifier = get_signature_verifier(&state, &pubkey_cache, &chain.spec);
|
||||
|
||||
Reference in New Issue
Block a user