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(chainPower.nHeight));
|
||||||
READWRITE(VARINT(nStatus));
|
READWRITE(VARINT(nStatus));
|
||||||
READWRITE(VARINT(nTx));
|
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))
|
if (nStatus & (BLOCK_HAVE_DATA | BLOCK_HAVE_UNDO))
|
||||||
READWRITE(VARINT(nFile));
|
READWRITE(VARINT(nFile));
|
||||||
if (nStatus & BLOCK_HAVE_DATA)
|
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) {
|
||||||
if (pindex->pprev->nChainTx) {
|
if (pindex->pprev->nChainTx) {
|
||||||
|
|
||||||
pindex->nChainTx = pindex->pprev->nChainTx + pindex->nTx;
|
pindex->nChainTx = pindex->pprev->nChainTx + pindex->nTx;
|
||||||
pindex->nChainShieldedTx = pindex->pprev->nChainShieldedTx + pindex->nShieldedTx;
|
pindex->nChainShieldedTx = pindex->pprev->nChainShieldedTx + pindex->nShieldedTx;
|
||||||
pindex->nChainShieldedPayments = pindex->pprev->nChainShieldedPayments + pindex->nShieldedPayments;
|
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) {
|
if (pindex->pprev->nChainSproutValue && pindex->nSproutValue) {
|
||||||
pindex->nChainSproutValue = *pindex->pprev->nChainSproutValue + *pindex->nSproutValue;
|
pindex->nChainSproutValue = *pindex->pprev->nChainSproutValue + *pindex->nSproutValue;
|
||||||
@@ -6163,15 +6169,30 @@ bool static LoadBlockIndexDB()
|
|||||||
pindex->nChainSaplingValue = boost::none;
|
pindex->nChainSaplingValue = boost::none;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
pindex->nChainTx = 0;
|
pindex->nChainTx = 0;
|
||||||
pindex->nChainSproutValue = boost::none;
|
pindex->nChainShieldedTx = 0;
|
||||||
pindex->nChainSaplingValue = boost::none;
|
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));
|
mapBlocksUnlinked.insert(std::make_pair(pindex->pprev, pindex));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
pindex->nChainTx = pindex->nTx;
|
pindex->nChainTx = pindex->nTx;
|
||||||
pindex->nChainSproutValue = pindex->nSproutValue;
|
pindex->nChainShieldedTx = pindex->nShieldedTx;
|
||||||
pindex->nChainSaplingValue = pindex->nSaplingValue;
|
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.
|
// 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());
|
CBlockIndex* pindexNew = InsertBlockIndex(diskindex.GetBlockHash());
|
||||||
pindexNew->pprev = InsertBlockIndex(diskindex.hashPrev);
|
pindexNew->pprev = InsertBlockIndex(diskindex.hashPrev);
|
||||||
pindexNew->SetHeight(diskindex.GetHeight());
|
pindexNew->SetHeight(diskindex.GetHeight());
|
||||||
pindexNew->nFile = diskindex.nFile;
|
pindexNew->nFile = diskindex.nFile;
|
||||||
pindexNew->nDataPos = diskindex.nDataPos;
|
pindexNew->nDataPos = diskindex.nDataPos;
|
||||||
pindexNew->nUndoPos = diskindex.nUndoPos;
|
pindexNew->nUndoPos = diskindex.nUndoPos;
|
||||||
pindexNew->hashSproutAnchor = diskindex.hashSproutAnchor;
|
pindexNew->hashSproutAnchor = diskindex.hashSproutAnchor;
|
||||||
pindexNew->nVersion = diskindex.nVersion;
|
pindexNew->nVersion = diskindex.nVersion;
|
||||||
pindexNew->hashMerkleRoot = diskindex.hashMerkleRoot;
|
pindexNew->hashMerkleRoot = diskindex.hashMerkleRoot;
|
||||||
pindexNew->hashFinalSaplingRoot = diskindex.hashFinalSaplingRoot;
|
pindexNew->hashFinalSaplingRoot = diskindex.hashFinalSaplingRoot;
|
||||||
pindexNew->nTime = diskindex.nTime;
|
pindexNew->nTime = diskindex.nTime;
|
||||||
pindexNew->nBits = diskindex.nBits;
|
pindexNew->nBits = diskindex.nBits;
|
||||||
pindexNew->nNonce = diskindex.nNonce;
|
pindexNew->nNonce = diskindex.nNonce;
|
||||||
pindexNew->nSolution = diskindex.nSolution;
|
pindexNew->nSolution = diskindex.nSolution;
|
||||||
pindexNew->nStatus = diskindex.nStatus;
|
pindexNew->nStatus = diskindex.nStatus;
|
||||||
pindexNew->nCachedBranchId = diskindex.nCachedBranchId;
|
pindexNew->nCachedBranchId = diskindex.nCachedBranchId;
|
||||||
pindexNew->nTx = diskindex.nTx;
|
pindexNew->nTx = diskindex.nTx;
|
||||||
pindexNew->nSproutValue = diskindex.nSproutValue;
|
pindexNew->nShieldedTx = diskindex.nShieldedTx;
|
||||||
pindexNew->nSaplingValue = diskindex.nSaplingValue;
|
pindexNew->nShieldedPayments = diskindex.nShieldedPayments;
|
||||||
pindexNew->segid = diskindex.segid;
|
pindexNew->nShieldingTx = diskindex.nShieldingTx;
|
||||||
pindexNew->nNotaryPay = diskindex.nNotaryPay;
|
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());
|
//fprintf(stderr,"loadguts ht.%d\n",pindexNew->GetHeight());
|
||||||
// Consistency checks
|
// Consistency checks
|
||||||
auto header = pindexNew->GetBlockHeader();
|
auto header = pindexNew->GetBlockHeader();
|
||||||
|
|||||||
Reference in New Issue
Block a user