diff --git a/src/addrdb.cpp b/src/addrdb.cpp --- a/src/addrdb.cpp +++ b/src/addrdb.cpp @@ -28,7 +28,7 @@ // serialize banlist, checksum data up to that point, then append csum CDataStream ssBanlist(SER_DISK, CLIENT_VERSION); - ssBanlist << FLATDATA(Params().MessageStart()); + ssBanlist << FLATDATA(Params().DiskMagic()); ssBanlist << banSet; uint256 hash = Hash(ssBanlist.begin(), ssBanlist.end()); ssBanlist << hash; @@ -95,7 +95,7 @@ ssBanlist >> FLATDATA(pchMsgTmp); // ... verify the network matches ours - if (memcmp(pchMsgTmp, Params().MessageStart(), sizeof(pchMsgTmp))) + if (memcmp(pchMsgTmp, Params().DiskMagic(), sizeof(pchMsgTmp))) return error("%s: Invalid network magic number", __func__); // de-serialize ban data @@ -119,7 +119,7 @@ // serialize addresses, checksum data up to that point, then append csum CDataStream ssPeers(SER_DISK, CLIENT_VERSION); - ssPeers << FLATDATA(Params().MessageStart()); + ssPeers << FLATDATA(Params().DiskMagic()); ssPeers << addr; uint256 hash = Hash(ssPeers.begin(), ssPeers.end()); ssPeers << hash; @@ -189,7 +189,7 @@ ssPeers >> FLATDATA(pchMsgTmp); // ... verify the network matches ours - if (memcmp(pchMsgTmp, Params().MessageStart(), sizeof(pchMsgTmp))) + if (memcmp(pchMsgTmp, Params().DiskMagic(), sizeof(pchMsgTmp))) return error("%s: Invalid network magic number", __func__); // de-serialize address data into one CAddrMan object diff --git a/src/chainparams.h b/src/chainparams.h --- a/src/chainparams.h +++ b/src/chainparams.h @@ -59,12 +59,8 @@ }; const Consensus::Params &GetConsensus() const { return consensus; } - const CMessageHeader::MessageStartChars &MessageStart() const { - return pchMessageStart; - } - const CMessageHeader::MessageStartChars &CashMessageStart() const { - return pchCashMessageStart; - } + const CMessageHeader::MessageMagic &DiskMagic() const { return diskMagic; } + const CMessageHeader::MessageMagic &NetMagic() const { return netMagic; } int GetDefaultPort() const { return nDefaultPort; } const CBlock &GenesisBlock() const { return genesis; } @@ -95,8 +91,8 @@ CChainParams() {} Consensus::Params consensus; - CMessageHeader::MessageStartChars pchMessageStart; - CMessageHeader::MessageStartChars pchCashMessageStart; + CMessageHeader::MessageMagic diskMagic; + CMessageHeader::MessageMagic netMagic; int nDefaultPort; uint64_t nPruneAfterHeight; std::vector vSeeds; diff --git a/src/chainparams.cpp b/src/chainparams.cpp --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -151,14 +151,14 @@ * normal data. The characters are rarely used upper ASCII, not valid as * UTF-8, and produce a large 32-bit integer with any alignment. */ - pchMessageStart[0] = 0xf9; - pchMessageStart[1] = 0xbe; - pchMessageStart[2] = 0xb4; - pchMessageStart[3] = 0xd9; - pchCashMessageStart[0] = 0xe3; - pchCashMessageStart[1] = 0xe1; - pchCashMessageStart[2] = 0xf3; - pchCashMessageStart[3] = 0xe8; + diskMagic[0] = 0xf9; + diskMagic[1] = 0xbe; + diskMagic[2] = 0xb4; + diskMagic[3] = 0xd9; + netMagic[0] = 0xe3; + netMagic[1] = 0xe1; + netMagic[2] = 0xf3; + netMagic[3] = 0xe8; nDefaultPort = 8333; nPruneAfterHeight = 100000; @@ -319,14 +319,14 @@ // Nov, 13 hard fork consensus.cashHardForkActivationTime = 1510600000; - pchMessageStart[0] = 0x0b; - pchMessageStart[1] = 0x11; - pchMessageStart[2] = 0x09; - pchMessageStart[3] = 0x07; - pchCashMessageStart[0] = 0xf4; - pchCashMessageStart[1] = 0xe5; - pchCashMessageStart[2] = 0xf3; - pchCashMessageStart[3] = 0xf4; + diskMagic[0] = 0x0b; + diskMagic[1] = 0x11; + diskMagic[2] = 0x09; + diskMagic[3] = 0x07; + netMagic[0] = 0xf4; + netMagic[1] = 0xe5; + netMagic[2] = 0xf3; + netMagic[3] = 0xf4; nDefaultPort = 18333; nPruneAfterHeight = 1000; @@ -442,14 +442,14 @@ // Nov, 13 hard fork is always on on regtest. consensus.cashHardForkActivationTime = 0; - pchMessageStart[0] = 0xfa; - pchMessageStart[1] = 0xbf; - pchMessageStart[2] = 0xb5; - pchMessageStart[3] = 0xda; - pchCashMessageStart[0] = 0xda; - pchCashMessageStart[1] = 0xb5; - pchCashMessageStart[2] = 0xbf; - pchCashMessageStart[3] = 0xfa; + diskMagic[0] = 0xfa; + diskMagic[1] = 0xbf; + diskMagic[2] = 0xb5; + diskMagic[3] = 0xda; + netMagic[0] = 0xda; + netMagic[1] = 0xb5; + netMagic[2] = 0xbf; + netMagic[3] = 0xfa; nDefaultPort = 18444; nPruneAfterHeight = 1000; diff --git a/src/net.h b/src/net.h --- a/src/net.h +++ b/src/net.h @@ -546,7 +546,7 @@ // Time (in microseconds) of message receipt. int64_t nTime; - CNetMessage(const CMessageHeader::MessageStartChars &pchMessageStartIn, + CNetMessage(const CMessageHeader::MessageMagic &pchMessageStartIn, int nTypeIn, int nVersionIn) : hdrbuf(nTypeIn, nVersionIn), hdr(pchMessageStartIn), vRecv(nTypeIn, nVersionIn) { @@ -752,10 +752,9 @@ void SetSendVersion(int nVersionIn); int GetSendVersion() const; - const CMessageHeader::MessageStartChars & + const CMessageHeader::MessageMagic & GetMagic(const CChainParams ¶ms) const { - return fUsesCashMagic ? params.CashMessageStart() - : params.MessageStart(); + return fUsesCashMagic ? params.NetMagic() : params.DiskMagic(); } CService GetAddrLocal() const; diff --git a/src/net_processing.cpp b/src/net_processing.cpp --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -3135,7 +3135,7 @@ // This is a new peer. Before doing anything, we need to detect what magic // the peer is using. if (pfrom->nVersion == 0 && - memcmp(msg.hdr.pchMessageStart, chainparams.MessageStart(), + memcmp(msg.hdr.pchMessageStart, chainparams.DiskMagic(), CMessageHeader::MESSAGE_START_SIZE) == 0) { pfrom->fUsesCashMagic = false; } diff --git a/src/protocol.h b/src/protocol.h --- a/src/protocol.h +++ b/src/protocol.h @@ -18,7 +18,8 @@ #include #include -/** Message header. +/** + * Message header. * (4) message start. * (12) command. * (4) size. @@ -37,14 +38,14 @@ HEADER_SIZE = MESSAGE_START_SIZE + COMMAND_SIZE + MESSAGE_SIZE_SIZE + CHECKSUM_SIZE }; - typedef uint8_t MessageStartChars[MESSAGE_START_SIZE]; + typedef uint8_t MessageMagic[MESSAGE_START_SIZE]; - CMessageHeader(const MessageStartChars &pchMessageStartIn); - CMessageHeader(const MessageStartChars &pchMessageStartIn, + CMessageHeader(const MessageMagic &pchMessageStartIn); + CMessageHeader(const MessageMagic &pchMessageStartIn, const char *pszCommand, unsigned int nMessageSizeIn); std::string GetCommand() const; - bool IsValid(const MessageStartChars &messageStart) const; + bool IsValid(const MessageMagic &messageStart) const; ADD_SERIALIZE_METHODS; diff --git a/src/protocol.cpp b/src/protocol.cpp --- a/src/protocol.cpp +++ b/src/protocol.cpp @@ -59,14 +59,14 @@ allNetMessageTypesVec(allNetMessageTypes, allNetMessageTypes + ARRAYLEN(allNetMessageTypes)); -CMessageHeader::CMessageHeader(const MessageStartChars &pchMessageStartIn) { +CMessageHeader::CMessageHeader(const MessageMagic &pchMessageStartIn) { memcpy(pchMessageStart, pchMessageStartIn, MESSAGE_START_SIZE); memset(pchCommand, 0, sizeof(pchCommand)); nMessageSize = -1; memset(pchChecksum, 0, CHECKSUM_SIZE); } -CMessageHeader::CMessageHeader(const MessageStartChars &pchMessageStartIn, +CMessageHeader::CMessageHeader(const MessageMagic &pchMessageStartIn, const char *pszCommand, unsigned int nMessageSizeIn) { memcpy(pchMessageStart, pchMessageStartIn, MESSAGE_START_SIZE); @@ -81,7 +81,7 @@ pchCommand + strnlen(pchCommand, COMMAND_SIZE)); } -bool CMessageHeader::IsValid(const MessageStartChars &pchMessageStartIn) const { +bool CMessageHeader::IsValid(const MessageMagic &pchMessageStartIn) const { // Check start string if (memcmp(pchMessageStart, pchMessageStartIn, MESSAGE_START_SIZE) != 0) return false; diff --git a/src/test/net_tests.cpp b/src/test/net_tests.cpp --- a/src/test/net_tests.cpp +++ b/src/test/net_tests.cpp @@ -58,7 +58,7 @@ CDataStream AddrmanToStream(CAddrManSerializationMock &_addrman) { CDataStream ssPeersIn(SER_DISK, CLIENT_VERSION); - ssPeersIn << FLATDATA(Params().MessageStart()); + ssPeersIn << FLATDATA(Params().DiskMagic()); ssPeersIn << _addrman; std::string str = ssPeersIn.str(); std::vector vchData(str.begin(), str.end()); diff --git a/src/test/test_bitcoin_fuzzy.cpp b/src/test/test_bitcoin_fuzzy.cpp --- a/src/test/test_bitcoin_fuzzy.cpp +++ b/src/test/test_bitcoin_fuzzy.cpp @@ -192,8 +192,8 @@ break; } case CMESSAGEHEADER_DESERIALIZE: { - CMessageHeader::MessageStartChars pchMessageStart = {0x00, 0x00, - 0x00, 0x00}; + CMessageHeader::MessageMagic pchMessageStart = {0x00, 0x00, 0x00, + 0x00}; try { CMessageHeader mh(pchMessageStart); ds >> mh; diff --git a/src/test/validation_tests.cpp b/src/test/validation_tests.cpp --- a/src/test/validation_tests.cpp +++ b/src/test/validation_tests.cpp @@ -49,7 +49,7 @@ // serialization format is: // message start magic, size of block, block - size_t nwritten = fwrite(chainparams.MessageStart(), + size_t nwritten = fwrite(chainparams.DiskMagic(), CMessageHeader::MESSAGE_START_SIZE, 1, fp); BOOST_CHECK_EQUAL(nwritten, 1); diff --git a/src/validation.h b/src/validation.h --- a/src/validation.h +++ b/src/validation.h @@ -14,7 +14,7 @@ #include "amount.h" #include "chain.h" #include "coins.h" -#include "protocol.h" // For CMessageHeader::MessageStartChars +#include "protocol.h" // For CMessageHeader::MessageMagic #include "script/script_error.h" #include "sync.h" #include "versionbits.h" @@ -548,7 +548,7 @@ /** Functions for disk access for blocks */ bool WriteBlockToDisk(const CBlock &block, CDiskBlockPos &pos, - const CMessageHeader::MessageStartChars &messageStart); + const CMessageHeader::MessageMagic &messageStart); bool ReadBlockFromDisk(CBlock &block, const CDiskBlockPos &pos, const Consensus::Params &consensusParams); bool ReadBlockFromDisk(CBlock &block, const CBlockIndex *pindex, diff --git a/src/validation.cpp b/src/validation.cpp --- a/src/validation.cpp +++ b/src/validation.cpp @@ -1109,7 +1109,7 @@ // bool WriteBlockToDisk(const CBlock &block, CDiskBlockPos &pos, - const CMessageHeader::MessageStartChars &messageStart) { + const CMessageHeader::MessageMagic &messageStart) { // Open history file to append CAutoFile fileout(OpenBlockFile(pos), SER_DISK, CLIENT_VERSION); if (fileout.IsNull()) @@ -1519,7 +1519,7 @@ bool UndoWriteToDisk(const CBlockUndo &blockundo, CDiskBlockPos &pos, const uint256 &hashBlock, - const CMessageHeader::MessageStartChars &messageStart) { + const CMessageHeader::MessageMagic &messageStart) { // Open history file to append CAutoFile fileout(OpenUndoFile(pos), SER_DISK, CLIENT_VERSION); if (fileout.IsNull()) return error("%s: OpenUndoFile failed", __func__); @@ -2140,7 +2140,7 @@ return error("ConnectBlock(): FindUndoPos failed"); } if (!UndoWriteToDisk(blockundo, _pos, pindex->pprev->GetBlockHash(), - chainparams.MessageStart())) { + chainparams.DiskMagic())) { return AbortNode(state, "Failed to write undo data"); } @@ -3677,8 +3677,7 @@ return error("AcceptBlock(): FindBlockPos failed"); } if (dbp == nullptr) { - if (!WriteBlockToDisk(block, blockPos, - chainparams.MessageStart())) { + if (!WriteBlockToDisk(block, blockPos, chainparams.DiskMagic())) { AbortNode(state, "Failed to write block"); } } @@ -4398,8 +4397,7 @@ block.GetBlockTime())) { return error("LoadBlockIndex(): FindBlockPos failed"); } - if (!WriteBlockToDisk(block, blockPos, - chainparams.MessageStart())) { + if (!WriteBlockToDisk(block, blockPos, chainparams.DiskMagic())) { return error( "LoadBlockIndex(): writing genesis block to disk failed"); } @@ -4449,10 +4447,10 @@ try { // Locate a header. uint8_t buf[CMessageHeader::MESSAGE_START_SIZE]; - blkdat.FindByte(chainparams.MessageStart()[0]); + blkdat.FindByte(chainparams.DiskMagic()[0]); nRewind = blkdat.GetPos() + 1; blkdat >> FLATDATA(buf); - if (memcmp(buf, chainparams.MessageStart(), + if (memcmp(buf, chainparams.DiskMagic(), CMessageHeader::MESSAGE_START_SIZE)) { continue; }