mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-19 21:04:41 +00:00
Add timing for block availability (#5510)
* Add timing for block availability * Attestation metrics analysis * Prettier printing * Add some metrics and timings to track late blocks * Update to latest unstable * fmt * Merge latest unstable * Small tweaks * Try pushing blob timing down into verification * Simplify for clippy
This commit is contained in:
@@ -14,6 +14,7 @@ use std::fmt;
|
||||
use std::fmt::Debug;
|
||||
use std::num::NonZeroUsize;
|
||||
use std::sync::Arc;
|
||||
use std::time::Duration;
|
||||
use task_executor::TaskExecutor;
|
||||
use types::blob_sidecar::{BlobIdentifier, BlobSidecar, FixedBlobSidecarList};
|
||||
use types::{BlobSidecarList, ChainSpec, Epoch, EthSpec, Hash256, SignedBeaconBlock};
|
||||
@@ -176,8 +177,14 @@ impl<T: BeaconChainTypes> DataAvailabilityChecker<T> {
|
||||
return Err(AvailabilityCheckError::KzgNotInitialized);
|
||||
};
|
||||
|
||||
let verified_blobs = KzgVerifiedBlobList::new(Vec::from(blobs).into_iter().flatten(), kzg)
|
||||
.map_err(AvailabilityCheckError::Kzg)?;
|
||||
let seen_timestamp = self
|
||||
.slot_clock
|
||||
.now_duration()
|
||||
.ok_or(AvailabilityCheckError::SlotClockError)?;
|
||||
|
||||
let verified_blobs =
|
||||
KzgVerifiedBlobList::new(Vec::from(blobs).into_iter().flatten(), kzg, seen_timestamp)
|
||||
.map_err(AvailabilityCheckError::Kzg)?;
|
||||
|
||||
self.availability_cache
|
||||
.put_kzg_verified_blobs(block_root, verified_blobs)
|
||||
@@ -225,6 +232,7 @@ impl<T: BeaconChainTypes> DataAvailabilityChecker<T> {
|
||||
block_root,
|
||||
block,
|
||||
blobs: None,
|
||||
blobs_available_timestamp: None,
|
||||
}))
|
||||
}
|
||||
}
|
||||
@@ -244,6 +252,7 @@ impl<T: BeaconChainTypes> DataAvailabilityChecker<T> {
|
||||
block_root,
|
||||
block,
|
||||
blobs: verified_blobs,
|
||||
blobs_available_timestamp: None,
|
||||
}))
|
||||
}
|
||||
}
|
||||
@@ -289,6 +298,7 @@ impl<T: BeaconChainTypes> DataAvailabilityChecker<T> {
|
||||
block_root,
|
||||
block,
|
||||
blobs: None,
|
||||
blobs_available_timestamp: None,
|
||||
}))
|
||||
}
|
||||
}
|
||||
@@ -303,6 +313,7 @@ impl<T: BeaconChainTypes> DataAvailabilityChecker<T> {
|
||||
block_root,
|
||||
block,
|
||||
blobs: verified_blobs,
|
||||
blobs_available_timestamp: None,
|
||||
}))
|
||||
}
|
||||
}
|
||||
@@ -462,6 +473,8 @@ pub struct AvailableBlock<E: EthSpec> {
|
||||
block_root: Hash256,
|
||||
block: Arc<SignedBeaconBlock<E>>,
|
||||
blobs: Option<BlobSidecarList<E>>,
|
||||
/// Timestamp at which this block first became available (UNIX timestamp, time since 1970).
|
||||
blobs_available_timestamp: Option<Duration>,
|
||||
}
|
||||
|
||||
impl<E: EthSpec> AvailableBlock<E> {
|
||||
@@ -474,6 +487,7 @@ impl<E: EthSpec> AvailableBlock<E> {
|
||||
block_root,
|
||||
block,
|
||||
blobs,
|
||||
blobs_available_timestamp: None,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -488,6 +502,10 @@ impl<E: EthSpec> AvailableBlock<E> {
|
||||
self.blobs.as_ref()
|
||||
}
|
||||
|
||||
pub fn blobs_available_timestamp(&self) -> Option<Duration> {
|
||||
self.blobs_available_timestamp
|
||||
}
|
||||
|
||||
pub fn deconstruct(
|
||||
self,
|
||||
) -> (
|
||||
@@ -499,6 +517,7 @@ impl<E: EthSpec> AvailableBlock<E> {
|
||||
block_root,
|
||||
block,
|
||||
blobs,
|
||||
blobs_available_timestamp: _,
|
||||
} = self;
|
||||
(block_root, block, blobs)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user