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