From 3aae916a057b494e197fc0adaaa5656880090565 Mon Sep 17 00:00:00 2001 From: CryptoManiac Date: Wed, 2 Sep 2015 19:47:59 +0300 Subject: [PATCH] Verification of claimed Proof-of-Work. --- Novacoin/CBlock.cs | 17 ++++++++++++++++- Novacoin/NetInfo.cs | 8 ++++++++ 2 files changed, 24 insertions(+), 1 deletions(-) diff --git a/Novacoin/CBlock.cs b/Novacoin/CBlock.cs index d80e68e..9bf7e36 100644 --- a/Novacoin/CBlock.cs +++ b/Novacoin/CBlock.cs @@ -271,7 +271,22 @@ namespace Novacoin private bool CheckProofOfWork(uint256 hash, uint nBits) { - // TODO: stub! + uint256 nTarget = new uint256(); + nTarget.Compact = nBits; + + // Check range + if (nTarget > NetUtils.nProofOfWorkLimit) + { + // nBits below minimum work + return false; + } + + // Check proof of work matches claimed amount + if (hash > nTarget) + { + // hash doesn't match nBits + return false; + } return true; } diff --git a/Novacoin/NetInfo.cs b/Novacoin/NetInfo.cs index e0307bc..a899fbd 100644 --- a/Novacoin/NetInfo.cs +++ b/Novacoin/NetInfo.cs @@ -4,6 +4,14 @@ namespace Novacoin { internal class NetUtils { + public static uint256 nProofOfWorkLimit = ~(new uint256(0)) >> 20; // "standard" scrypt target limit for proof of work, results with 0,000244140625 proof-of-work difficulty + public static uint256 nProofOfStakeLegacyLimit = ~(new uint256(0)) >> 24; // proof of stake target limit from block #15000 and until 20 June 2013, results with 0,00390625 proof of stake difficulty + + public static uint256 nProofOfStakeLimit = ~(new uint256(0)) >> 27; // proof of stake target limit since 20 June 2013, equal to 0.03125 proof of stake difficulty + public static uint256 nProofOfStakeHardLimit = ~(new uint256(0)) >> 30; // disabled temporarily, will be used in the future to fix minimal proof of stake difficulty at 0.25 + + public static uint256 nPoWBase = new uint256("00000000ffff0000000000000000000000000000000000000000000000000000"); // difficulty-1 target + public static readonly uint nLockTimeThreshold = 500000000; private static readonly uint nDrift = 7200; -- 1.7.1