Block v3 builder boost factor (#5035)

* builder boost factor

* default boost factor

* revert

* deprecate always_prefer_builder_payload, builder-profit-threshold, ignore_builder_override_suggestion_threshold and builder_comparison_factor flags

* revert

* set deprecated flags to no op, revert should_override_builder

* fix test, calc boosted relay value correctly, dont calculate if none

* Add deprecation warnings and restore CLI docs
This commit is contained in:
Eitan Seri-Levi
2024-01-08 02:10:32 +02:00
committed by GitHub
parent 0c97762032
commit 9c1505d082
20 changed files with 201 additions and 437 deletions

View File

@@ -176,31 +176,6 @@ By default, Lighthouse is strict with these conditions, but we encourage users t
- `--builder-fallback-disable-checks` - 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.
## Builder Profit Threshold
If you are generally uneasy with the risks associated with outsourced payload production (liveness/censorship) but would
consider using it for the chance of out-sized rewards, this flag may be useful:
`--builder-profit-threshold <WEI_VALUE>`
The number provided indicates the minimum reward that an external payload must provide the proposer for it to be considered
for inclusion in a proposal. For example, if you'd only like to use an external payload for a reward of >= 0.25 ETH, you
would provide your beacon node with `--builder-profit-threshold 250000000000000000`. If it's your turn to propose and the
most valuable payload offered by builders is only 0.1 ETH, the local execution engine's payload will be used.
Since the [Capella](https://ethereum.org/en/history/#capella) upgrade, a comparison of the external payload and local payload will be made according to the [engine_getPayloadV2](https://github.com/ethereum/execution-apis/blob/main/src/engine/shanghai.md#engine_getpayloadv2) API. The logic is as follows:
```
if local payload value >= builder payload value:
use local payload
else if builder payload value >= builder_profit_threshold or builder_profit_threshold == 0:
use builder payload
else:
use local payload
```
If you would like to always use the builder payload, you can add the flag `--always-prefer-builder-payload` to the beacon node.
## Checking your builder config
You can check that your builder is configured correctly by looking for these log messages.

View File

@@ -9,8 +9,7 @@ USAGE:
lighthouse beacon_node [FLAGS] [OPTIONS]
FLAGS:
--always-prefer-builder-payload If set, the beacon node always uses the payload from the builder instead
of the local payload.
--always-prefer-builder-payload This flag is deprecated and has no effect.
--always-prepare-payload Send payload attributes with every fork choice update. This is intended
for use by block builders, relays and developers. You should set a fee
recipient on this BN and also consider adjusting the --prepare-payload-
@@ -175,12 +174,8 @@ OPTIONS:
`SLOTS_PER_EPOCH`, it will NOT query any connected builders, and will use the local execution engine for
payload construction. [default: 8]
--builder-profit-threshold <WEI_VALUE>
The minimum reward in wei provided to the proposer by a block builder for an external payload to be
considered for inclusion in a proposal. If this threshold is not met, the local EE's payload will be used.
This is currently *NOT* in comparison to the value of the local EE's payload. It simply checks whether the
total proposer reward from an external payload is equal to or greater than this value. In the future, a
comparison to a local payload is likely to be added. Example: Use 250000000000000000 to set the threshold to
0.25 ETH. [default: 0]
This flag is deprecated and has no effect.
--builder-user-agent <STRING>
The HTTP user agent to send alongside requests to the builder URL. The default is Lighthouse's version
string.
@@ -313,14 +308,6 @@ OPTIONS:
--http-tls-key <http-tls-key>
The path of the private key to be used when serving the HTTP API server over TLS. Must not be password-
protected.
--ignore-builder-override-suggestion-threshold <PERCENTAGE>
When the EE advises Lighthouse to ignore the builder payload, this flag specifies a percentage threshold for
the difference between the reward from the builder payload and the local EE's payload. This threshold must
be met for Lighthouse to consider ignoring the EE's suggestion. If the reward from the builder's payload
doesn't exceed the local payload by at least this percentage, the local payload will be used. The conditions
under which the EE may make this suggestion depend on the EE's implementation, with the primary intent being
to safeguard against potential censorship attacks from builders. Setting this flag to 0 will cause
Lighthouse to always ignore the EE's suggestion. Default: 10.0 (equivalent to 10%). [default: 10.0]
--invalid-gossip-verified-blocks-path <PATH>
If a block succeeds gossip validation whilst failing full validation, store the block SSZ as a file at this
path. This feature is only recommended for developers. This directory is not pruned, users should be careful