Browse Source

Better error checking in consolidation for when CommitTransaction() fails

pull/97/head
Duke Leto 4 years ago
parent
commit
e4bfafc76c
  1. 12
      src/wallet/asyncrpcoperation_saplingconsolidation.cpp
  2. 4
      src/wallet/wallet.cpp
  3. 2
      src/wallet/wallet.h

12
src/wallet/asyncrpcoperation_saplingconsolidation.cpp

@ -209,10 +209,14 @@ bool AsyncRPCOperation_saplingconsolidation::main_impl() {
break;
}
pwalletMain->CommitConsolidationTx(tx);
LogPrint("zrpcunsafe", "%s: Committed consolidation transaction with txid=%s\n", getId(), tx.GetHash().ToString());
amountConsolidated += amountToSend - fConsolidationTxFee;
consolidationTxIds.push_back(tx.GetHash().ToString());
if(pwalletMain->CommitConsolidationTx(tx)) {
LogPrint("zrpcunsafe", "%s: Committed consolidation transaction with txid=%s\n", getId(), tx.GetHash().ToString());
amountConsolidated += amountToSend - fConsolidationTxFee;
consolidationTxIds.push_back(tx.GetHash().ToString());
} else {
LogPrint("zrpcunsafe", "%s: Consolidation transaction FAILED in CommitTransaction, txid=%s\n", getId(), tx.GetHash().ToString());
return false;
}
}
}

4
src/wallet/wallet.cpp

@ -637,10 +637,10 @@ void CWallet::RunSaplingConsolidation(int blockHeight) {
}
}
void CWallet::CommitConsolidationTx(const CTransaction& tx) {
bool CWallet::CommitConsolidationTx(const CTransaction& tx) {
CWalletTx wtx(this, tx);
CReserveKey reservekey(pwalletMain);
CommitTransaction(wtx, reservekey);
return CommitTransaction(wtx, reservekey);
}
void CWallet::SetBestChain(const CBlockLocator& loc)

2
src/wallet/wallet.h

@ -1258,7 +1258,7 @@ public:
const CBlock *pblock,
boost::optional<std::pair<SproutMerkleTree, SaplingMerkleTree>> added);
void RunSaplingConsolidation(int blockHeight);
void CommitConsolidationTx(const CTransaction& tx);
bool CommitConsolidationTx(const CTransaction& tx);
/** Saves witness caches and best block locator to disk. */
void SetBestChain(const CBlockLocator& loc);
std::set<std::pair<libzcash::PaymentAddress, uint256>> GetNullifiersForAddresses(const std::set<libzcash::PaymentAddress> & addresses);

Loading…
Cancel
Save