Skip to content
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

Add CLI option to change validator behavior in distributed cluster (DVT) #5103

Closed
nflaig opened this issue Feb 5, 2023 · 1 comment · Fixed by #5258
Closed

Add CLI option to change validator behavior in distributed cluster (DVT) #5103

nflaig opened this issue Feb 5, 2023 · 1 comment · Fixed by #5258
Assignees
Labels
meta-feature-request Issues to track feature requests. prio-high Resolve issues as soon as possible.

Comments

@nflaig
Copy link
Member

nflaig commented Feb 5, 2023

Is your feature request related to a problem? Please describe.

There are compatibility issues running Lodestar VC in a distributed validator cluster due to an optimization.

The problem is that if there are multiple validators in a cluster and there are N attester duties in the same slot, then Lodestar queries the attestation data only once with the committee_index of the first duty and uses that attestation data for all the validators by overriding the correct committee_index internally from the attester duty object for that validator. Other clients query N times to get the attestation data for each attester duty.

Distributed validator middleware clients such as Charon calls /eth/v1/validator/attestation_data endpoint for each validator public key and there is a slight chance that the beacon_block_root (LMD GHOST vote) changes between calls which would cause a conflict between attestations submitted by Lodestar and other VCs in the cluster, resulting in aggregation failure as explained in this comment and further outlined here.

Describe the solution you'd like

The distributed validator middleware requires the actual committee_index retrieved from /eth/v1/validator/duties/attester/{epoch} to be sent to /eth/v1/validator/attestation_data which means we need to disable the optimization. Since we only need to do this if the VC is part of a distributed cluster we could introduce a --distributed CLI option to achieve this.
This flag will also be useful when Lodestar implements the new DVT specific endpoints introduced in ethereum/beacon-APIs#224.

Describe alternatives you've considered

Could completely remove the optimization which we probably don't want to do as it makes sense to do if you directly communicate with the beacon node as committee_index is just passed around.

cc @dB2510

@nflaig nflaig changed the title Add flag to change validator behavior in distributed cluster (DVT) Add CLI option to change validator behavior in distributed cluster (DVT) Feb 5, 2023
@philknows philknows added prio-high Resolve issues as soon as possible. meta-feature-request Issues to track feature requests. labels Feb 11, 2023
@wemeetagain
Copy link
Member

Sounds good. We'll also need to implement behavior described here: https://docs.google.com/document/d/1q9jOTPcYQa-3L8luRvQJ-M0eegtba4Nmon3dpO79TMk/mobilebasic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
meta-feature-request Issues to track feature requests. prio-high Resolve issues as soon as possible.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants