TrimArray() simplification
[NovacoinLibrary.git] / Novacoin / DatabaseObjects.cs
index b297f6d..b12d681 100644 (file)
@@ -405,26 +405,14 @@ namespace Novacoin
         {
             get
             {
-                uint256 nTarget = 0;
-                nTarget.Compact = nBits;
-
-                /* Old protocol */
-                if (nTime < NetInfo.nChainChecksSwitchTime)
+                // Return 1 for the first 12 blocks
+                if (prev == null || prev.nHeight < 12)
                 {
-                    return IsProofOfStake ? (new uint256(1) << 256) / (nTarget + 1) : 1;
+                    return 1;
                 }
 
-                /* New protocol */
-
-                // Calculate work amount for block
-                var nPoWTrust = NetInfo.nPoWBase / (nTarget + 1);
-
-                // Set nPowTrust to 1 if we are checking PoS block or PoW difficulty is too low
-                nPoWTrust = (IsProofOfStake || !nPoWTrust) ? 1 : nPoWTrust;
-
-                // Return nPoWTrust for the first 12 blocks
-                if (prev == null || prev.nHeight < 12)
-                    return nPoWTrust;
+                uint256 nTarget = 0;
+                nTarget.Compact = nBits;
 
                 CBlockStoreItem currentIndex = prev;
 
@@ -460,6 +448,12 @@ namespace Novacoin
                 }
                 else
                 {
+                    // Calculate work amount for block
+                    var nPoWTrust = NetInfo.nPoWBase / (nTarget + 1);
+
+                    // Set nPowTrust to 1 if we are checking PoS block or PoW difficulty is too low
+                    nPoWTrust = (IsProofOfStake || !nPoWTrust) ? 1 : nPoWTrust;
+
                     var nLastBlockTrust = prev.nChainTrust - prev.prev.nChainTrust;
 
                     // Return nPoWTrust + 2/3 of previous block score if two parent blocks are not PoS blocks
@@ -502,7 +496,7 @@ namespace Novacoin
         }
 
         /// <summary>
-        /// Stake modifier checksum.
+        /// Stake modifier checksum
         /// </summary>
         public uint nStakeModifierChecksum;
 
@@ -665,6 +659,10 @@ namespace Novacoin
             get { return TransactionFlags == TxFlags.TX_COINSTAKE; }
         }
 
+        public CMerkleNode()
+        {
+        }
+
         public CMerkleNode(CTransaction tx)
         {
             nTime = tx.nTime;
@@ -719,6 +717,12 @@ namespace Novacoin
     public class TxOutItem
     {
         /// <summary>
+        /// Outpoint identifier.
+        /// </summary>
+        [PrimaryKey, AutoIncrement]
+        public long nOutpointID { get; set; }
+
+        /// <summary>
         /// Reference to transaction item.
         /// </summary>
         [ForeignKey(typeof(CMerkleNode), Name = "nMerkleNodeID")]
@@ -758,7 +762,7 @@ namespace Novacoin
         /// Getter for output value.
         /// </summary>
         [Ignore]
-        public ulong nValue
+        public long nValue
         {
             get { return VarInt.DecodeVarInt(OutputValue); }
             set { OutputValue = VarInt.EncodeVarInt(value); }
@@ -782,6 +786,23 @@ namespace Novacoin
     public class InputsJoin : TxOutItem
     {
         public byte[] TransactionHash { get; set; }
+
+        /// <summary>
+        /// To avoid awkwardness of sqlite wrapper.
+        /// </summary>
+        /// <returns></returns>
+        public TxOutItem getTxOutItem()
+        {
+            return new TxOutItem()
+            {
+                nOutpointID = nOutpointID,
+                nMerkleNodeID = nMerkleNodeID,
+                outputFlags = outputFlags,
+                OutputNumber = OutputNumber,
+                OutputValue = OutputValue,
+                scriptPubKey = scriptPubKey
+            };
+        }
     }