6 log "github.com/sirupsen/logrus"
8 "github.com/bytom/vapor/errors"
9 "github.com/bytom/vapor/netsync/peers"
10 "github.com/bytom/vapor/p2p/security"
13 var errOrphanBlock = errors.New("fast sync inserting orphan block")
15 type blockProcessor struct {
21 func newBlockProcessor(chain Chain, storage *storage, peers *peers.PeerSet) *blockProcessor {
22 return &blockProcessor{
29 func (bp *blockProcessor) insert(blockStorage *blockStorage) error {
30 isOrphan, err := bp.chain.ProcessBlock(blockStorage.block)
32 bp.peers.ProcessIllegal(blockStorage.peerID, security.LevelMsgIllegal, errOrphanBlock.Error())
37 bp.peers.ProcessIllegal(blockStorage.peerID, security.LevelMsgIllegal, err.Error())
42 func (bp *blockProcessor) process(downloadNotifyCh chan struct{}, ProcessStop chan struct{}, syncHeight uint64, wg *sync.WaitGroup) {
50 block, err := bp.storage.readBlock(syncHeight)
55 if err := bp.insert(block); err != nil {
56 log.WithFields(log.Fields{"module": logModule, "err": err}).Error("failed on process block")
60 bp.storage.deleteBlock(syncHeight)
64 if _, ok := <-downloadNotifyCh; !ok {