-
Notifications
You must be signed in to change notification settings - Fork 902
[Merged by Bors] - Separate BN for block proposals #4182
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from 20 commits
Commits
Show all changes
21 commits
Select commit
Hold shift + click to select a range
ea755b6
Initial draft, not finished VC yet
AgeManning a1cbf7c
Mostly complete, still to handle closure lifetimes
AgeManning 88f22c3
Fix closure lifetimes by cloning HTTP client
michaelsproul 58de945
Remove closures and clones
michaelsproul fbf533b
Merge pull request #2 from michaelsproul/bn-proposer
AgeManning 55b3cfb
Merge pull request #3 from michaelsproul/bn-proposer-alt
AgeManning a6bfd2d
fmt
AgeManning 8fb5473
Fix typo
AgeManning f6d4345
Re-order target-peer cli config
AgeManning b339191
Draft up a book topic
AgeManning c56496d
Remove CLI default for target-peers to allow override
AgeManning 4277059
Produce block from default nodes before proposer-only
AgeManning e76365e
Temp simulator update
AgeManning 0aac29a
Merge latest unstable
AgeManning 5929b97
Merge branch 'unstable' into bn-proposer
paulhauner 23aa8e7
Refactor block service
paulhauner 74efa73
Add comments
paulhauner b78347c
Merge pull request #4 from paulhauner/bn-proposer-paul
AgeManning c65eb9f
Production to publishing
AgeManning eaf0e9a
Merge latest unstable
AgeManning f1c7c40
Update validator_client/src/lib.rs
paulhauner File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
# Advanced Proposer-Only Beacon Nodes | ||
|
||
Lighthouse allows for more exotic setups that can minimize attack vectors by | ||
adding redundant beacon nodes and dividing the roles of attesting and block | ||
production between them. | ||
|
||
The purpose of this is to minimize attack vectors | ||
where malicious users obtain the network identities (IP addresses) of beacon | ||
nodes corresponding to individual validators and subsequently perform Denial Of Service | ||
attacks on the beacon nodes when they are due to produce a block on the | ||
network. By splitting the duties of attestation and block production across | ||
different beacon nodes, an attacker may not know which node is the block | ||
production node, especially if the user rotates IP addresses of the block | ||
production beacon node in between block proposals (this is in-frequent with | ||
networks with large validator counts). | ||
|
||
## The Beacon Node | ||
|
||
A Lighthouse beacon node can be configured with the `--proposer-only` flag | ||
(i.e. `lighthouse bn --proposer-only`). | ||
Setting a beacon node with this flag will limit its use as a beacon node for | ||
normal activities such as performing attestations, but it will make the node | ||
harder to identify as a potential node to attack and will also consume less | ||
resources. | ||
|
||
Specifically, this flag reduces the default peer count (to a safe minimal | ||
number as maintaining peers on attestation subnets do not need to be considered), | ||
prevents the node from subscribing to any attestation-subnets or | ||
sync-committees which is a primary way for attackers to de-anonymize | ||
validators. | ||
|
||
> Note: Beacon nodes that have set the `--proposer-only` flag should not be connected | ||
> to validator clients unless via the `--proposer-nodes` flag. If connected as a | ||
> normal beacon node, the validator may fail to handle its duties correctly and | ||
> result in a loss of income. | ||
|
||
|
||
## The Validator Client | ||
|
||
The validator client can be given a list of HTTP API endpoints representing | ||
beacon nodes that will be solely used for block propagation on the network, via | ||
the CLI flag `--proposer-nodes`. These nodes can be any working beacon nodes | ||
and do not specifically have to be proposer-only beacon nodes that have been | ||
executed with the `--proposer-only` (although we do recommend this flag for | ||
these nodes for added security). | ||
|
||
> Note: The validator client still requires at least one other beacon node to | ||
> perform its duties and must be specified in the usual `--beacon-nodes` flag. | ||
|
||
> Note: The validator client will attempt to get a block to propose from the | ||
> beacon nodes specified in `--beacon-nodes` before trying `--proposer-nodes`. | ||
> This is because the nodes subscribed to subnets have a higher chance of | ||
> producing a more profitable block. Any block builders should therefore be | ||
> attached to the `--beacon-nodes` and not necessarily the `--proposer-nodes`. | ||
|
||
|
||
## Setup Overview | ||
|
||
The intended set-up to take advantage of this mechanism is to run one (or more) | ||
normal beacon nodes in conjunction with one (or more) proposer-only beacon | ||
nodes. See the [Redundancy](./redundancy.md) section for more information about | ||
setting up redundant beacon nodes. The proposer-only beacon nodes should be | ||
setup to use a different IP address than the primary (non proposer-only) nodes. | ||
For added security, the IP addresses of the proposer-only nodes should be | ||
rotated occasionally such that a new IP-address is used per block proposal. | ||
|
||
A single validator client can then connect to all of the above nodes via the | ||
`--beacon-nodes` and `--proposer-nodes` flags. The resulting setup will allow | ||
the validator client to perform its regular duties on the standard beacon nodes | ||
and when the time comes to propose a block, it will send this block via the | ||
specified proposer-only nodes. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.