X-Git-Url: https://git.novaco.in/?p=NovacoinLibrary.git;a=blobdiff_plain;f=Novacoin%2FCBlockStore.cs;fp=Novacoin%2FCBlockStore.cs;h=8235d51e71c5273f50696049020489a3e5b68512;hp=fde21c67d92f8546b8f88d1f3fd50bf77990775b;hb=6dfa6de57c6493b76856acc9ab510ac31962c327;hpb=c45ca30262ee9cf9e6be22d31c0a2dddeffe4e17 diff --git a/Novacoin/CBlockStore.cs b/Novacoin/CBlockStore.cs index fde21c6..8235d51 100644 --- a/Novacoin/CBlockStore.cs +++ b/Novacoin/CBlockStore.cs @@ -1058,7 +1058,6 @@ namespace Novacoin var prevBlockHeader = prevBlockCursor.BlockHeader; - // TODO: proof-of-work/proof-of-stake verification uint nHeight = prevBlockCursor.nHeight + 1; // Check timestamp against prev @@ -1083,7 +1082,17 @@ namespace Novacoin return false; // rejected by checkpoint lock-in } - // TODO: Enforce rule that the coinbase starts with serialized block height + // Enforce rule that the coinbase starts with serialized block height + var expect = new CScript(); + expect.AddNumber((int)nHeight); + + byte[] expectBytes = expect; + byte[] scriptSig = block.vtx[0].vin[0].scriptSig; + + if (!expectBytes.SequenceEqual(scriptSig.Take(expectBytes.Length))) + { + return false; // coinbase doesn't start with serialized height. + } // Write block to file. var itemTemplate = new CBlockStoreItem() @@ -1292,8 +1301,6 @@ namespace Novacoin if (block.IsProofOfStake) { - // TODO: proof-of-stake validation - uint256 hashProofOfStake = 0, targetProofOfStake = 0; if (!StakeModifier.CheckProofOfStake(block.vtx[1], block.header.nBits, out hashProofOfStake, out targetProofOfStake)) {