2020-05-07 17:44:43 +00:00
|
|
|
# End Block
|
2020-05-07 15:11:10 +00:00
|
|
|
|
2020-05-07 17:44:43 +00:00
|
|
|
At the end of each block, the current price is calculated as the median of all raw prices for each market. The logic is as follows:
|
2020-05-07 15:11:10 +00:00
|
|
|
|
|
|
|
```go
|
|
|
|
// EndBlocker updates the current pricefeed
|
|
|
|
func EndBlocker(ctx sdk.Context, k Keeper) {
|
|
|
|
// Update the current price of each asset.
|
|
|
|
for _, market := range k.GetMarkets(ctx) {
|
|
|
|
if market.Active {
|
|
|
|
err := k.SetCurrentPrices(ctx, market.MarketID)
|
|
|
|
if err != nil {
|
|
|
|
// In the event of failure, emit an event.
|
|
|
|
ctx.EventManager().EmitEvent(
|
|
|
|
sdk.NewEvent(
|
|
|
|
EventTypeNoValidPrices,
|
|
|
|
sdk.NewAttribute(AttributeMarketID, fmt.Sprintf("%s", market.MarketID)),
|
|
|
|
),
|
|
|
|
)
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
```
|