github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/dex/endblocker.go (about)

     1  package dex
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/fibonacci-chain/fbc/x/common/perf"
     7  	"github.com/fibonacci-chain/fbc/x/dex/types"
     8  
     9  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
    10  )
    11  
    12  // EndBlocker called every block
    13  func EndBlocker(ctx sdk.Context, k IKeeper) {
    14  	seq := perf.GetPerf().OnEndBlockEnter(ctx, types.ModuleName)
    15  	defer perf.GetPerf().OnEndBlockExit(ctx, types.ModuleName, seq)
    16  	// complete withdraw
    17  	currentTime := ctx.BlockHeader().Time
    18  	k.IterateWithdrawAddress(ctx, currentTime,
    19  		func(_ int64, key []byte) (stop bool) {
    20  			oldTime, addr := types.SplitWithdrawTimeKey(key)
    21  			err := k.CompleteWithdraw(ctx, addr)
    22  			if err != nil {
    23  				ctx.Logger().Error(fmt.Sprintf("complete undelegate failed: %s, addr:%s", err.Error(), addr.String()))
    24  			} else {
    25  				ctx.Logger().Debug(fmt.Sprintf("complete undelegate successful, addr: %s", addr.String()))
    26  				k.DeleteWithdrawCompleteTimeAddress(ctx, oldTime, addr)
    27  			}
    28  			return false
    29  		})
    30  }