refactor: define a UINT256_ONE global constant

Instead of having a uint256 representations of one scattered throughout
where it is used, define it globally in uint256.h
This commit is contained in:
Andrew Chow 2019-12-30 14:05:27 -05:00
parent 415afcccd3
commit 4977c30d59
5 changed files with 11 additions and 7 deletions

View file

@ -1281,13 +1281,11 @@ uint256 SignatureHash(const CScript& scriptCode, const T& txTo, unsigned int nIn
return ss.GetHash(); return ss.GetHash();
} }
static const uint256 one(uint256S("0000000000000000000000000000000000000000000000000000000000000001"));
// Check for invalid use of SIGHASH_SINGLE // Check for invalid use of SIGHASH_SINGLE
if ((nHashType & 0x1f) == SIGHASH_SINGLE) { if ((nHashType & 0x1f) == SIGHASH_SINGLE) {
if (nIn >= txTo.vout.size()) { if (nIn >= txTo.vout.size()) {
// nOut out of range // nOut out of range
return one; return UINT256_ONE();
} }
} }

View file

@ -26,10 +26,9 @@ extern UniValue read_json(const std::string& jsondata);
// Old script.cpp SignatureHash function // Old script.cpp SignatureHash function
uint256 static SignatureHashOld(CScript scriptCode, const CTransaction& txTo, unsigned int nIn, int nHashType) uint256 static SignatureHashOld(CScript scriptCode, const CTransaction& txTo, unsigned int nIn, int nHashType)
{ {
static const uint256 one(uint256S("0000000000000000000000000000000000000000000000000000000000000001"));
if (nIn >= txTo.vin.size()) if (nIn >= txTo.vin.size())
{ {
return one; return UINT256_ONE();
} }
CMutableTransaction txTmp(txTo); CMutableTransaction txTmp(txTo);
@ -59,7 +58,7 @@ uint256 static SignatureHashOld(CScript scriptCode, const CTransaction& txTo, un
unsigned int nOut = nIn; unsigned int nOut = nIn;
if (nOut >= txTmp.vout.size()) if (nOut >= txTmp.vout.size())
{ {
return one; return UINT256_ONE();
} }
txTmp.vout.resize(nOut+1); txTmp.vout.resize(nOut+1);
for (unsigned int i = 0; i < nOut; i++) for (unsigned int i = 0; i < nOut; i++)

View file

@ -75,3 +75,8 @@ template std::string base_blob<256>::GetHex() const;
template std::string base_blob<256>::ToString() const; template std::string base_blob<256>::ToString() const;
template void base_blob<256>::SetHex(const char*); template void base_blob<256>::SetHex(const char*);
template void base_blob<256>::SetHex(const std::string&); template void base_blob<256>::SetHex(const std::string&);
uint256& UINT256_ONE() {
static uint256* one = new uint256(uint256S("0000000000000000000000000000000000000000000000000000000000000001"));
return *one;
}

View file

@ -144,4 +144,6 @@ inline uint256 uint256S(const std::string& str)
return rv; return rv;
} }
uint256& UINT256_ONE();
#endif // BITCOIN_UINT256_H #endif // BITCOIN_UINT256_H

View file

@ -238,7 +238,7 @@ WalletCreationStatus CreateWallet(interfaces::Chain& chain, const SecureString&
return WalletCreationStatus::SUCCESS; return WalletCreationStatus::SUCCESS;
} }
const uint256 CWalletTx::ABANDON_HASH(uint256S("0000000000000000000000000000000000000000000000000000000000000001")); const uint256 CWalletTx::ABANDON_HASH(UINT256_ONE());
/** @defgroup mapWallet /** @defgroup mapWallet
* *