Add CLI option to change validator behavior in distributed cluster (DVT) #5103
Labels
meta-feature-request
Issues to track feature requests.
prio-high
Resolve issues as soon as possible.
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 thecommittee_index
of the first duty and uses that attestation data for all the validators by overriding the correctcommittee_index
internally from the attester duty object for that validator. Other clients queryN
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 thebeacon_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
The text was updated successfully, but these errors were encountered: