Initialization cleanup
[NovacoinLibrary.git] / Novacoin / CBlockHeader.cs
index 1eb4885..1c346e6 100644 (file)
@@ -1,4 +1,5 @@
 \feffusing System;
+using System.Linq;
 using System.Text;
 using System.Collections.Generic;
 
@@ -46,22 +47,45 @@ namespace Novacoin
                {
                }
 
+        public CBlockHeader(CBlockHeader h)
+        {
+            nVersion = h.nVersion;
+            prevHash = new Hash256(h.prevHash);
+            merkleRoot = new Hash256(h.merkleRoot);
+            nTime = h.nTime;
+            nBits = h.nBits;
+            nNonce = h.nNonce;
+        }
+
+        public CBlockHeader(byte[] bytes)
+        {
+            nVersion = BitConverter.ToUInt32(bytes, 0);
+            prevHash = new Hash256(bytes, 4);
+            merkleRoot = new Hash256(bytes, 36);
+            nTime = BitConverter.ToUInt32(bytes, 68);
+            nBits = BitConverter.ToUInt32(bytes, 72);
+            nNonce = BitConverter.ToUInt32(bytes, 76);
+        }
+
         /// <summary>
         /// Convert current block header instance into sequence of bytes
         /// </summary>
         /// <returns>Byte sequence</returns>
-        public IList<byte> ToBytes()
+        public IList<byte> Bytes
         {
-            List<byte> r = new List<byte>();
+            get
+            {
+                List<byte> r = new List<byte>();
 
-            r.AddRange(BitConverter.GetBytes(nVersion));
-            r.AddRange(prevHash.hashBytes);
-            r.AddRange(merkleRoot.hashBytes);
-            r.AddRange(BitConverter.GetBytes(nTime));
-            r.AddRange(BitConverter.GetBytes(nBits));
-            r.AddRange(BitConverter.GetBytes(nNonce));
+                r.AddRange(BitConverter.GetBytes(nVersion));
+                r.AddRange(prevHash.hashBytes);
+                r.AddRange(merkleRoot.hashBytes);
+                r.AddRange(BitConverter.GetBytes(nTime));
+                r.AddRange(BitConverter.GetBytes(nBits));
+                r.AddRange(BitConverter.GetBytes(nNonce));
 
-            return r;
+                return r;
+            }
         }
 
         public override string ToString()