diff -ur a/bitcoin/src/main.cpp b/bitcoin/src/main.cpp --- a/bitcoin/src/main.cpp 2024-03-01 00:43:29.576311978 +0000 +++ b/bitcoin/src/main.cpp 2024-03-01 01:21:06.201295330 +0000 @@ -969,6 +969,8 @@ bool CBlock::DisconnectBlock(CTxDB& txdb, CBlockIndex* pindex) { + printf("DisconnectBlock(%s)\n", GetHash().ToString().c_str()); + // Disconnect in reverse order for (int i = vtx.size()-1; i >= 0; i--) if (!vtx[i].DisconnectInputs(txdb)) @@ -989,6 +991,8 @@ bool CBlock::ConnectBlock(CTxDB& txdb, CBlockIndex* pindex) { + printf("ConnectBlock(%s)\n", GetHash().ToString().c_str()); + // Check it again in case a previous version let a bad block in if (!CheckBlock()) return false; @@ -1071,6 +1075,11 @@ return error("Reorganize() : pfork->pprev is null"); } + printf("Reorganize() : fork height=%d with %d to disconnect, %d to connect\n", + pfork->nHeight, + pindexBest->nHeight - pfork->nHeight, + pindexNew->nHeight - pfork->nHeight); + // List of what to disconnect vector vDisconnect; for (CBlockIndex* pindex = pindexBest; pindex != pfork; pindex = pindex->pprev) @@ -1121,9 +1130,12 @@ return error("Reorganize() : WriteHashBestChain failed"); // Make sure it's successfully written to disk before changing memory structure + printf("Reorganize() : successfully connected longer branch; committing now\n"); if (!txdb.TxnCommit()) return error("Reorganize() : TxnCommit failed"); + printf("Reorganize() : updating memory block index\n"); + // Disconnect shorter branch BOOST_FOREACH(CBlockIndex* pindex, vDisconnect) if (pindex->pprev) @@ -1134,6 +1146,8 @@ if (pindex->pprev) pindex->pprev->pnext = pindex; + printf("Reorganize() : updating memory pool transactions\n"); + // Resurrect memory transactions that were in the disconnected branch BOOST_FOREACH(CTransaction& tx, vResurrect) tx.AcceptToMemoryPool(txdb, false);