MCPcopy Create free account
hub / github.com/WaykiChain/WaykiChain / ProcessBlockConfirmMessage

Function ProcessBlockConfirmMessage

src/p2p/chainmessage.cpp:816–856  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

814}
815
816bool ProcessBlockConfirmMessage(CNode *pFrom, CDataStream &vRecv) {
817
818 if(SysCfg().IsReindex()|| GetTime()-chainActive.Tip()->GetBlockTime()>600){
819 LogPrint(BCLog::NET, "local tip's height is too low,drop the confirm message ");
820 return false;
821 }
822
823 CPBFTMessageMan<CBlockConfirmMessage>& msgMan = pbftContext.confirmMessageMan;
824 CBlockConfirmMessage message;
825 vRecv >> message;
826
827 LogPrint(BCLog::NET, "received Block confirmedMessage: blockHeight=%d, blockHash=%s, minerid =%s, signature=%s \n",
828 message.height, message.blockHash.GetHex(), message.miner.ToString(), HexStr<vector<unsigned char>>(message.vSignature));
829
830 pFrom->AddBlockConfirmMessageKnown(message);
831
832 if(msgMan.IsKnown(message)){
833 LogPrint(BCLog::NET, "duplicate confirm message,miner_id=%s, blockhash=%s \n",message.miner.ToString(), message.blockHash.GetHex());
834 return false;
835 }
836
837 if(!CheckPBFTMessage(PBFTMsgType::CONFIRM_BLOCK,message)){
838 LogPrint(BCLog::NET, "confirm message check failed,miner_id=%s, blockhash=%s \n",message.miner.ToString(), message.blockHash.GetHex());
839 return false;
840 }
841
842 msgMan.AddMessageKnown(message);
843 int messageCount = msgMan.SaveMessageByBlock(message.blockHash, message);
844
845 bool updateFinalitySuccess = pbftMan.UpdateLocalFinBlock(message, messageCount);
846
847
848 if(CheckPBFTMessageSigner(message))
849 RelayBlockConfirmMessage(message);
850
851 if(updateFinalitySuccess){
852 BroadcastBlockFinality(pbftMan.GetLocalFinIndex());
853 }
854
855 return true;
856}
857
858
859bool ProcessBlockFinalityMessage(CNode *pFrom, CDataStream &vRecv) {

Callers 1

ProcessMessageFunction · 0.85

Calls 15

GetTimeFunction · 0.85
CheckPBFTMessageFunction · 0.85
CheckPBFTMessageSignerFunction · 0.85
RelayBlockConfirmMessageFunction · 0.85
BroadcastBlockFinalityFunction · 0.85
IsReindexMethod · 0.80
TipMethod · 0.80
IsKnownMethod · 0.80
AddMessageKnownMethod · 0.80
SaveMessageByBlockMethod · 0.80
UpdateLocalFinBlockMethod · 0.80

Tested by

no test coverage detected