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 interface {
16 process(chan struct{}, chan struct{}, uint64, *sync.WaitGroup)
19 type blockProcessor struct {
25 func newBlockProcessor(chain Chain, storage Storage, peers *peers.PeerSet) *blockProcessor {
26 return &blockProcessor{
33 func (bp *blockProcessor) insert(blockStorage *blockStorage) error {
34 isOrphan, err := bp.chain.ProcessBlock(blockStorage.block)
36 bp.peers.ProcessIllegal(blockStorage.peerID, security.LevelMsgIllegal, errOrphanBlock.Error())
41 bp.peers.ProcessIllegal(blockStorage.peerID, security.LevelMsgIllegal, err.Error())
46 func (bp *blockProcessor) process(downloadNotifyCh chan struct{}, ProcessStop chan struct{}, syncHeight uint64, wg *sync.WaitGroup) {
54 block, err := bp.storage.readBlock(syncHeight)
59 if err := bp.insert(block); err != nil {
60 log.WithFields(log.Fields{"module": logModule, "err": err}).Error("failed on process block")
64 bp.storage.deleteBlock(syncHeight)
68 if _, ok := <-downloadNotifyCh; !ok {