log "github.com/sirupsen/logrus"
- cfg "github.com/vapor/config"
- "github.com/vapor/consensus"
- "github.com/vapor/event"
- msgs "github.com/vapor/netsync/messages"
- "github.com/vapor/netsync/peers"
- "github.com/vapor/p2p"
- "github.com/vapor/p2p/security"
- core "github.com/vapor/protocol"
- "github.com/vapor/protocol/bc"
- "github.com/vapor/protocol/bc/types"
+ cfg "github.com/bytom/vapor/config"
+ "github.com/bytom/vapor/consensus"
+ dbm "github.com/bytom/vapor/database/leveldb"
+ "github.com/bytom/vapor/event"
+ msgs "github.com/bytom/vapor/netsync/messages"
+ "github.com/bytom/vapor/netsync/peers"
+ "github.com/bytom/vapor/p2p"
+ "github.com/bytom/vapor/p2p/security"
+ core "github.com/bytom/vapor/protocol"
+ "github.com/bytom/vapor/protocol/bc"
+ "github.com/bytom/vapor/protocol/bc/types"
)
const (
txMsgSub *event.Subscription
}
-//NewChainManager create a chain sync manager.
-func NewManager(config *cfg.Config, sw Switch, chain Chain, mempool Mempool, dispatcher *event.Dispatcher, peers *peers.PeerSet) (*Manager, error) {
+//NewManager create a chain sync manager.
+func NewManager(config *cfg.Config, sw Switch, chain Chain, mempool Mempool, dispatcher *event.Dispatcher, peers *peers.PeerSet, fastSyncDB dbm.DB) (*Manager, error) {
manager := &Manager{
sw: sw,
mempool: mempool,
chain: chain,
- blockKeeper: newBlockKeeper(chain, peers),
+ blockKeeper: newBlockKeeper(chain, peers, fastSyncDB),
peers: peers,
txSyncCh: make(chan *txSyncMsg),
quit: make(chan struct{}),
if err != nil {
return
}
+
m.blockKeeper.processBlock(peer.ID(), block)
}
}
func (m *Manager) handleGetHeadersMsg(peer *peers.Peer, msg *msgs.GetHeadersMessage) {
- headers, err := m.blockKeeper.locateHeaders(msg.GetBlockLocator(), msg.GetStopHash(), msg.GetSkip(), maxHeadersPerMsg)
+ headers, err := m.blockKeeper.locateHeaders(msg.GetBlockLocator(), msg.GetStopHash(), msg.GetSkip(), maxNumOfHeadersPerMsg)
if err != nil || len(headers) == 0 {
log.WithFields(log.Fields{"module": logModule, "err": err}).Debug("fail on handleGetHeadersMsg locateHeaders")
return
return
}
+ m.peers.MarkTx(peer.ID(), tx.ID)
if isOrphan, err := m.chain.ValidateTx(tx); err != nil && err != core.ErrDustTx && !isOrphan {
m.peers.ProcessIllegal(peer.ID(), security.LevelMsgIllegal, "fail on validate tx transaction")
}
- m.peers.MarkTx(peer.ID(), tx.ID)
}
func (m *Manager) handleTransactionsMsg(peer *peers.Peer, msg *msgs.TransactionsMessage) {
}
for _, tx := range txs {
+ m.peers.MarkTx(peer.ID(), tx.ID)
if isOrphan, err := m.chain.ValidateTx(tx); err != nil && !isOrphan {
m.peers.ProcessIllegal(peer.ID(), security.LevelMsgIllegal, "fail on validate tx transaction")
return
}
- m.peers.MarkTx(peer.ID(), tx.ID)
}
}