mirror of
https://github.com/status-im/nimbus-eth2.git
synced 2025-02-02 09:46:26 +00:00
Fix handling of VC validators by per payload-builder payload builder validator registration (issue #5599). (#5603)
The proposed change ensures that VC validators are registered with the builder specified by the `--payload-builder-url` argument even if the beacon node has no attached validators. It also prevent such validators from being unintentionally registered with builders configured for specific attached validators by the keymanager api. Per the current specs, the VC have no way to specify which builders the BN should use on a per-node basis, so for the time being we have to resort to using the BN fallback default builder URL for VC validators.
This commit is contained in:
parent
f8ad57e0e5
commit
dfd7b9bc61
@ -1591,8 +1591,11 @@ proc registerValidatorsPerBuilder(
|
||||
validatorRegistrations.add @[validatorRegistration]
|
||||
|
||||
# First, check for VC-added keys; cheaper because provided pre-signed
|
||||
# See issue #5599: currently VC have no way to provide BN with per-validator builders per the specs, so we have to
|
||||
# resort to use the BN fallback default (--payload-builder-url value, obtained by calling getPayloadBuilderAddress)
|
||||
var nonExitedVcPubkeys: HashSet[ValidatorPubKey]
|
||||
if node.externalBuilderRegistrations.len > 0:
|
||||
if node.externalBuilderRegistrations.len > 0 and
|
||||
payloadBuilderAddress == node.config.getPayloadBuilderAddress.value:
|
||||
withState(node.dag.headState):
|
||||
let currentEpoch = node.currentSlot().epoch
|
||||
for i in 0 ..< forkyState.data.validators.len:
|
||||
@ -1679,6 +1682,12 @@ proc registerValidators*(node: BeaconNode, epoch: Epoch) {.async.} =
|
||||
if not node.config.payloadBuilderEnable: return
|
||||
|
||||
var builderKeys: Table[string, seq[ValidatorPubKey]]
|
||||
|
||||
# Ensure VC validators are still registered if we have no attached validators
|
||||
let externalPayloadBuilderAddress = node.config.getPayloadBuilderAddress
|
||||
if externalPayloadBuilderAddress.isSome:
|
||||
builderKeys[externalPayloadBuilderAddress.value] = newSeq[ValidatorPubKey](0)
|
||||
|
||||
for pubkey in node.attachedValidators[].validators.keys:
|
||||
let payloadBuilderAddress = node.getPayloadBuilderAddress(pubkey).valueOr:
|
||||
continue
|
||||
|
Loading…
x
Reference in New Issue
Block a user