From 9f4b2f34f27d2163d3c22db76b324e26a8cfc870 Mon Sep 17 00:00:00 2001 From: "Nate I." Date: Thu, 25 Jun 2026 07:55:19 +0300 Subject: [PATCH] Fix masternode collateral vin validation --- src/masternode.cpp | 4 ++-- src/masternodeman.cpp | 2 +- src/obfuscation.cpp | 7 +++---- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/masternode.cpp b/src/masternode.cpp index ce093d2..66ac1c6 100755 --- a/src/masternode.cpp +++ b/src/masternode.cpp @@ -211,7 +211,7 @@ void CMasternode::Check(bool forceCheck) if (!unitTest) { CValidationState state; CMutableTransaction tx = CMutableTransaction(); - CTxOut vout = CTxOut(4999.99 * COIN, obfuscationPool.collateralPubKey); // MASTER_NODE_AMOUNT (5000) minus 0.01 fee margin + CTxOut vout = CTxOut(MASTER_NODE_AMOUNT * COIN, obfuscationPool.collateralPubKey); tx.vin.push_back(vin); tx.vout.push_back(vout); @@ -572,7 +572,7 @@ bool CMasternodeBroadcast::CheckInputsAndAdd(int& nDoS) CValidationState state; CMutableTransaction tx = CMutableTransaction(); - CTxOut vout = CTxOut(4999.99 * COIN, obfuscationPool.collateralPubKey); // MASTER_NODE_AMOUNT (5000) minus 0.01 fee margin + CTxOut vout = CTxOut(MASTER_NODE_AMOUNT * COIN, obfuscationPool.collateralPubKey); tx.vin.push_back(vin); tx.vout.push_back(vout); diff --git a/src/masternodeman.cpp b/src/masternodeman.cpp index 4641955..898251a 100755 --- a/src/masternodeman.cpp +++ b/src/masternodeman.cpp @@ -959,7 +959,7 @@ void CMasternodeMan::ProcessMessage(CNode* pfrom, std::string& strCommand, CData CValidationState state; CMutableTransaction tx = CMutableTransaction(); - CTxOut vout = CTxOut(4999.99 * COIN, obfuscationPool.collateralPubKey); // MASTER_NODE_AMOUNT (5000) minus 0.01 fee margin + CTxOut vout = CTxOut(MASTER_NODE_AMOUNT * COIN, obfuscationPool.collateralPubKey); tx.vin.push_back(vin); tx.vout.push_back(vout); diff --git a/src/obfuscation.cpp b/src/obfuscation.cpp index 989c04f..ab188aa 100755 --- a/src/obfuscation.cpp +++ b/src/obfuscation.cpp @@ -2108,10 +2108,9 @@ bool CObfuscationSigner::IsVinAssociatedWithPubkey(CTxIn& vin, CPubKey& pubkey) CTransaction txVin; uint256 hash; if (GetTransaction(vin.prevout.hash, txVin, hash, true)) { - BOOST_FOREACH (CTxOut out, txVin.vout) { - if (out.nValue == MASTER_NODE_AMOUNT * COIN) { - if (out.scriptPubKey == payee2) return true; - } + if (vin.prevout.n < txVin.vout.size()) { + const CTxOut& out = txVin.vout[vin.prevout.n]; + return out.nValue == MASTER_NODE_AMOUNT * COIN && out.scriptPubKey == payee2; } }