func (as AccountStorage) GetMeta(ctx sdk.Context, accKey linotypes.AccountKey) *AccountMeta {
	store := ctx.KVStore(as.key)
	metaByte := store.Get(GetAccountMetaKey(accKey))
	if metaByte == nil {
		return &AccountMeta{
			JSONMeta: "",
		}
	}
	meta := new(AccountMeta)
	as.cdc.MustUnmarshalBinaryLengthPrefixed(metaByte, meta)
	return meta
}
GetMeta - returns meta of a given account that are tiny and frequently updated fields.
package model
import (
	wire "github.com/cosmos/cosmos-sdk/codec"
	sdk "github.com/cosmos/cosmos-sdk/types"
	linotypes "github.com/lino-network/lino/types"
	"github.com/lino-network/lino/utils"
	"github.com/lino-network/lino/x/account/types"
)
var (
	AccountInfoSubstore   = []byte{0x00}
	AccountBankSubstore   = []byte{0x01}
	AccountMetaSubstore   = []byte{0x02}
	AccountPoolSubstore   = []byte{0x04}
	AccountSupplySubstore = []byte{0x05}
)
type AccountStorage struct {
	key sdk.StoreKey
	cdc *wire.Codec
}
func NewAccountStorage(key sdk.StoreKey) AccountStorage {
	cdc := wire.New()
	wire.RegisterCrypto(cdc)
	cdc.Seal()
	return AccountStorage{
		key: key,
		cdc: cdc,
	}
}
func (as AccountStorage) DoesAccountExist(ctx sdk.Context, accKey linotypes.AccountKey) bool {
	store := ctx.KVStore(as.key)
	return store.Has(GetAccountInfoKey(accKey))
}
func (as AccountStorage) GetInfo(ctx sdk.Context, accKey linotypes.AccountKey) (*AccountInfo, sdk.Error) {
	store := ctx.KVStore(as.key)
	infoByte := store.Get(GetAccountInfoKey(accKey))
	if infoByte == nil {
		return nil, types.ErrAccountNotFound(accKey)
	}
	info := new(AccountInfo)
	as.cdc.MustUnmarshalBinaryLengthPrefixed(infoByte, info)
	return info, nil
}
func (as AccountStorage) SetInfo(ctx sdk.Context, accInfo *AccountInfo) {
	store := ctx.KVStore(as.key)
	infoByte := as.cdc.MustMarshalBinaryLengthPrefixed(*accInfo)
	store.Set(GetAccountInfoKey(accInfo.Username), infoByte)
}
func (as AccountStorage) GetBank(ctx sdk.Context, addr sdk.Address) (*AccountBank, sdk.Error) {
	store := ctx.KVStore(as.key)
	bankByte := store.Get(GetAccountBankKey(addr))
	if bankByte == nil {
		return nil, types.ErrAccountBankNotFound(addr)
	}
	bank := new(AccountBank)
	as.cdc.MustUnmarshalBinaryLengthPrefixed(bankByte, bank)
	return bank, nil
}
func (as AccountStorage) SetBank(ctx sdk.Context, addr sdk.Address, accBank *AccountBank) {
	store := ctx.KVStore(as.key)
	bankByte := as.cdc.MustMarshalBinaryLengthPrefixed(*accBank)
	store.Set(GetAccountBankKey(addr), bankByte)
}