diff --git a/src/main.cpp b/src/main.cpp index d92f528b74b..3c8a4a6d184 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1784,7 +1784,7 @@ bool CBlock::AddToBlockIndex(unsigned int nFile, unsigned int nBlockPos) pindexNew->bnChainTrust = (pindexNew->pprev ? pindexNew->pprev->bnChainTrust : 0) + pindexNew->GetBlockTrust(); // ppcoin: compute stake entropy bit for stake modifier - if (!pindexNew->SetStakeEntropyBit(GetStakeEntropyBit())) + if (!pindexNew->SetStakeEntropyBit(GetStakeEntropyBit(pindexNew->nHeight))) return error("AddToBlockIndex() : SetStakeEntropyBit() failed"); // ppcoin: record proof-of-stake hash value diff --git a/src/main.h b/src/main.h index 7e05562b2f9..e3f454f9ec3 100644 --- a/src/main.h +++ b/src/main.h @@ -966,8 +966,18 @@ class CBlock void UpdateTime(const CBlockIndex* pindexPrev); // ppcoin: entropy bit for stake modifier if chosen by modifier - unsigned int GetStakeEntropyBit() const + unsigned int GetStakeEntropyBit(unsigned int nHeight) const { + // Protocol switch to support p2pool at novacoin block #9689 + if (nHeight >= 9689) + { + // Take last bit of block hash as entropy bit + unsigned int nEntropyBit = ((GetHash().Get64()) & 1llu); + if (fDebug && GetBoolArg("-printstakemodifier")) + printf("GetStakeEntropyBit: nHeight=%u hashBlock=%s nEntropyBit=%u\n", nHeight, GetHash().ToString().c_str(), nEntropyBit); + return nEntropyBit; + } + // Before novacoin block #9689 - old protocol uint160 hashSig = Hash160(vchBlockSig); if (fDebug && GetBoolArg("-printstakemodifier")) printf("GetStakeEntropyBit: hashSig=%s", hashSig.ToString().c_str());