@@ -4388,7 +4388,9 @@ UniValue z_viewtransaction(const UniValue& params, bool fHelp, const CPubKey& my
|
|||||||
// Fetch the note that is being spent
|
// Fetch the note that is being spent
|
||||||
auto res = pwalletMain->mapSaplingNullifiersToNotes.find(spend.nullifier);
|
auto res = pwalletMain->mapSaplingNullifiersToNotes.find(spend.nullifier);
|
||||||
if (res == pwalletMain->mapSaplingNullifiersToNotes.end()) {
|
if (res == pwalletMain->mapSaplingNullifiersToNotes.end()) {
|
||||||
fprintf(stderr,"Could not find spending note %s", uint256_str(str, spend.nullifier));
|
if(fZdebug) {
|
||||||
|
fprintf(stderr,"Could not find spending note %s\n", uint256_str(str, spend.nullifier));
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
auto op = res->second;
|
auto op = res->second;
|
||||||
@@ -4442,8 +4444,10 @@ UniValue z_viewtransaction(const UniValue& params, bool fHelp, const CPubKey& my
|
|||||||
pa = recovered->second;
|
pa = recovered->second;
|
||||||
isOutgoing = true;
|
isOutgoing = true;
|
||||||
} else {
|
} else {
|
||||||
// Unreadable
|
// Unreadable or unconfirmed?
|
||||||
fprintf(stderr,"Could not recover Sapling note!");
|
if(fZdebug) {
|
||||||
|
fprintf(stderr,"Could not recover Sapling note!\n");
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1288,10 +1288,6 @@ void CWallet::BuildWitnessCache(const CBlockIndex* pindex, bool witnessOnly)
|
|||||||
LogPrintf("Building Witnesses for block %i %.4f complete\n", pblockindex->GetHeight(), pblockindex->GetHeight() / double(height));
|
LogPrintf("Building Witnesses for block %i %.4f complete\n", pblockindex->GetHeight(), pblockindex->GetHeight() / double(height));
|
||||||
}
|
}
|
||||||
|
|
||||||
SproutMerkleTree sproutTree;
|
|
||||||
sproutRoot = pblockindex->pprev->hashFinalSproutRoot;
|
|
||||||
pcoinsTip->GetSproutAnchorAt(sproutRoot, sproutTree);
|
|
||||||
|
|
||||||
SaplingMerkleTree saplingTree;
|
SaplingMerkleTree saplingTree;
|
||||||
saplingRoot = pblockindex->pprev->hashFinalSaplingRoot;
|
saplingRoot = pblockindex->pprev->hashFinalSaplingRoot;
|
||||||
pcoinsTip->GetSaplingAnchorAt(saplingRoot, saplingTree);
|
pcoinsTip->GetSaplingAnchorAt(saplingRoot, saplingTree);
|
||||||
@@ -1302,7 +1298,7 @@ void CWallet::BuildWitnessCache(const CBlockIndex* pindex, bool witnessOnly)
|
|||||||
|
|
||||||
for (std::pair<const uint256, CWalletTx>& wtxItem : mapWallet) {
|
for (std::pair<const uint256, CWalletTx>& wtxItem : mapWallet) {
|
||||||
|
|
||||||
if (wtxItem.second.mapSproutNoteData.empty() && wtxItem.second.mapSaplingNoteData.empty())
|
if (wtxItem.second.mapSaplingNoteData.empty())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (wtxItem.second.GetDepthInMainChain() > 0) {
|
if (wtxItem.second.GetDepthInMainChain() > 0) {
|
||||||
@@ -3066,38 +3062,11 @@ void CWallet::DeleteWalletTransactions(const CBlockIndex* pindex) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Check for unspent inputs or spend less than N Blocks ago. (Sprout)
|
|
||||||
for (auto & pair : pwtx->mapSproutNoteData) {
|
|
||||||
SproutNoteData nd = pair.second;
|
|
||||||
if (!nd.nullifier || pwalletMain->GetSproutSpendDepth(*nd.nullifier) <= fDeleteTransactionsAfterNBlocks) {
|
|
||||||
LogPrint("deletetx","DeleteTx - Unspent sprout input tx %s\n", pwtx->GetHash().ToString());
|
|
||||||
deleteTx = false;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!deleteTx) {
|
if (!deleteTx) {
|
||||||
txSaveCount++;
|
txSaveCount++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Check for outputs that no longer have parents in the wallet. Exclude parents that are in the same transaction. (Sprout)
|
|
||||||
for (int i = 0; i < pwtx->vjoinsplit.size(); i++) {
|
|
||||||
const JSDescription& jsdesc = pwtx->vjoinsplit[i];
|
|
||||||
for (const uint256 &nullifier : jsdesc.nullifiers) {
|
|
||||||
// JSOutPoint op = pwalletMain->mapSproutNullifiersToNotes[nullifier];
|
|
||||||
if (pwalletMain->IsSproutNullifierFromMe(nullifier)) {
|
|
||||||
const uint256& parentHash = pwalletMain->mapSproutNullifiersToNotes[nullifier].hash;
|
|
||||||
const CWalletTx* parent = pwalletMain->GetWalletTx(parentHash);
|
|
||||||
if (parent != NULL && parentHash != wtxid) {
|
|
||||||
LogPrint("deletetx","DeleteTx - Parent of sprout tx %s found\n", pwtx->GetHash().ToString());
|
|
||||||
deleteTx = false;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!deleteTx) {
|
if (!deleteTx) {
|
||||||
txSaveCount++;
|
txSaveCount++;
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
Reference in New Issue
Block a user