From ec872d3a555ef96e314a2c8e91023fb0ceae1f99 Mon Sep 17 00:00:00 2001 From: Michael Toutonghi Date: Tue, 22 May 2018 15:53:56 -0700 Subject: [PATCH] Do not resurrect staking transactions and lose stake age when no block won --- src/komodo_bitcoind.h | 2 +- src/main.cpp | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/komodo_bitcoind.h b/src/komodo_bitcoind.h index 82ea1f722..d6a3e937a 100644 --- a/src/komodo_bitcoind.h +++ b/src/komodo_bitcoind.h @@ -1330,7 +1330,7 @@ bool verusCheckPOSBlock(int32_t slowflag, CBlock *pblock, int32_t height) strcpy(voutaddr, CBitcoinAddress(voutaddress).ToString().c_str()); strcpy(destaddr, CBitcoinAddress(destaddress).ToString().c_str()); strcpy(cbaddr, CBitcoinAddress(cbaddress).ToString().c_str()); - if ( !strcmp(destaddr,voutaddr) && strcmp(destaddr,cb) ) + if ( !strcmp(destaddr,voutaddr) && (strcmp(destaddr,cb) || (height < 6480)) ) { isPOS = true; } diff --git a/src/main.cpp b/src/main.cpp index b0e66e391..0569d6c84 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3138,12 +3138,15 @@ bool static DisconnectTip(CValidationState &state, bool fBare = false) { return false; if (!fBare) { - // Resurrect mempool transactions from the disconnected block. - BOOST_FOREACH(const CTransaction &tx, block.vtx) { + // resurrect mempool transactions from the disconnected block. + for (int i = 0; i < block.vtx.size(); i++) + { // ignore validation errors in resurrected transactions + CTransaction &tx = block.vtx[i]; list removed; CValidationState stateDummy; - if (tx.IsCoinBase() || !AcceptToMemoryPool(mempool, stateDummy, tx, false, NULL)) + // don't keep staking transactions + if (tx.IsCoinBase() || (block.IsVerusPOSBlock() && (i == (block.vtx.size() - 1))) || !AcceptToMemoryPool(mempool, stateDummy, tx, false, NULL)) mempool.remove(tx, removed, true); } if (anchorBeforeDisconnect != anchorAfterDisconnect) {