mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-03 00:31:50 +00:00
Add API to compute block packing efficiency data (#2879)
## Issue Addressed
N/A
## Proposed Changes
Add a HTTP API which can be used to compute the block packing data for all blocks over a discrete range of epochs.
## Usage
### Request
```
curl "http:localhost:5052/lighthouse/analysis/block_packing_efficiency?start_epoch=57730&end_epoch=57732"
```
### Response
```
[
{
"slot": "1847360",
"block_hash": "0xa7dc230659802df2f99ea3798faede2e75942bb5735d56e6bfdc2df335dcd61f",
"proposer_info": {
"validator_index": 1686,
"graffiti": ""
},
"available_attestations": 7096,
"included_attestations": 6459,
"prior_skip_slots": 0
},
...
]
```
## Additional Info
This is notably different to the existing lcli code:
- Uses `BlockReplayer` #2863 and as such runs significantly faster than the previous method.
- Corrects the off-by-one #2878
- Removes the `offline` validators component. This was only a "best guess" and simply was used as a way to determine an estimate of the "true" packing efficiency and was generally not helpful in terms of direct comparisons between different packing methods. As such it has been removed from the API and any future estimates of "offline" validators would be better suited in a separate/more targeted API or as part of 'beacon watch': #2873
- Includes `prior_skip_slots`.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
//! This module contains endpoints that are non-standard and only available on Lighthouse servers.
|
||||
|
||||
mod attestation_performance;
|
||||
mod block_packing_efficiency;
|
||||
mod block_rewards;
|
||||
|
||||
use crate::{
|
||||
@@ -18,6 +19,9 @@ use store::{AnchorInfo, Split};
|
||||
pub use attestation_performance::{
|
||||
AttestationPerformance, AttestationPerformanceQuery, AttestationPerformanceStatistics,
|
||||
};
|
||||
pub use block_packing_efficiency::{
|
||||
BlockPackingEfficiency, BlockPackingEfficiencyQuery, ProposerInfo, UniqueAttestation,
|
||||
};
|
||||
pub use block_rewards::{AttestationRewards, BlockReward, BlockRewardMeta, BlockRewardsQuery};
|
||||
pub use lighthouse_network::{types::SyncState, PeerInfo};
|
||||
|
||||
|
||||
34
common/eth2/src/lighthouse/block_packing_efficiency.rs
Normal file
34
common/eth2/src/lighthouse/block_packing_efficiency.rs
Normal file
@@ -0,0 +1,34 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
use types::{Epoch, Hash256, Slot};
|
||||
|
||||
type CommitteePosition = usize;
|
||||
type Committee = u64;
|
||||
type ValidatorIndex = u64;
|
||||
|
||||
#[derive(Debug, Default, PartialEq, Eq, Hash, Clone, Serialize, Deserialize)]
|
||||
pub struct UniqueAttestation {
|
||||
pub slot: Slot,
|
||||
pub committee_index: Committee,
|
||||
pub committee_position: CommitteePosition,
|
||||
}
|
||||
#[derive(Debug, Default, PartialEq, Clone, Serialize, Deserialize)]
|
||||
pub struct ProposerInfo {
|
||||
pub validator_index: ValidatorIndex,
|
||||
pub graffiti: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, PartialEq, Clone, Serialize, Deserialize)]
|
||||
pub struct BlockPackingEfficiency {
|
||||
pub slot: Slot,
|
||||
pub block_hash: Hash256,
|
||||
pub proposer_info: ProposerInfo,
|
||||
pub available_attestations: usize,
|
||||
pub included_attestations: usize,
|
||||
pub prior_skip_slots: u64,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, PartialEq, Clone, Serialize, Deserialize)]
|
||||
pub struct BlockPackingEfficiencyQuery {
|
||||
pub start_epoch: Epoch,
|
||||
pub end_epoch: Epoch,
|
||||
}
|
||||
Reference in New Issue
Block a user