X-Git-Url: http://git.osdn.net/view?p=bytom%2Fvapor.git;a=blobdiff_plain;f=netsync%2Fconsensusmgr%2Fhandle.go;h=ffb58714e70742ab1b6ea2e0b98479843f3d7f1d;hp=66fddd9eeb708dd306093d399c5e83341082862d;hb=839ceb043e844ba2b813d01a0452068a9407987e;hpb=807d99726f6a0610fa9c835e2aabd983801d3510 diff --git a/netsync/consensusmgr/handle.go b/netsync/consensusmgr/handle.go index 66fddd9e..ffb58714 100644 --- a/netsync/consensusmgr/handle.go +++ b/netsync/consensusmgr/handle.go @@ -23,7 +23,7 @@ type Chain interface { BestBlockHeight() uint64 GetHeaderByHash(*bc.Hash) (*types.BlockHeader, error) ProcessBlock(*types.Block) (bool, error) - ProcessBlockSignature(signature []byte, pubkey [64]byte, blockHash *bc.Hash) error + ProcessBlockSignature(signature, pubkey []byte, blockHash *bc.Hash) error } type blockMsg struct { @@ -67,7 +67,7 @@ func (m *Manager) processMsg(peerID string, msgType byte, msg ConsensusMessage) return } - logrus.WithFields(logrus.Fields{"module": logModule, "peer": peerID, "type": reflect.TypeOf(msg), "message": msg.String()}).Info("receive message from peer") + logrus.WithFields(logrus.Fields{"module": logModule, "peer": peer.Addr(), "type": reflect.TypeOf(msg), "message": msg.String()}).Info("receive message from peer") switch msg := msg.(type) { case *BlockProposeMsg: @@ -91,9 +91,11 @@ func (m *Manager) handleBlockProposeMsg(peerID string, msg *BlockProposeMsg) { hash := block.Hash() m.peers.MarkBlock(peerID, &hash) m.blockFetcher.processNewBlock(&blockMsg{peerID: peerID, block: block}) + m.peers.SetStatus(peerID, block.Height, &hash) } func (m *Manager) handleBlockSignatureMsg(peerID string, msg *BlockSignatureMsg) { + m.peers.MarkBlockSignature(peerID, msg.Signature) blockHash := bc.NewHash(msg.BlockHash) if err := m.chain.ProcessBlockSignature(msg.Signature, msg.PubKey, &blockHash); err != nil { m.peers.ProcessIllegal(peerID, security.LevelMsgIllegal, err.Error()) @@ -160,16 +162,10 @@ func (m *Manager) blockSignatureMsgBroadcastLoop() { continue } - blockHeader, err := m.chain.GetHeaderByHash(&ev.BlockHash) - if err != nil { - logrus.WithFields(logrus.Fields{"module": logModule, "err": err}).Error("failed on get header by hash from chain.") - return - } - - blockSignatureMsg := NewBroadcastMsg(NewBlockSignatureMsg(ev.BlockHash, blockHeader.Height, ev.Signature, ev.XPub), consensusChannel) + blockSignatureMsg := NewBroadcastMsg(NewBlockSignatureMsg(ev.BlockHash, 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 + continue } case <-m.quit: