From afd0c73c4d4e5628bfd8b795df0e74111f624ba0 Mon Sep 17 00:00:00 2001 From: Liquid369 <45834289+Liquid369@users.noreply.github.com> Date: Thu, 6 Jul 2023 15:30:52 -0500 Subject: [PATCH] Fix MNB Serialization for ADDRv2 in RPCs --- src/rpc/masternode.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/rpc/masternode.cpp b/src/rpc/masternode.cpp index 7b146c543b4fb..9772364b6ca20 100644 --- a/src/rpc/masternode.cpp +++ b/src/rpc/masternode.cpp @@ -390,9 +390,11 @@ void RelayMNB(CMasternodeBroadcast& mnb, const bool fSucces) void SerializeMNB(UniValue& statusObjRet, const CMasternodeBroadcast& mnb, const bool fSuccess, int& successful, int& failed) { + bool isBIP155 = PROTOCOL_VERSION >= MIN_BIP155_PROTOCOL_VERSION; + int version = isBIP155 ? PROTOCOL_VERSION | ADDRV2_FORMAT : PROTOCOL_VERSION; if(fSuccess) { successful++; - CDataStream ssMnb(SER_NETWORK, PROTOCOL_VERSION); + CDataStream ssMnb(SER_NETWORK, version); ssMnb << mnb; statusObjRet.pushKV("hex", HexStr(ssMnb)); } else { @@ -880,8 +882,10 @@ bool DecodeHexMnb(CMasternodeBroadcast& mnb, std::string strHexMnb) { if (!IsHex(strHexMnb)) return false; + bool isBIP155 = PROTOCOL_VERSION >= MIN_BIP155_PROTOCOL_VERSION; + int version = isBIP155 ? PROTOCOL_VERSION | ADDRV2_FORMAT : PROTOCOL_VERSION; std::vector mnbData(ParseHex(strHexMnb)); - CDataStream ssData(mnbData, SER_NETWORK, PROTOCOL_VERSION); + CDataStream ssData(mnbData, SER_NETWORK, version); try { ssData >> mnb; }