cosmos-sdk/types/address/store_key.go

34 lines
800 B
Go

package address
import (
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
)
// MaxAddrLen is the maximum allowed length (in bytes) for an address.
const MaxAddrLen = 255
// LengthPrefix prefixes the address bytes with its length, this is used
// for example for variable-length components in store keys.
func LengthPrefix(bz []byte) ([]byte, error) {
bzLen := len(bz)
if bzLen == 0 {
return bz, nil
}
if bzLen > MaxAddrLen {
return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownAddress, "address length should be max %d bytes, got %d", MaxAddrLen, bzLen)
}
return append([]byte{byte(bzLen)}, bz...), nil
}
// MustLengthPrefix is LengthPrefix with panic on error.
func MustLengthPrefix(bz []byte) []byte {
res, err := LengthPrefix(bz)
if err != nil {
panic(err)
}
return res
}