Properly serialize/deserialize new blockindex with zstats
This commit is contained in:
11
src/chain.h
11
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)
|
||||
|
||||
39
src/main.cpp
39
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.
|
||||
|
||||
43
src/txdb.cpp
43
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();
|
||||
|
||||
Reference in New Issue
Block a user