// implements eventmeter.EventCallbackFunc // updates validator and possibly chain with new block func (tn *TendermintNetwork) newBlockCallback(chainState *types.ChainState, val *types.ValidatorState) eventmeter.EventCallbackFunc { return func(metric *eventmeter.EventMetric, data events.EventData) { block := data.(tmtypes.EventDataNewBlockHeader).Header // these functions are thread safe // we should run them concurrently // update height for validator val.NewBlock(block) // possibly update height and mean block time for chain chainState.NewBlock(block) } }