github.com/cosmos/cosmos-sdk@v0.50.10/x/slashing/migrations/v4/keys.go (about) 1 package v4 2 3 import ( 4 "encoding/binary" 5 6 sdk "github.com/cosmos/cosmos-sdk/types" 7 "github.com/cosmos/cosmos-sdk/types/address" 8 "github.com/cosmos/cosmos-sdk/types/kv" 9 ) 10 11 const MissedBlockBitmapChunkSize = 1024 // 2^10 bits 12 13 var ( 14 ValidatorSigningInfoKeyPrefix = []byte{0x01} 15 validatorMissedBlockBitArrayKeyPrefix = []byte{0x02} 16 ) 17 18 func ValidatorSigningInfoKey(v sdk.ConsAddress) []byte { 19 return append(ValidatorSigningInfoKeyPrefix, address.MustLengthPrefix(v.Bytes())...) 20 } 21 22 func ValidatorSigningInfoAddress(key []byte) (v sdk.ConsAddress) { 23 // Remove prefix and address length. 24 kv.AssertKeyAtLeastLength(key, 3) 25 addr := key[2:] 26 27 return sdk.ConsAddress(addr) 28 } 29 30 func validatorMissedBlockBitArrayPrefixKey(v sdk.ConsAddress) []byte { 31 return append(validatorMissedBlockBitArrayKeyPrefix, address.MustLengthPrefix(v.Bytes())...) 32 } 33 34 func ValidatorMissedBlockBitArrayKey(v sdk.ConsAddress, i int64) []byte { 35 b := make([]byte, 8) 36 binary.LittleEndian.PutUint64(b, uint64(i)) 37 return append(validatorMissedBlockBitArrayPrefixKey(v), b...) 38 } 39 40 func validatorMissedBlockBitmapPrefixKey(v sdk.ConsAddress) []byte { 41 return append(validatorMissedBlockBitArrayKeyPrefix, address.MustLengthPrefix(v.Bytes())...) 42 } 43 44 func ValidatorMissedBlockBitmapKey(v sdk.ConsAddress, chunkIndex int64) []byte { 45 bz := make([]byte, 8) 46 binary.LittleEndian.PutUint64(bz, uint64(chunkIndex)) 47 48 return append(validatorMissedBlockBitmapPrefixKey(v), bz...) 49 }