prysm-pulse/validator/client/key_reload.go
Raul Jordan 5aac06f04e
Move EthereumAPIs Into Prysm (#8968)
* begin move

* use same import path

* imports

* regen protos

* regen

* no rename

* generate ssz

* gaz

* fmt

* edit build file

* imports

* modify

* remove generated files

* remove protos

* edit imports in prysm

* beacon chain all builds

* edit script

* add generated pbs

* add replace rules

* license for ethereumapis protos

* change visibility

* fmt

* update build files to gaz ignore

* use proper form

* edit imports

* wrap block

* revert scripts

* revert go mod
2021-06-02 18:49:52 -05:00

41 lines
1.1 KiB
Go

package client
import (
"context"
eth "github.com/prysmaticlabs/prysm/proto/eth/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, newKeys [][48]byte) (anyActive bool, err error) {
ctx, span := trace.StartSpan(ctx, "validator.HandleKeyReload")
defer span.End()
statusRequestKeys := make([][]byte, len(newKeys))
for i := range newKeys {
statusRequestKeys[i] = newKeys[i][:]
}
resp, err := v.validatorClient.MultipleValidatorStatus(ctx, &eth.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],
}
}
anyActive = v.checkAndLogValidatorStatus(statuses)
if anyActive {
logActiveValidatorStatus(statuses)
}
return anyActive, nil
}