mirror of
https://github.com/dashpay/dash.git
synced 2024-12-27 04:52:59 +01:00
Merge #10368: [wallet] Remove helper conversion operator from wallet
5a5e4e9
[wallet] Remove CTransaction&() helper conversion operator from wallet implementation. (Karl-Johan Alm)
Pull request description:
The `CTransaction&()` operator in `CMerkleTx` makes conversion into `CTransaction`s transparent, but was marked as to-be-removed in favor of explicitly getting the `tx` ivar, presumably as the operator can lead to ambiguous behavior and makes the code harder to follow.
This PR removes the operator and adapts callers. This includes some cases of `static_cast<CTransaction>(wtx)` → `*wtx.tx`, which is definitely an improvement.
Tree-SHA512: 95856fec7194d6a79615ea1c322abfcd6bcedf6ffd0cfa89bbdd332ce13035fa52dd4b828d20df673072dde1be64b79c513529a6f422dd5f0961ce722a32d56a
This commit is contained in:
parent
3bae57af8d
commit
354f57a838
@ -25,7 +25,7 @@
|
||||
QString TransactionDesc::FormatTxStatus(const CWalletTx& wtx)
|
||||
{
|
||||
AssertLockHeld(cs_main);
|
||||
if (!CheckFinalTx(wtx))
|
||||
if (!CheckFinalTx(*wtx.tx))
|
||||
{
|
||||
if (wtx.tx->nLockTime < LOCKTIME_THRESHOLD)
|
||||
return tr("Open for %n more block(s)", "", wtx.tx->nLockTime - chainActive.Height());
|
||||
|
@ -285,7 +285,7 @@ void TransactionRecord::updateStatus(const CWalletTx &wtx, int chainLockHeight)
|
||||
status.label = QString::fromStdString(addrBookIt->second.name);
|
||||
}
|
||||
|
||||
if (!CheckFinalTx(wtx))
|
||||
if (!CheckFinalTx(*wtx.tx))
|
||||
{
|
||||
if (wtx.tx->nLockTime < LOCKTIME_THRESHOLD)
|
||||
{
|
||||
|
@ -244,7 +244,7 @@ public:
|
||||
std::map<uint256, CWalletTx>::iterator mi = wallet->mapWallet.find(rec->hash);
|
||||
if(mi != wallet->mapWallet.end())
|
||||
{
|
||||
std::string strHex = EncodeHexTx(static_cast<CTransaction>(mi->second));
|
||||
std::string strHex = EncodeHexTx(*mi->second.tx);
|
||||
return QString::fromStdString(strHex);
|
||||
}
|
||||
return QString();
|
||||
|
@ -33,7 +33,7 @@ CWalletTx *WalletModelTransaction::getTransaction() const
|
||||
|
||||
unsigned int WalletModelTransaction::getTransactionSize()
|
||||
{
|
||||
return (!walletTransaction ? 0 : (::GetSerializeSize(walletTransaction->tx, SER_NETWORK, PROTOCOL_VERSION)));
|
||||
return (!walletTransaction ? 0 : (::GetSerializeSize(*walletTransaction->tx, SER_NETWORK, PROTOCOL_VERSION)));
|
||||
}
|
||||
|
||||
CAmount WalletModelTransaction::getTransactionFee() const
|
||||
|
@ -341,7 +341,7 @@ UniValue importprunedfunds(const JSONRPCRequest& request)
|
||||
|
||||
LOCK2(cs_main, pwallet->cs_wallet);
|
||||
|
||||
if (pwallet->IsMine(wtx)) {
|
||||
if (pwallet->IsMine(*wtx.tx)) {
|
||||
pwallet->AddToWallet(wtx, false);
|
||||
return NullUniValue;
|
||||
}
|
||||
|
@ -1997,7 +1997,7 @@ UniValue gettransaction(const JSONRPCRequest& request)
|
||||
ListTransactions(pwallet, wtx, "*", 0, false, details, filter);
|
||||
entry.push_back(Pair("details", details));
|
||||
|
||||
std::string strHex = EncodeHexTx(static_cast<CTransaction>(wtx));
|
||||
std::string strHex = EncodeHexTx(*wtx.tx);
|
||||
entry.push_back(Pair("hex", strHex));
|
||||
|
||||
return entry;
|
||||
|
@ -83,7 +83,7 @@ BOOST_AUTO_TEST_CASE(acc_orderupgrade)
|
||||
|
||||
wtx.mapValue["comment"] = "y";
|
||||
{
|
||||
CMutableTransaction tx(wtx);
|
||||
CMutableTransaction tx(*wtx.tx);
|
||||
--tx.nLockTime; // Just to change the hash :)
|
||||
wtx.SetTx(MakeTransactionRef(std::move(tx)));
|
||||
}
|
||||
@ -93,7 +93,7 @@ BOOST_AUTO_TEST_CASE(acc_orderupgrade)
|
||||
|
||||
wtx.mapValue["comment"] = "x";
|
||||
{
|
||||
CMutableTransaction tx(wtx);
|
||||
CMutableTransaction tx(*wtx.tx);
|
||||
--tx.nLockTime; // Just to change the hash :)
|
||||
wtx.SetTx(MakeTransactionRef(std::move(tx)));
|
||||
}
|
||||
|
@ -1493,6 +1493,7 @@ int CWallet::GetRealOutpointPrivateSendRounds(const COutPoint& outpoint, int nRo
|
||||
uint256 hash = outpoint.hash;
|
||||
unsigned int nout = outpoint.n;
|
||||
|
||||
// TODO wtx should refer to a CWalletTx object, not a pointer, based on surrounding code
|
||||
const CWalletTx* wtx = GetWalletTx(hash);
|
||||
if(wtx != nullptr)
|
||||
{
|
||||
@ -1500,7 +1501,7 @@ int CWallet::GetRealOutpointPrivateSendRounds(const COutPoint& outpoint, int nRo
|
||||
if (mdwi == mDenomWtxes.end()) {
|
||||
// not known yet, let's add it
|
||||
LogPrint(BCLog::PRIVATESEND, "GetRealOutpointPrivateSendRounds INSERTING %s\n", hash.ToString());
|
||||
mDenomWtxes[hash] = CMutableTransaction(*wtx);
|
||||
mDenomWtxes[hash] = CMutableTransaction(*wtx->tx);
|
||||
} else if(mDenomWtxes[hash].vout[nout].nRounds != -10) {
|
||||
// found and it's not an initial value, just return it
|
||||
return mDenomWtxes[hash].vout[nout].nRounds;
|
||||
@ -2043,7 +2044,7 @@ bool CWalletTx::RelayWalletTransaction(CConnman* connman)
|
||||
LogPrintf("Relaying wtx %s\n", hash.ToString());
|
||||
|
||||
if (connman) {
|
||||
connman->RelayTransaction((CTransaction)*this);
|
||||
connman->RelayTransaction(*tx);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -2075,7 +2076,7 @@ CAmount CWalletTx::GetDebit(const isminefilter& filter) const
|
||||
debit += nDebitCached;
|
||||
else
|
||||
{
|
||||
nDebitCached = pwallet->GetDebit(*this, ISMINE_SPENDABLE);
|
||||
nDebitCached = pwallet->GetDebit(*tx, ISMINE_SPENDABLE);
|
||||
fDebitCached = true;
|
||||
debit += nDebitCached;
|
||||
}
|
||||
@ -2086,7 +2087,7 @@ CAmount CWalletTx::GetDebit(const isminefilter& filter) const
|
||||
debit += nWatchDebitCached;
|
||||
else
|
||||
{
|
||||
nWatchDebitCached = pwallet->GetDebit(*this, ISMINE_WATCH_ONLY);
|
||||
nWatchDebitCached = pwallet->GetDebit(*tx, ISMINE_WATCH_ONLY);
|
||||
fWatchDebitCached = true;
|
||||
debit += nWatchDebitCached;
|
||||
}
|
||||
@ -2108,7 +2109,7 @@ CAmount CWalletTx::GetCredit(const isminefilter& filter) const
|
||||
credit += nCreditCached;
|
||||
else
|
||||
{
|
||||
nCreditCached = pwallet->GetCredit(*this, ISMINE_SPENDABLE);
|
||||
nCreditCached = pwallet->GetCredit(*tx, ISMINE_SPENDABLE);
|
||||
fCreditCached = true;
|
||||
credit += nCreditCached;
|
||||
}
|
||||
@ -2119,7 +2120,7 @@ CAmount CWalletTx::GetCredit(const isminefilter& filter) const
|
||||
credit += nWatchCreditCached;
|
||||
else
|
||||
{
|
||||
nWatchCreditCached = pwallet->GetCredit(*this, ISMINE_WATCH_ONLY);
|
||||
nWatchCreditCached = pwallet->GetCredit(*tx, ISMINE_WATCH_ONLY);
|
||||
fWatchCreditCached = true;
|
||||
credit += nWatchCreditCached;
|
||||
}
|
||||
@ -2133,7 +2134,7 @@ CAmount CWalletTx::GetImmatureCredit(bool fUseCache) const
|
||||
{
|
||||
if (fUseCache && fImmatureCreditCached)
|
||||
return nImmatureCreditCached;
|
||||
nImmatureCreditCached = pwallet->GetCredit(*this, ISMINE_SPENDABLE);
|
||||
nImmatureCreditCached = pwallet->GetCredit(*tx, ISMINE_SPENDABLE);
|
||||
fImmatureCreditCached = true;
|
||||
return nImmatureCreditCached;
|
||||
}
|
||||
@ -2177,7 +2178,7 @@ CAmount CWalletTx::GetImmatureWatchOnlyCredit(const bool& fUseCache) const
|
||||
{
|
||||
if (fUseCache && fImmatureWatchCreditCached)
|
||||
return nImmatureWatchCreditCached;
|
||||
nImmatureWatchCreditCached = pwallet->GetCredit(*this, ISMINE_WATCH_ONLY);
|
||||
nImmatureWatchCreditCached = pwallet->GetCredit(*tx, ISMINE_WATCH_ONLY);
|
||||
fImmatureWatchCreditCached = true;
|
||||
return nImmatureWatchCreditCached;
|
||||
}
|
||||
@ -2297,7 +2298,7 @@ CAmount CWalletTx::GetChange() const
|
||||
{
|
||||
if (fChangeCached)
|
||||
return nChangeCached;
|
||||
nChangeCached = pwallet->GetChange(*this);
|
||||
nChangeCached = pwallet->GetChange(*tx);
|
||||
fChangeCached = true;
|
||||
return nChangeCached;
|
||||
}
|
||||
@ -2311,7 +2312,7 @@ bool CWalletTx::InMempool() const
|
||||
bool CWalletTx::IsTrusted() const
|
||||
{
|
||||
// Quick answer in most cases
|
||||
if (!CheckFinalTx(*this))
|
||||
if (!CheckFinalTx(*tx))
|
||||
return false;
|
||||
int nDepth = GetDepthInMainChain();
|
||||
if (nDepth >= 1)
|
||||
@ -2677,7 +2678,7 @@ void CWallet::AvailableCoins(std::vector<COutput> &vCoins, bool fOnlySafe, const
|
||||
for (auto pcoin : GetSpendableTXs()) {
|
||||
const uint256& wtxid = pcoin->GetHash();
|
||||
|
||||
if (!CheckFinalTx(*pcoin))
|
||||
if (!CheckFinalTx(*pcoin->tx))
|
||||
continue;
|
||||
|
||||
if (pcoin->IsCoinBase() && pcoin->GetBlocksToMaturity() > 0)
|
||||
|
@ -229,10 +229,6 @@ public:
|
||||
Init();
|
||||
}
|
||||
|
||||
/** Helper conversion operator to allow passing CMerkleTx where CTransaction is expected.
|
||||
* TODO: adapt callers and remove this operator. */
|
||||
operator const CTransaction&() const { return *tx; }
|
||||
|
||||
void Init()
|
||||
{
|
||||
hashBlock = uint256();
|
||||
|
@ -275,7 +275,7 @@ ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue,
|
||||
CWalletTx wtx;
|
||||
ssValue >> wtx;
|
||||
CValidationState state;
|
||||
if (!(CheckTransaction(wtx, state) && (wtx.GetHash() == hash) && state.IsValid()))
|
||||
if (!(CheckTransaction(*wtx.tx, state) && (wtx.GetHash() == hash) && state.IsValid()))
|
||||
return false;
|
||||
|
||||
// Undo serialize changes in 31600
|
||||
|
Loading…
Reference in New Issue
Block a user