4 log "github.com/sirupsen/logrus"
7 var logModule = "tracer"
9 type TraceUpdater struct {
14 func NewTraceUpdater(traceService *TraceService, chain ChainService) *TraceUpdater {
16 TraceService: traceService,
21 func (t *TraceUpdater) Sync() {
23 block, _ := t.chain.GetBlockByHeight(t.BestHeight() + 1)
29 if bestHash := t.BestHash(); block.PreviousBlockHash != bestHash {
30 block, err := t.chain.GetBlockByHash(&bestHash)
32 log.WithFields(log.Fields{"module": logModule, "err": err, "block_hash": bestHash.String()}).Errorf("trace updater get block")
36 if err := t.DetachBlock(block); err != nil {
37 log.WithFields(log.Fields{"module": logModule, "err": err}).Error("trace updater detach block")
41 if err := t.ApplyBlock(block); err != nil {
42 log.WithFields(log.Fields{"module": logModule, "err": err}).Error("trace updater attach block")
49 func (t *TraceUpdater) walletBlockWaiter() {
50 <-t.chain.BlockWaiter(t.bestHeight + 1)