mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-06 10:11:44 +00:00
Builder Specs v0.2.0 (#3134)
## Issue Addressed https://github.com/sigp/lighthouse/issues/3091 Extends https://github.com/sigp/lighthouse/pull/3062, adding pre-bellatrix block support on blinded endpoints and allowing the normal proposal flow (local payload construction) on blinded endpoints. This resulted in better fallback logic because the VC will not have to switch endpoints on failure in the BN <> Builder API, the BN can just fallback immediately and without repeating block processing that it shouldn't need to. We can also keep VC fallback from the VC<>BN API's blinded endpoint to full endpoint. ## Proposed Changes - Pre-bellatrix blocks on blinded endpoints - Add a new `PayloadCache` to the execution layer - Better fallback-from-builder logic ## Todos - [x] Remove VC transition logic - [x] Add logic to only enable builder flow after Merge transition finalization - [x] Tests - [x] Fix metrics - [x] Rustdocs Co-authored-by: Mac L <mjladson@pm.me> Co-authored-by: realbigsean <sean@sigmaprime.io>
This commit is contained in:
@@ -708,6 +708,46 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
|
||||
.default_value("250")
|
||||
.takes_value(true)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("builder-fallback-skips")
|
||||
.long("builder-fallback-skips")
|
||||
.help("If this node is proposing a block and has seen this number of skip slots \
|
||||
on the canonical chain in a row, it will NOT query any connected builders, \
|
||||
and will use the local execution engine for payload construction.")
|
||||
.default_value("3")
|
||||
.takes_value(true)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("builder-fallback-skips-per-epoch")
|
||||
.long("builder-fallback-skips-per-epoch")
|
||||
.help("If this node is proposing a block and has seen this number of skip slots \
|
||||
on the canonical chain in the past `SLOTS_PER_EPOCH`, it will NOT query \
|
||||
any connected builders, and will use the local execution engine for \
|
||||
payload construction.")
|
||||
.default_value("8")
|
||||
.takes_value(true)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("builder-fallback-epochs-since-finalization")
|
||||
.long("builder-fallback-epochs-since-finalization")
|
||||
.help("If this node is proposing a block and the chain has not finalized within \
|
||||
this number of epochs, it will NOT query any connected builders, \
|
||||
and will use the local execution engine for payload construction. Setting \
|
||||
this value to anything less than 2 will cause the node to NEVER query \
|
||||
connected builders. Setting it to 2 will cause this condition to be hit \
|
||||
if there are skips slots at the start of an epoch, right before this node \
|
||||
is set to propose.")
|
||||
.default_value("3")
|
||||
.takes_value(true)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("builder-fallback-disable-checks")
|
||||
.long("builder-fallback-disable-checks")
|
||||
.help("This flag disables all checks related to chain health. This means the builder \
|
||||
API will always be used for payload construction, regardless of recent chain \
|
||||
conditions.")
|
||||
.takes_value(false)
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("count-unrealized")
|
||||
.long("count-unrealized")
|
||||
|
||||
Reference in New Issue
Block a user