Skip to content

Commit ca14e62

Browse files
committed
move endblock logic to keeper
1 parent c73a7ac commit ca14e62

File tree

2 files changed

+32
-28
lines changed

2 files changed

+32
-28
lines changed

x/feeds/abci.go

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,12 @@
11
package feeds
22

33
import (
4-
"fmt"
5-
64
sdk "github.com/cosmos/cosmos-sdk/types"
75

86
"github.com/bandprotocol/chain/v2/x/feeds/keeper"
9-
"github.com/bandprotocol/chain/v2/x/feeds/types"
107
)
118

129
// HandleEndBlock is a handler function for the EndBlock ABCI request.
1310
func HandleEndBlock(ctx sdk.Context, k keeper.Keeper) {
14-
feeds := k.GetSupportedFeedsByPower(ctx)
15-
for _, feed := range feeds {
16-
price, err := k.CalculatePrice(ctx, feed)
17-
if err != nil {
18-
ctx.EventManager().EmitEvent(
19-
sdk.NewEvent(
20-
types.EventTypeCalculatePriceFailed,
21-
sdk.NewAttribute(types.AttributeKeySignalID, feed.SignalID),
22-
sdk.NewAttribute(types.AttributeKeyErrorMessage, err.Error()),
23-
),
24-
)
25-
continue
26-
}
27-
28-
k.SetPrice(ctx, price)
29-
30-
ctx.EventManager().EmitEvent(
31-
sdk.NewEvent(
32-
types.EventTypeUpdatePrice,
33-
sdk.NewAttribute(types.AttributeKeySignalID, price.SignalID),
34-
sdk.NewAttribute(types.AttributeKeyPrice, fmt.Sprintf("%d", price.Price)),
35-
sdk.NewAttribute(types.AttributeKeyTimestamp, fmt.Sprintf("%d", price.Timestamp)),
36-
),
37-
)
38-
}
11+
k.CalculatePrices(ctx)
3912
}

x/feeds/keeper/keeper_price.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package keeper
22

33
import (
4+
"fmt"
5+
46
sdk "github.com/cosmos/cosmos-sdk/types"
57
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
68

@@ -63,6 +65,35 @@ func (k Keeper) DeletePrice(ctx sdk.Context, signalID string) {
6365
ctx.KVStore(k.storeKey).Delete(types.PriceStoreKey(signalID))
6466
}
6567

68+
// CalculatePrices calculates final prices for all supported feeds.
69+
func (k Keeper) CalculatePrices(ctx sdk.Context) {
70+
feeds := k.GetSupportedFeedsByPower(ctx)
71+
for _, feed := range feeds {
72+
price, err := k.CalculatePrice(ctx, feed)
73+
if err != nil {
74+
ctx.EventManager().EmitEvent(
75+
sdk.NewEvent(
76+
types.EventTypeCalculatePriceFailed,
77+
sdk.NewAttribute(types.AttributeKeySignalID, feed.SignalID),
78+
sdk.NewAttribute(types.AttributeKeyErrorMessage, err.Error()),
79+
),
80+
)
81+
continue
82+
}
83+
84+
k.SetPrice(ctx, price)
85+
86+
ctx.EventManager().EmitEvent(
87+
sdk.NewEvent(
88+
types.EventTypeUpdatePrice,
89+
sdk.NewAttribute(types.AttributeKeySignalID, price.SignalID),
90+
sdk.NewAttribute(types.AttributeKeyPrice, fmt.Sprintf("%d", price.Price)),
91+
sdk.NewAttribute(types.AttributeKeyTimestamp, fmt.Sprintf("%d", price.Timestamp)),
92+
),
93+
)
94+
}
95+
}
96+
6697
// CalculatePrice calculates final price from price-validator and punish validators those did not report.
6798
func (k Keeper) CalculatePrice(ctx sdk.Context, feed types.Feed) (types.Price, error) {
6899
var priceFeedInfos []types.PriceFeedInfo

0 commit comments

Comments
 (0)