package keeper import ( "fmt" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/bank/types" ) // InitGenesis initializes the bank module's state from a given genesis state. func (k BaseKeeper) InitGenesis(ctx sdk.Context, genState *types.GenesisState) { k.SetParams(ctx, genState.Params) var totalSupply sdk.Coins genState.Balances = types.SanitizeGenesisBalances(genState.Balances) for _, balance := range genState.Balances { addr, err := sdk.AccAddressFromBech32(balance.Address) if err != nil { panic(err) } if err := k.setBalances(ctx, addr, balance.Coins); err != nil { panic(fmt.Errorf("error on setting balances %w", err)) } totalSupply = totalSupply.Add(balance.Coins...) } if genState.Supply.Empty() { genState.Supply = totalSupply } k.setSupply(ctx, genState.Supply) for _, meta := range genState.DenomMetadata { k.SetDenomMetaData(ctx, meta) } } // ExportGenesis returns the bank module's genesis state. func (k BaseKeeper) ExportGenesis(ctx sdk.Context) *types.GenesisState { return types.NewGenesisState( k.GetParams(ctx), k.GetAccountsBalances(ctx), k.GetTotalSupply(ctx), k.GetAllDenomMetaData(ctx), ) }