fix for DGW till perm fix later

This commit is contained in:
Evan 2014-04-08 02:09:55 -07:00
parent 9c25fc1034
commit 54fd5f3234

View File

@ -2369,19 +2369,37 @@ bool CBlock::AcceptBlock(CValidationState &state, CDiskBlockPos *dbp)
pindexPrev = (*mi).second; pindexPrev = (*mi).second;
nHeight = pindexPrev->nHeight+1; nHeight = pindexPrev->nHeight+1;
#ifdef _WIN32
// Check proof of work
if(nHeight >= 34140){
unsigned int nBitsNext = GetNextWorkRequired(pindexPrev, this);
double n1 = ConvertBitsToDouble(nBits);
double n2 = ConvertBitsToDouble(nBitsNext);
// Check proof of work if (nHeight <= 45000) {
if(nHeight >= 34140 && nHeight <= 45000){ if (abs(n1-n2) > n1*0.2)
unsigned int nBitsNext = GetNextWorkRequired(pindexPrev, this); return state.DoS(100, error("AcceptBlock() : incorrect proof of work (DGW pre-fork)"));
double n1 = ConvertBitsToDouble(nBits); } else {
double n2 = ConvertBitsToDouble(nBitsNext); if (abs(n1-n2) > n1*0.005)
if (abs(n1-n2) > n1*0.2) return state.DoS(100, error("AcceptBlock() : incorrect proof of work (DGW2)"));
return state.DoS(100, error("AcceptBlock() : incorrect proof of work (DGW pre-fork)")); }
} else { } else {
if (nBits != GetNextWorkRequired(pindexPrev, this)) if (nBits != GetNextWorkRequired(pindexPrev, this))
return state.DoS(100, error("AcceptBlock() : incorrect proof of work")); return state.DoS(100, error("AcceptBlock() : incorrect proof of work"));
} }
#else
// Check proof of work
if(nHeight >= 34140 && nHeight <= 45000){
unsigned int nBitsNext = GetNextWorkRequired(pindexPrev, this);
double n1 = ConvertBitsToDouble(nBits);
double n2 = ConvertBitsToDouble(nBitsNext);
if (abs(n1-n2) > n1*0.2)
return state.DoS(100, error("AcceptBlock() : incorrect proof of work (DGW pre-fork)"));
} else {
if (nBits != GetNextWorkRequired(pindexPrev, this))
return state.DoS(100, error("AcceptBlock() : incorrect proof of work"));
}
#endif
// Prevent blocks from too far in the future // Prevent blocks from too far in the future
if(fTestNet || nHeight >= 45000){ if(fTestNet || nHeight >= 45000){