@@ -122,10 +122,6 @@ bool BuildQuorumRotationInfo(CDeterministicMNManager& dmnman, CQuorumSnapshotMan
122122 errorRet = strprintf (" tip block not found" );
123123 return false ;
124124 }
125- // Build MN list Diff always with highest baseblock
126- if (!BuildSimplifiedMNListDiff (dmnman, chainman, qblockman, qman, baseBlockIndexes.back ()->GetBlockHash (), tipBlockIndex->GetBlockHash (), response.mnListDiffTip , errorRet)) {
127- return false ;
128- }
129125
130126 const CBlockIndex* blockIndex = chainman.m_blockman .LookupBlockIndex (request.blockRequestHash );
131127 if (!blockIndex) {
@@ -202,10 +198,6 @@ bool BuildQuorumRotationInfo(CDeterministicMNManager& dmnman, CQuorumSnapshotMan
202198 const CBlockIndex* pWorkBlockHMinus4CIndex = pBlockHMinus4CIndex->GetAncestor (pBlockHMinus4CIndex->nHeight - workDiff);
203199 // Checked later if extraShare is on
204200
205- if (!BuildSimplifiedMNListDiff (dmnman, chainman, qblockman, qman, GetLastBaseBlockHash (baseBlockIndexes, pWorkBlockHMinusCIndex), pWorkBlockHMinusCIndex->GetBlockHash (), response.mnListDiffAtHMinusC , errorRet)) {
206- return false ;
207- }
208-
209201 auto snapshotHMinusC = qsnapman.GetSnapshotForBlock (llmqType, pBlockHMinusCIndex);
210202 if (!snapshotHMinusC.has_value ()) {
211203 errorRet = strprintf (" Can not find quorum snapshot at H-C" );
@@ -214,10 +206,6 @@ bool BuildQuorumRotationInfo(CDeterministicMNManager& dmnman, CQuorumSnapshotMan
214206 response.quorumSnapshotAtHMinusC = std::move (snapshotHMinusC.value ());
215207 }
216208
217- if (!BuildSimplifiedMNListDiff (dmnman, chainman, qblockman, qman, GetLastBaseBlockHash (baseBlockIndexes, pWorkBlockHMinus2CIndex), pWorkBlockHMinus2CIndex->GetBlockHash (), response.mnListDiffAtHMinus2C , errorRet)) {
218- return false ;
219- }
220-
221209 auto snapshotHMinus2C = qsnapman.GetSnapshotForBlock (llmqType, pBlockHMinus2CIndex);
222210 if (!snapshotHMinus2C.has_value ()) {
223211 errorRet = strprintf (" Can not find quorum snapshot at H-2C" );
@@ -226,10 +214,6 @@ bool BuildQuorumRotationInfo(CDeterministicMNManager& dmnman, CQuorumSnapshotMan
226214 response.quorumSnapshotAtHMinus2C = std::move (snapshotHMinus2C.value ());
227215 }
228216
229- if (!BuildSimplifiedMNListDiff (dmnman, chainman, qblockman, qman, GetLastBaseBlockHash (baseBlockIndexes, pWorkBlockHMinus3CIndex), pWorkBlockHMinus3CIndex->GetBlockHash (), response.mnListDiffAtHMinus3C , errorRet)) {
230- return false ;
231- }
232-
233217 auto snapshotHMinus3C = qsnapman.GetSnapshotForBlock (llmqType, pBlockHMinus3CIndex);
234218 if (!snapshotHMinus3C.has_value ()) {
235219 errorRet = strprintf (" Can not find quorum snapshot at H-3C" );
@@ -258,6 +242,7 @@ bool BuildQuorumRotationInfo(CDeterministicMNManager& dmnman, CQuorumSnapshotMan
258242 if (!BuildSimplifiedMNListDiff (dmnman, chainman, qblockman, qman, GetLastBaseBlockHash (baseBlockIndexes, pWorkBlockHMinus4CIndex), pWorkBlockHMinus4CIndex->GetBlockHash (), mn4c, errorRet)) {
259243 return false ;
260244 }
245+ baseBlockIndexes.push_back (pWorkBlockHMinus4CIndex);
261246
262247 response.mnListDiffAtHMinus4C = std::move (mn4c);
263248 } else {
@@ -314,10 +299,30 @@ bool BuildQuorumRotationInfo(CDeterministicMNManager& dmnman, CQuorumSnapshotMan
314299 if (!BuildSimplifiedMNListDiff (dmnman, chainman, qblockman, qman, GetLastBaseBlockHash (baseBlockIndexes, pNeededWorkBlockIndex), pNeededWorkBlockIndex->GetBlockHash (), mnhneeded, errorRet)) {
315300 return false ;
316301 }
302+ baseBlockIndexes.push_back (pNeededWorkBlockIndex);
317303
318304 response.mnListDiffList .push_back (mnhneeded);
319305 }
320306
307+ if (!BuildSimplifiedMNListDiff (dmnman, chainman, qblockman, qman, GetLastBaseBlockHash (baseBlockIndexes, pWorkBlockHMinus3CIndex), pWorkBlockHMinus3CIndex->GetBlockHash (), response.mnListDiffAtHMinus3C , errorRet)) {
308+ return false ;
309+ }
310+ baseBlockIndexes.push_back (pWorkBlockHMinus3CIndex);
311+
312+ if (!BuildSimplifiedMNListDiff (dmnman, chainman, qblockman, qman, GetLastBaseBlockHash (baseBlockIndexes, pWorkBlockHMinus2CIndex), pWorkBlockHMinus2CIndex->GetBlockHash (), response.mnListDiffAtHMinus2C , errorRet)) {
313+ return false ;
314+ }
315+ baseBlockIndexes.push_back (pWorkBlockHMinus2CIndex);
316+
317+ if (!BuildSimplifiedMNListDiff (dmnman, chainman, qblockman, qman, GetLastBaseBlockHash (baseBlockIndexes, pWorkBlockHMinusCIndex), pWorkBlockHMinusCIndex->GetBlockHash (), response.mnListDiffAtHMinusC , errorRet)) {
318+ return false ;
319+ }
320+ baseBlockIndexes.push_back (pWorkBlockHMinusCIndex);
321+
322+ if (!BuildSimplifiedMNListDiff (dmnman, chainman, qblockman, qman, baseBlockIndexes.back ()->GetBlockHash (), tipBlockIndex->GetBlockHash (), response.mnListDiffTip , errorRet)) {
323+ return false ;
324+ }
325+
321326 return true ;
322327}
323328
0 commit comments