X-Git-Url: http://git.osdn.net/view?p=bytom%2Fvapor.git;a=blobdiff_plain;f=netsync%2Fconsensusmgr%2Fhandle.go;h=66fddd9eeb708dd306093d399c5e83341082862d;hp=f3823e05f14974e737c41fbc45eb5e005b673ef6;hb=807d99726f6a0610fa9c835e2aabd983801d3510;hpb=c071c7f9648e8e8f39c1826ccb4e5d2ba5e8efd7 diff --git a/netsync/consensusmgr/handle.go b/netsync/consensusmgr/handle.go index f3823e05..66fddd9e 100644 --- a/netsync/consensusmgr/handle.go +++ b/netsync/consensusmgr/handle.go @@ -8,6 +8,7 @@ import ( "github.com/vapor/event" "github.com/vapor/netsync/peers" "github.com/vapor/p2p" + "github.com/vapor/p2p/security" "github.com/vapor/protocol/bc" "github.com/vapor/protocol/bc/types" ) @@ -15,8 +16,6 @@ import ( // Switch is the interface for p2p switch. type Switch interface { AddReactor(name string, reactor p2p.Reactor) p2p.Reactor - AddBannedPeer(string) error - ID() [32]byte } // Chain is the interface for Bytom core. @@ -24,7 +23,7 @@ type Chain interface { BestBlockHeight() uint64 GetHeaderByHash(*bc.Hash) (*types.BlockHeader, error) ProcessBlock(*types.Block) (bool, error) - ProcessBlockSignature(signature, pubkey []byte, blockHeight uint64, blockHash *bc.Hash) error + ProcessBlockSignature(signature []byte, pubkey [64]byte, blockHash *bc.Hash) error } type blockMsg struct { @@ -47,6 +46,7 @@ type Manager struct { func NewManager(sw Switch, chain Chain, dispatcher *event.Dispatcher, peers *peers.PeerSet) *Manager { manager := &Manager{ sw: sw, + chain: chain, peers: peers, blockFetcher: newBlockFetcher(chain, peers), eventDispatcher: dispatcher, @@ -95,14 +95,14 @@ func (m *Manager) handleBlockProposeMsg(peerID string, msg *BlockProposeMsg) { func (m *Manager) handleBlockSignatureMsg(peerID string, msg *BlockSignatureMsg) { blockHash := bc.NewHash(msg.BlockHash) - if err := m.chain.ProcessBlockSignature(msg.Signature, msg.PubKey[:], msg.Height, &blockHash); err != nil { - m.peers.AddBanScore(peerID, 20, 0, err.Error()) + if err := m.chain.ProcessBlockSignature(msg.Signature, msg.PubKey, &blockHash); err != nil { + m.peers.ProcessIllegal(peerID, security.LevelMsgIllegal, err.Error()) return } } func (m *Manager) blockProposeMsgBroadcastLoop() { - blockProposeMsgSub, err := m.eventDispatcher.Subscribe(event.NewBlockProposeEvent{}) + blockProposeMsgSub, err := m.eventDispatcher.Subscribe(event.NewProposedBlockEvent{}) if err != nil { logrus.WithFields(logrus.Fields{"module": logModule, "err": err}).Error("failed on subscribe NewBlockProposeEvent") return @@ -117,7 +117,7 @@ func (m *Manager) blockProposeMsgBroadcastLoop() { return } - ev, ok := obj.Data.(event.NewBlockProposeEvent) + ev, ok := obj.Data.(event.NewProposedBlockEvent) if !ok { logrus.WithFields(logrus.Fields{"module": logModule}).Error("event type error") continue @@ -166,7 +166,7 @@ func (m *Manager) blockSignatureMsgBroadcastLoop() { return } - blockSignatureMsg := NewBroadcastMsg(NewBlockSignatureMsg(ev.BlockHash, blockHeader.Height, ev.Signature, m.sw.ID()), consensusChannel) + blockSignatureMsg := NewBroadcastMsg(NewBlockSignatureMsg(ev.BlockHash, blockHeader.Height, ev.Signature, ev.XPub), consensusChannel) if err := m.peers.BroadcastMsg(blockSignatureMsg); err != nil { logrus.WithFields(logrus.Fields{"module": logModule, "err": err}).Error("failed on broadcast BlockSignBroadcastMsg.") return