Checkpoints valudation, PoW reward calculation and continue working on block index.
[NovacoinLibrary.git] / Novacoin / CBlockHeader.cs
index 29abc7d..09cbd1b 100644 (file)
@@ -37,12 +37,12 @@ namespace Novacoin
                /// <summary>
                /// Previous block hash.
                /// </summary>
-               public ScryptHash256 prevHash;
+               public uint256 prevHash;
 
                /// <summary>
                /// Merkle root hash.
                /// </summary>
-               public Hash256 merkleRoot;
+               public uint256 merkleRoot;
 
                /// <summary>
                /// Block timestamp.
@@ -65,28 +65,28 @@ namespace Novacoin
                public CBlockHeader ()
                {
             nVersion = 6;
-            prevHash = new ScryptHash256();
-            merkleRoot = new Hash256();
+            prevHash = new uint256();
+            merkleRoot = new uint256();
             nTime = Interop.GetTime();
             nBits = 0;
             nNonce = 0;
                }
 
-        public CBlockHeader(CBlockHeader h)
+        public CBlockHeader(CBlockHeader header)
         {
-            nVersion = h.nVersion;
-            prevHash = new ScryptHash256(h.prevHash);
-            merkleRoot = new Hash256(h.merkleRoot);
-            nTime = h.nTime;
-            nBits = h.nBits;
-            nNonce = h.nNonce;
+            nVersion = header.nVersion;
+            prevHash = header.prevHash;
+            merkleRoot = header.merkleRoot;
+            nTime = header.nTime;
+            nBits = header.nBits;
+            nNonce = header.nNonce;
         }
 
         internal CBlockHeader(ref BinaryReader reader)
         {
             nVersion = reader.ReadUInt32();
-            prevHash = new ScryptHash256(reader.ReadBytes(32));
-            merkleRoot = new Hash256(reader.ReadBytes(32));
+            prevHash = reader.ReadBytes(32);
+            merkleRoot = reader.ReadBytes(32);
             nTime = reader.ReadUInt32();
             nBits = reader.ReadUInt32();
             nNonce = reader.ReadUInt32();
@@ -104,8 +104,8 @@ namespace Novacoin
             var reader = new BinaryReader(stream);
 
             nVersion = reader.ReadUInt32();
-            prevHash = new ScryptHash256(reader.ReadBytes(32));
-            merkleRoot = new Hash256(reader.ReadBytes(32));
+            prevHash = reader.ReadBytes(32);
+            merkleRoot = reader.ReadBytes(32);
             nTime = reader.ReadUInt32();
             nBits = reader.ReadUInt32();
             nNonce = reader.ReadUInt32();
@@ -117,17 +117,17 @@ namespace Novacoin
         /// Convert current block header instance into sequence of bytes
         /// </summary>
         /// <returns>Byte sequence</returns>
-        public static implicit operator byte[] (CBlockHeader h)
+        public static implicit operator byte[] (CBlockHeader header)
         {
             var stream = new MemoryStream();
             var writer = new BinaryWriter(stream);
 
-            writer.Write(h.nVersion);
-            writer.Write(h.prevHash);
-            writer.Write(h.merkleRoot);
-            writer.Write(h.nTime);
-            writer.Write(h.nBits);
-            writer.Write(h.nNonce);
+            writer.Write(header.nVersion);
+            writer.Write(header.prevHash);
+            writer.Write(header.merkleRoot);
+            writer.Write(header.nTime);
+            writer.Write(header.nBits);
+            writer.Write(header.nNonce);
 
             var resultBytes = stream.ToArray();
 
@@ -136,17 +136,17 @@ namespace Novacoin
             return resultBytes;
         }
 
-        public ScryptHash256 Hash
+        public uint256 Hash
         {
             get {
-                return ScryptHash256.Compute256(this);
+                return CryptoUtils.ComputeScryptHash256(this);
             }
         }
 
         public override string ToString()
         {
             var sb = new StringBuilder();
-            sb.AppendFormat("CBlockHeader(nVersion={0}, prevHash={1}, merkleRoot={2}, nTime={3}, nBits={4}, nNonce={5})", nVersion, prevHash.ToString(), merkleRoot.ToString(), nTime, nBits, nNonce);
+            sb.AppendFormat("CBlockHeader(nVersion={0}, prevHash={1}, merkleRoot={2}, nTime={3}, nBits={4}, nNonce={5})", nVersion, prevHash, merkleRoot, nTime, nBits, nNonce);
             return sb.ToString();
         }
        }