Merge pull request #616 from patricklodder/1.8-dev-auxpow-version

check block version for aux blocks properly for version warning
This commit is contained in:
langerhans 2014-08-18 21:15:52 +02:00
commit 5a186d356e
2 changed files with 17 additions and 2 deletions

View file

@ -1158,6 +1158,11 @@ void CBlockHeader::SetAuxPow(CAuxPow* pow)
auxpow.reset(pow);
}
bool IsAuxPowVersion(int nVersion)
{
return (nVersion == BLOCK_VERSION_AUXPOW_WITH_AUX || nVersion == BLOCK_VERSION_AUXPOW_WITHOUT_AUX);
}
uint256 static GetOrphanRoot(const uint256& hash)
{
map<uint256, COrphanBlock*>::iterator it = mapOrphanBlocks.find(hash);
@ -2066,10 +2071,9 @@ void static UpdateTip(CBlockIndex *pindexNew) {
{
int nUpgraded = 0;
const CBlockIndex* pindex = chainActive.Tip();
int nAuxVersion = CBlockHeader::CURRENT_VERSION | (AUXPOW_CHAIN_ID * BLOCK_VERSION_CHAIN_START);
for (int i = 0; i < 100 && pindex != NULL; i++)
{
if (pindex->nVersion > CBlock::CURRENT_VERSION && pindex->nVersion != nAuxVersion)
if (pindex->nVersion > CBlock::CURRENT_VERSION && !IsAuxPowVersion(pindex->nVersion))
++nUpgraded;
pindex = pindex->pprev;
}

View file

@ -79,6 +79,14 @@ static const int MAX_BLOCKS_IN_TRANSIT_PER_PEER = 128;
/** Timeout in seconds before considering a block download peer unresponsive. */
static const unsigned int BLOCK_DOWNLOAD_TIMEOUT = 60;
/** AuxPow Block versions for sanity checks. */
/** bare AuxPoW block version which will be modulated further. */
static const int BLOCK_VERSION_AUXPOW_BARE = CBlockHeader::CURRENT_VERSION | (AUXPOW_CHAIN_ID * BLOCK_VERSION_CHAIN_START);
/** version when AuxPoW exists on the block */
static const int BLOCK_VERSION_AUXPOW_WITH_AUX = BLOCK_VERSION_AUXPOW_BARE | BLOCK_VERSION_AUXPOW;
/** version when no AuxPoW exists on the block */
static const int BLOCK_VERSION_AUXPOW_WITHOUT_AUX = BLOCK_VERSION_AUXPOW_BARE & ~BLOCK_VERSION_AUXPOW;
#ifdef USE_UPNP
static const int fHaveUPnP = true;
#else
@ -185,6 +193,9 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead
void UpdateTime(CBlockHeader& block, const CBlockIndex* pindexPrev);
/** Determine whether the block version is modulated with auxpow logic */
bool IsAuxPowVersion(int nVersion);
/** Create a new block index entry for a given block hash */
CBlockIndex * InsertBlockIndex(uint256 hash);
/** Verify a signature */