diff --git a/src/chain.h b/src/chain.h index 52028563d..f815b5c8a 100644 --- a/src/chain.h +++ b/src/chain.h @@ -613,6 +613,17 @@ public: READWRITE(VARINT(chainPower.nHeight)); READWRITE(VARINT(nStatus)); READWRITE(VARINT(nTx)); + + READWRITE(VARINT(nShieldedTx)); + READWRITE(VARINT(nShieldingTx)); + READWRITE(VARINT(nDeshieldingTx)); + READWRITE(VARINT(nFullyShieldedTx)); + + READWRITE(VARINT(nShieldedPayments)); + READWRITE(VARINT(nShieldingPayments)); + READWRITE(VARINT(nDeshieldingPayments)); + READWRITE(VARINT(nFullyShieldedPayments)); + if (nStatus & (BLOCK_HAVE_DATA | BLOCK_HAVE_UNDO)) READWRITE(VARINT(nFile)); if (nStatus & BLOCK_HAVE_DATA) diff --git a/src/main.cpp b/src/main.cpp index 8b37525fc..616054880 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -6148,9 +6148,15 @@ bool static LoadBlockIndexDB() if (pindex->pprev) { if (pindex->pprev->nChainTx) { - pindex->nChainTx = pindex->pprev->nChainTx + pindex->nTx; - pindex->nChainShieldedTx = pindex->pprev->nChainShieldedTx + pindex->nShieldedTx; - pindex->nChainShieldedPayments = pindex->pprev->nChainShieldedPayments + pindex->nShieldedPayments; + pindex->nChainTx = pindex->pprev->nChainTx + pindex->nTx; + pindex->nChainShieldedTx = pindex->pprev->nChainShieldedTx + pindex->nShieldedTx; + pindex->nChainShieldedPayments = pindex->pprev->nChainShieldedPayments + pindex->nShieldedPayments; + pindex->nChainShieldingTx = pindex->pprev->nChainShieldingTx + pindex->nShieldingTx; + pindex->nChainShieldingPayments = pindex->pprev->nChainShieldingPayments + pindex->nShieldingPayments; + pindex->nChainDeshieldingTx = pindex->pprev->nChainShieldedTx + pindex->nShieldedTx; + pindex->nChainDeshieldingPayments = pindex->pprev->nChainShieldedPayments + pindex->nShieldedPayments; + pindex->nChainFullyShieldedTx = pindex->pprev->nChainFullyShieldedTx + pindex->nFullyShieldedTx; + pindex->nChainFullyShieldedPayments = pindex->pprev->nChainFullyShieldedPayments + pindex->nFullyShieldedPayments; if (pindex->pprev->nChainSproutValue && pindex->nSproutValue) { pindex->nChainSproutValue = *pindex->pprev->nChainSproutValue + *pindex->nSproutValue; @@ -6163,15 +6169,30 @@ bool static LoadBlockIndexDB() pindex->nChainSaplingValue = boost::none; } } else { - pindex->nChainTx = 0; - pindex->nChainSproutValue = boost::none; - pindex->nChainSaplingValue = boost::none; + pindex->nChainTx = 0; + pindex->nChainShieldedTx = 0; + pindex->nChainFullyShieldedTx = 0; + pindex->nChainShieldedPayments = 0; + pindex->nChainShieldingPayments = 0; + pindex->nChainDeshieldingTx = 0; + pindex->nChainDeshieldingPayments = 0; + pindex->nChainFullyShieldedTx = 0; + pindex->nChainFullyShieldedPayments = 0; + pindex->nChainSproutValue = boost::none; + pindex->nChainSaplingValue = boost::none; mapBlocksUnlinked.insert(std::make_pair(pindex->pprev, pindex)); } } else { - pindex->nChainTx = pindex->nTx; - pindex->nChainSproutValue = pindex->nSproutValue; - pindex->nChainSaplingValue = pindex->nSaplingValue; + pindex->nChainTx = pindex->nTx; + pindex->nChainShieldedTx = pindex->nShieldedTx; + pindex->nChainShieldedPayments = pindex->nShieldedPayments; + pindex->nChainShieldingTx = pindex->nShieldingTx; + pindex->nChainShieldingPayments = pindex->nShieldingPayments; + pindex->nChainDeshieldingTx = pindex->nDeshieldingTx; + pindex->nChainDeshieldingPayments = pindex->nDeshieldingPayments; + pindex->nChainFullyShieldedPayments = pindex->nFullyShieldedPayments; + pindex->nChainSproutValue = pindex->nSproutValue; + pindex->nChainSaplingValue = pindex->nSaplingValue; } } // Construct in-memory chain of branch IDs. diff --git a/src/txdb.cpp b/src/txdb.cpp index 82885044e..a462061a1 100644 --- a/src/txdb.cpp +++ b/src/txdb.cpp @@ -702,24 +702,33 @@ bool CBlockTreeDB::LoadBlockIndexGuts() CBlockIndex* pindexNew = InsertBlockIndex(diskindex.GetBlockHash()); pindexNew->pprev = InsertBlockIndex(diskindex.hashPrev); pindexNew->SetHeight(diskindex.GetHeight()); - pindexNew->nFile = diskindex.nFile; - pindexNew->nDataPos = diskindex.nDataPos; - pindexNew->nUndoPos = diskindex.nUndoPos; - pindexNew->hashSproutAnchor = diskindex.hashSproutAnchor; - pindexNew->nVersion = diskindex.nVersion; - pindexNew->hashMerkleRoot = diskindex.hashMerkleRoot; + pindexNew->nFile = diskindex.nFile; + pindexNew->nDataPos = diskindex.nDataPos; + pindexNew->nUndoPos = diskindex.nUndoPos; + pindexNew->hashSproutAnchor = diskindex.hashSproutAnchor; + pindexNew->nVersion = diskindex.nVersion; + pindexNew->hashMerkleRoot = diskindex.hashMerkleRoot; pindexNew->hashFinalSaplingRoot = diskindex.hashFinalSaplingRoot; - pindexNew->nTime = diskindex.nTime; - pindexNew->nBits = diskindex.nBits; - pindexNew->nNonce = diskindex.nNonce; - pindexNew->nSolution = diskindex.nSolution; - pindexNew->nStatus = diskindex.nStatus; - pindexNew->nCachedBranchId = diskindex.nCachedBranchId; - pindexNew->nTx = diskindex.nTx; - pindexNew->nSproutValue = diskindex.nSproutValue; - pindexNew->nSaplingValue = diskindex.nSaplingValue; - pindexNew->segid = diskindex.segid; - pindexNew->nNotaryPay = diskindex.nNotaryPay; + pindexNew->nTime = diskindex.nTime; + pindexNew->nBits = diskindex.nBits; + pindexNew->nNonce = diskindex.nNonce; + pindexNew->nSolution = diskindex.nSolution; + pindexNew->nStatus = diskindex.nStatus; + pindexNew->nCachedBranchId = diskindex.nCachedBranchId; + pindexNew->nTx = diskindex.nTx; + pindexNew->nShieldedTx = diskindex.nShieldedTx; + pindexNew->nShieldedPayments = diskindex.nShieldedPayments; + pindexNew->nShieldingTx = diskindex.nShieldingTx; + pindexNew->nShieldingPayments = diskindex.nShieldingPayments; + pindexNew->nDeshieldingTx = diskindex.nDeshieldingTx; + pindexNew->nDeshieldingPayments = diskindex.nDeshieldingPayments; + pindexNew->nFullyShieldedTx = diskindex.nFullyShieldedTx; + pindexNew->nFullyShieldedPayments = diskindex.nFullyShieldedPayments; + pindexNew->nSproutValue = diskindex.nSproutValue; + pindexNew->nSaplingValue = diskindex.nSaplingValue; + pindexNew->segid = diskindex.segid; + pindexNew->nNotaryPay = diskindex.nNotaryPay; + //fprintf(stderr,"loadguts ht.%d\n",pindexNew->GetHeight()); // Consistency checks auto header = pindexNew->GetBlockHeader();