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

Function ProcessBlockFinalityMessage

src/p2p/chainmessage.cpp:859–896  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

857
858
859bool ProcessBlockFinalityMessage(CNode *pFrom, CDataStream &vRecv) {
860
861
862 if(SysCfg().IsReindex()|| GetTime()-chainActive.Tip()->GetBlockTime()>600)
863 return false;
864
865 CPBFTMessageMan<CBlockFinalityMessage>& msgMan = pbftContext.finalityMessageMan;
866 CBlockFinalityMessage message;
867 vRecv >> message;
868
869 LogPrint(BCLog::NET, "received Block FinalityMessage: block=%s, miner=%s, signature=%s \n",
870 message.GetBlockId(), message.miner.ToString(), HexStr(message.vSignature));
871
872 pFrom->AddBlockFinalityMessageKnown(message);
873
874 if(msgMan.IsKnown(message)){
875 LogPrint(BCLog::NET, "duplicate finality message, miner=%s, block=%s \n",
876 message.miner.ToString(), message.GetBlockId());
877 return false;
878 }
879
880 if(!CheckPBFTMessage(PBFTMsgType::FINALITY_BLOCK, message)){
881 LogPrint(BCLog::NET, "finality block message check failed, miner=%s, block=%s \n",
882 message.miner.ToString(), message.GetBlockId());
883 return false;
884 }
885
886 msgMan.AddMessageKnown(message);
887 int messageCount = msgMan.SaveMessageByBlock(message.blockHash, message);
888 pbftMan.UpdateGlobalFinBlock(message, messageCount);
889
890 if(CheckPBFTMessageSigner(message)){
891 RelayBlockFinalityMessage(message);
892 }
893
894
895 return true;
896}
897void ProcessRejectMessage(CNode *pFrom, CDataStream &vRecv) {
898 if (SysCfg().IsDebug()) {
899 string message;

Callers 1

ProcessMessageFunction · 0.85

Calls 15

GetTimeFunction · 0.85
HexStrFunction · 0.85
CheckPBFTMessageFunction · 0.85
CheckPBFTMessageSignerFunction · 0.85
IsReindexMethod · 0.80
TipMethod · 0.80
GetBlockIdMethod · 0.80
IsKnownMethod · 0.80
AddMessageKnownMethod · 0.80
SaveMessageByBlockMethod · 0.80

Tested by

no test coverage detected