core: record transfers even if 'from' balance is 0

Transfer events should still be saved even if balance tracking goes wild.
This commit is contained in:
Roman Khimov 2021-03-16 12:56:31 +03:00
parent 4a2bdf5ddc
commit 663f10192f

View file

@ -945,15 +945,14 @@ func (bc *Blockchain) processNEP5Transfer(cache *dao.Cached, transfer *state.NEP
return
}
bs := balances.Trackers[transfer.Asset]
if bs.Balance == nil {
return
}
bs.Balance.Sub(bs.Balance, transfer.Amount)
if bs.Balance.Sign() > 0 {
bs.LastUpdatedBlock = transfer.Block
balances.Trackers[transfer.Asset] = bs
} else {
delete(balances.Trackers, transfer.Asset)
if bs.Balance != nil {
bs.Balance.Sub(bs.Balance, transfer.Amount)
if bs.Balance.Sign() > 0 {
bs.LastUpdatedBlock = transfer.Block
balances.Trackers[transfer.Asset] = bs
} else {
delete(balances.Trackers, transfer.Asset)
}
}
transfer.Amount.Neg(transfer.Amount)