};
// CreateNewBlock: create new block (without proof-of-work/with provided coinstake)
-CBlock* CreateNewBlock(CWallet* pwallet, CTransaction *txCoinStake)
+std::shared_ptr<CBlock> CreateNewBlock(CWallet* pwallet, CTransaction *txCoinStake)
{
bool fProofOfStake = txCoinStake != NULL;
// Create new block
- auto_ptr<CBlock> pblock(new CBlock());
+ shared_ptr<CBlock> pblock(new CBlock());
if (!pblock.get())
return NULL;
pblock->nNonce = 0;
}
- return pblock.release();
+ return pblock;
}
-void IncrementExtraNonce(CBlock* pblock, CBlockIndex* pindexPrev, unsigned int& nExtraNonce)
+void IncrementExtraNonce(shared_ptr<CBlock>& pblock, CBlockIndex* pindexPrev, unsigned int& nExtraNonce)
{
// Update nExtraNonce
static uint256 hashPrevBlock;
}
-void FormatHashBuffers(CBlock* pblock, char* pmidstate, char* pdata, char* phash1)
+void FormatHashBuffers(const shared_ptr<CBlock>& pblock, char* pmidstate, char* pdata, char* phash1)
{
//
// Pre-build hash buffers
}
-bool CheckWork(CBlock* pblock, CWallet& wallet, CReserveKey& reservekey)
+bool CheckWork(const std::shared_ptr<CBlock>& pblock, CWallet& wallet, CReserveKey& reservekey)
{
uint256 hashBlock = pblock->GetHash();
uint256 hashTarget = CBigNum().SetCompact(pblock->nBits).getuint256();
}
// Process this block the same as if we had received it from another node
- if (!ProcessBlock(NULL, pblock))
+ if (!ProcessBlock(NULL, pblock.get()))
return error("CheckWork() : ProcessBlock, block not accepted");
}
return true;
}
-bool CheckStake(CBlock* pblock, CWallet& wallet)
+bool CheckStake(const std::shared_ptr<CBlock>& pblock, CWallet& wallet)
{
uint256 proofHash = 0, hashTarget = 0;
uint256 hashBlock = pblock->GetHash();
}
// Process this block the same as if we had received it from another node
- if (!ProcessBlock(NULL, pblock))
+ if (!ProcessBlock(NULL, pblock.get()))
return error("CheckStake() : ProcessBlock, block not accepted");
}
}
// Now we have new coinstake, it's time to create the block ...
- CBlock* pblock;
- pblock = CreateNewBlock(pwallet, &txCoinStake);
+ std::shared_ptr<CBlock> pblock = CreateNewBlock(pwallet, &txCoinStake);
if (!pblock)
{
string strMessage = _("Warning: Unable to allocate memory for the new block object. Mining thread has been stopped.");