mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2024-12-22 19:40:37 +00:00
790a09f9b1
* removing timeout on wait for activation, instead switched to an event driven approach * fixing unit tests * linting * simplifying return * adding sleep for the remaining slot to avoid cpu spikes * removing ifstatement on log * removing ifstatement on log * improving switch statement * removing the loop entirely * fixing unit test * fixing manu's reported issue with deletion of json file * missed change around writefile at path * gofmt * fixing deepsource issue with reading file * trying to clean file to avoid deepsource issue * still getting error trying a different approach * fixing stream loop * fixing unit test * Update validator/keymanager/local/keymanager.go Co-authored-by: Manu NALEPA <enalepa@offchainlabs.com> * fixing linting --------- Co-authored-by: Manu NALEPA <enalepa@offchainlabs.com>
53 lines
1.7 KiB
Go
53 lines
1.7 KiB
Go
package client
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/pkg/errors"
|
|
"github.com/prysmaticlabs/prysm/v4/validator/client/iface"
|
|
|
|
fieldparams "github.com/prysmaticlabs/prysm/v4/config/fieldparams"
|
|
validator2 "github.com/prysmaticlabs/prysm/v4/consensus-types/validator"
|
|
eth "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
|
|
"go.opencensus.io/trace"
|
|
)
|
|
|
|
// HandleKeyReload makes sure the validator keeps operating correctly after a change to the underlying keys.
|
|
// It is also responsible for logging out information about the new state of keys.
|
|
func (v *validator) HandleKeyReload(ctx context.Context, currentKeys [][fieldparams.BLSPubkeyLength]byte) (anyActive bool, err error) {
|
|
ctx, span := trace.StartSpan(ctx, "validator.HandleKeyReload")
|
|
defer span.End()
|
|
|
|
statusRequestKeys := make([][]byte, len(currentKeys))
|
|
for i := range currentKeys {
|
|
statusRequestKeys[i] = currentKeys[i][:]
|
|
}
|
|
resp, err := v.validatorClient.MultipleValidatorStatus(ctx, ð.MultipleValidatorStatusRequest{
|
|
PublicKeys: statusRequestKeys,
|
|
})
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
statuses := make([]*validatorStatus, len(resp.Statuses))
|
|
for i, s := range resp.Statuses {
|
|
statuses[i] = &validatorStatus{
|
|
publicKey: resp.PublicKeys[i],
|
|
status: s,
|
|
index: resp.Indices[i],
|
|
}
|
|
}
|
|
|
|
// "-1" indicates that validator count endpoint is not supported by the beacon node.
|
|
var valCount int64 = -1
|
|
valCounts, err := v.prysmBeaconClient.GetValidatorCount(ctx, "head", []validator2.Status{validator2.Active})
|
|
if err != nil && !errors.Is(err, iface.ErrNotSupported) {
|
|
return false, errors.Wrap(err, "could not get active validator count")
|
|
}
|
|
|
|
if len(valCounts) > 0 {
|
|
valCount = int64(valCounts[0].Count)
|
|
}
|
|
|
|
return v.checkAndLogValidatorStatus(statuses, valCount), nil
|
|
}
|