func (ak AssetKeeper) Logger(ctx sdk.Context) log.Logger {
	return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName))
}
Logger returns a module-specific logger.
package keeper
import (
	"fmt"
	"github.com/KuChainNetwork/kuchain/chain/types/coin"
	"github.com/KuChainNetwork/kuchain/x/asset/types"
	"github.com/cosmos/cosmos-sdk/codec"
	sdk "github.com/cosmos/cosmos-sdk/types"
	sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
	"github.com/tendermint/tendermint/libs/log"
)
type AssetCoinsKeeper interface {
	AssetViewKeeper
	AssetTransfer
	Create(ctx sdk.Context, creator, symbol types.Name, maxSupply types.Coin, canIssue, canLock, canBurn bool, issue2Height int64, initSupply types.Coin, desc []byte) error
	Issue(ctx sdk.Context, creator, symbol types.Name, amount types.Coin) error
	Burn(ctx sdk.Context, id types.AccountID, amt types.Coin) error
	LockCoins(ctx sdk.Context, account types.AccountID, unlockBlockHeight int64, coins types.Coins) error
	UnLockCoins(ctx sdk.Context, account types.AccountID, coins types.Coins) error
	ExerciseCoinPower(ctx sdk.Context, id types.AccountID, amt types.Coin) error
}
type AssetViewKeeper interface {
	Cdc() *codec.Codec
	GetCoins(ctx sdk.Context, account types.AccountID) (types.Coins, error)
	GetCoin(ctx sdk.Context, account types.AccountID, creator, symbol types.Name) (types.Coin, error)
	GetCoinPowers(ctx sdk.Context, account types.AccountID) types.Coins
	GetCoinPower(ctx sdk.Context, account types.AccountID, creator, symbol types.Name) (types.Coin, error)
	GetCoinDesc(ctx sdk.Context, creator, symbol types.Name) (*types.CoinDescription, error)
	GetCoinStat(ctx sdk.Context, creator, symbol types.Name) (*types.CoinStat, error)
	GetLockCoins(ctx sdk.Context, account types.AccountID) (types.Coins, []LockedCoins, error)
}
type AccountEnsurer interface {
	EnsureAccount(ctx sdk.Context, account types.AccountID) error
}
type AssetKeeper struct {
	key sdk.StoreKey
	cdc *codec.Codec
	ak AccountEnsurer
}
var _ AssetCoinsKeeper = AssetKeeper{}
func NewAssetKeeper(cdc *codec.Codec, key sdk.StoreKey, ak AccountEnsurer) AssetKeeper {
	return AssetKeeper{
		key: key,
		cdc: cdc,
		ak:  ak,
	}
}
func (ak AssetKeeper) Cdc() *codec.Codec {
	return ak.cdc
}