Browse Source

Do not resurrect staking transactions and lose stake age when no block won

pull/4/head
Michael Toutonghi 6 years ago
parent
commit
ec872d3a55
  1. 2
      src/komodo_bitcoind.h
  2. 9
      src/main.cpp

2
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;
}

9
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<CTransaction> 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) {

Loading…
Cancel
Save