267d8babc8
## Issue Addressed Resolves #2936 ## Proposed Changes Adds functionality for calling [`validator/prepare_beacon_proposer`](https://ethereum.github.io/beacon-APIs/?urls.primaryName=dev#/Validator/prepareBeaconProposer) in advance. There is a `BeaconChain::prepare_beacon_proposer` method which, which called, computes the proposer for the next slot. If that proposer has been registered via the `validator/prepare_beacon_proposer` API method, then the `beacon_chain.execution_layer` will be provided the `PayloadAttributes` for us in all future forkchoiceUpdated calls. An artificial forkchoiceUpdated call will be created 4s before each slot, when the head updates and when a validator updates their information. Additionally, I added strict ordering for calls from the `BeaconChain` to the `ExecutionLayer`. I'm not certain the `ExecutionLayer` will always maintain this ordering, but it's a good start to have consistency from the `BeaconChain`. There are some deadlock opportunities introduced, they are documented in the code. ## Additional Info - ~~Blocked on #2837~~ Co-authored-by: realbigsean <seananderson33@GMAIL.com>
35 lines
1.6 KiB
Rust
35 lines
1.6 KiB
Rust
pub use lighthouse_metrics::*;
|
|
|
|
pub const HIT: &str = "hit";
|
|
pub const MISS: &str = "miss";
|
|
pub const GET_PAYLOAD: &str = "get_payload";
|
|
pub const NEW_PAYLOAD: &str = "new_payload";
|
|
pub const FORKCHOICE_UPDATED: &str = "forkchoice_updated";
|
|
pub const GET_TERMINAL_POW_BLOCK_HASH: &str = "get_terminal_pow_block_hash";
|
|
pub const IS_VALID_TERMINAL_POW_BLOCK_HASH: &str = "is_valid_terminal_pow_block_hash";
|
|
|
|
lazy_static::lazy_static! {
|
|
pub static ref EXECUTION_LAYER_PROPOSER_INSERTED: Result<IntCounter> = try_create_int_counter(
|
|
"execution_layer_proposer_inserted",
|
|
"Count of times a new proposer is known",
|
|
);
|
|
pub static ref EXECUTION_LAYER_PROPOSER_DATA_UPDATED: Result<IntCounter> = try_create_int_counter(
|
|
"execution_layer_proposer_data_updated",
|
|
"Count of times new proposer data is supplied",
|
|
);
|
|
pub static ref EXECUTION_LAYER_REQUEST_TIMES: Result<HistogramVec> = try_create_histogram_vec(
|
|
"execution_layer_request_times",
|
|
"Duration of calls to ELs",
|
|
&["method"]
|
|
);
|
|
pub static ref EXECUTION_LAYER_PAYLOAD_ATTRIBUTES_LOOKAHEAD: Result<Histogram> = try_create_histogram(
|
|
"execution_layer_payload_attributes_lookahead",
|
|
"Duration between an fcU call with PayloadAttributes and when the block should be produced",
|
|
);
|
|
pub static ref EXECUTION_LAYER_PRE_PREPARED_PAYLOAD_ID: Result<IntCounterVec> = try_create_int_counter_vec(
|
|
"execution_layer_pre_prepared_payload_id",
|
|
"Indicates hits or misses for already having prepared a payload id before payload production",
|
|
&["event"]
|
|
);
|
|
}
|