package keeper import ( "cosmos-test/x/cosmostest/memdb" "github.com/cosmos/cosmos-sdk/types" "github.com/pkg/errors" ) func (k *Keeper) AuctionIsExpired(ctx types.Context, auctionId string) (bool, error) { auction, found := k.GetAuction(ctx, auctionId) // make sure the auction exists on-chain if !found { return true, errors.Errorf("auction %s not found", auctionId) } return uint64(ctx.BlockHeight()) >= auction.Deadline, nil } func (k *Keeper) EndExpiredAuctions(ctx types.Context) { memdb.BidDB.ForEachAuction(func(auctionId string) error { auction, found := k.GetAuction(ctx, auctionId) // make sure the auction exists on-chain if !found { return errors.Errorf("auction %s not found on-chain", auctionId) } if uint64(ctx.BlockHeight()) >= auction.Deadline { var err error auction.Best, err = memdb.BidDB.GetLowestBid(auctionId) if err != nil { return errors.Errorf("could not get highest bid for auction %s: %s", auctionId, err) } // clear auction memdb.BidDB.ClearAuction(auctionId) // pay out user // end auction k.SetAuction(ctx, auction) } return nil }) }