github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/core/state/stateutils/validator_index_map.go (about) 1 // Package stateutils contains useful tools for faster computation 2 // of state transitions using maps to represent validators instead 3 // of slices. 4 package stateutils 5 6 import ( 7 types "github.com/prysmaticlabs/eth2-types" 8 ethpb "github.com/prysmaticlabs/prysm/proto/eth/v1alpha1" 9 "github.com/prysmaticlabs/prysm/shared/bytesutil" 10 ) 11 12 // ValidatorIndexMap builds a lookup map for quickly determining the index of 13 // a validator by their public key. 14 func ValidatorIndexMap(validators []*ethpb.Validator) map[[48]byte]types.ValidatorIndex { 15 m := make(map[[48]byte]types.ValidatorIndex, len(validators)) 16 if validators == nil { 17 return m 18 } 19 for idx, record := range validators { 20 if record == nil { 21 continue 22 } 23 key := bytesutil.ToBytes48(record.PublicKey) 24 m[key] = types.ValidatorIndex(idx) 25 } 26 return m 27 }