CheckProofOfWork() Linux error on old altcoins I've seen the following error on Linnux online with several old altcoins now, the one below is UFO coin. It will sync exactly 500 blocks and then throw the following error, if I restart the client the error on that block does not reappear and it downloads a further 500 blocks and throws the exact same error.

I'v added a few extra lines to get some additional debugging info. Before I spent time crawling through code I was hoping that someone else may have come across this same error and found the reason. UFO is several years old and current Windows clients are running OpenSSL 1.0.1h, services running were probably compiled around the time of that SSL release. The server with this issue is running OpenSSL 1.0.2g.

CheckProofOfWork() bnTarget.getuint256=000000050e650000000000000000000000000000000000000000000000000000
SetBestChain: new best=f7c2f4f28e66399bc17e0e35498300c20bf384d210ce8c5d640b70d9a3dfe372  height=17000  work=68218691770398  date=01/23/14 03:00:50  tx=2 ProcessBlock: ACCEPTED
received block 93f88d57ab19ae388e22
CheckProofOfWork() hash=bf82aa6e76ec014faf5bc9c347eb5ba8242545acdf09259ac753b8d264aec0f0
CheckProofOfWork() nBits=486629382
CheckProofOfWork() bnTarget.getuint256=0000000160060000000000000000000000000000000000000000000000000000
ERROR: CheckProofOfWork() : hash doesn't match nBits
ERROR: CheckBlock() : proof of work failed
ERROR: ProcessBlock() : CheckBlock FAILED


Edit: Compiled it with OpenSSL 1.0.1u and have the error.
That error simply means that the block is invalid as the proof of work is incorrect. That has nothing to do with OpenSSL versions. The difficulty of a block is specified by the nBits field of the block header, and the block header must hash to a hash that is less than nBits. What is happening here is that the block hash is not less than the nBits, so the block is invalid.