github.com/cosmos/cosmos-sdk@v0.50.10/x/bank/migrations/v2/keys.go (about)

     1  package v2
     2  
     3  import (
     4  	"errors"
     5  
     6  	sdk "github.com/cosmos/cosmos-sdk/types"
     7  	"github.com/cosmos/cosmos-sdk/types/address"
     8  )
     9  
    10  const (
    11  	ModuleName = "bank"
    12  )
    13  
    14  var (
    15  	SupplyKey           = []byte{0x00}
    16  	BalancesPrefix      = []byte{0x02}
    17  	DenomMetadataPrefix = []byte{0x1}
    18  
    19  	ErrInvalidKey = errors.New("invalid key")
    20  )
    21  
    22  func CreateAccountBalancesPrefix(addr []byte) []byte {
    23  	return append(BalancesPrefix, address.MustLengthPrefix(addr)...)
    24  }
    25  
    26  func AddressFromBalancesStore(key []byte) (sdk.AccAddress, error) {
    27  	if len(key) == 0 {
    28  		return nil, ErrInvalidKey
    29  	}
    30  
    31  	addrLen := key[0]
    32  	bound := int(addrLen)
    33  
    34  	if len(key)-1 < bound {
    35  		return nil, ErrInvalidKey
    36  	}
    37  
    38  	return key[1 : bound+1], nil
    39  }
    40  
    41  // DenomMetadataKey returns the denomination metadata key.
    42  func DenomMetadataKey(denom string) []byte {
    43  	d := []byte(denom)
    44  	return append(DenomMetadataPrefix, d...)
    45  }