Block serialization + copile error fixes.
authorCryptoManiac <balthazar.ad@gmail.com>
Mon, 31 Aug 2015 09:02:40 +0000 (12:02 +0300)
committerCryptoManiac <balthazar.ad@gmail.com>
Mon, 31 Aug 2015 09:02:40 +0000 (12:02 +0300)
Novacoin/CBlock.cs
Novacoin/CBlockStore.cs
Novacoin/CTransaction.cs
Novacoin/Novacoin.csproj

index 01bdb27..30350b7 100644 (file)
@@ -185,13 +185,13 @@ namespace Novacoin
                 }
 
                 // Check timestamp
-                if (header.nTime > NetUtils.FutureDrift(NetUtils.GetAdjustedTime()))
+                if (header.nTime > NetInfo.FutureDrift(NetInfo.GetAdjustedTime()))
                 {
                     return false;
                 }
 
                 // Check coinbase timestamp
-                if (header.nTime < NetUtils.PastDrift(vtx[0].nTime))
+                if (header.nTime < NetInfo.PastDrift(vtx[0].nTime))
                 {
                     return false;
                 }
index 28706a5..8d77dc4 100644 (file)
@@ -189,13 +189,13 @@ namespace Novacoin
                 // Seek to the end and then append magic bytes there.
                 writer.Seek(0, SeekOrigin.End);
                 writer.Write(magicBytes, 0, magicBytes.Length);
+                writer.Write(blkLenBytes, 0, blkLenBytes.Length);
 
                 // Save block size and current position in the block cursor fields.
                 nBlockPos = writer.Position;
                 nBlockSize = blockBytes.Length;                
 
                 // Write block and flush the stream.
-                writer.Write(blkLenBytes, 0, blkLenBytes.Length);
                 writer.Write(blockBytes, 0, blockBytes.Length);
                 writer.Flush();
 
@@ -389,9 +389,9 @@ namespace Novacoin
             bool firstInit = !File.Exists(strDbFile);
             dbConn = new SQLiteConnection(new SQLitePlatformGeneric(), strDbFile);
 
-            var fStreamReadWrite = File.Open(strBlockFile, FileMode.OpenOrCreate, FileAccess.ReadWrite);
-            writer = new BinaryWriter(fStreamReadWrite).BaseStream;
+            var fStreamReadWrite = File.Open(strBlockFile, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
             reader = new BinaryReader(fStreamReadWrite).BaseStream;
+            writer = new BinaryWriter(fStreamReadWrite).BaseStream;
 
             if (firstInit)
             {
@@ -472,6 +472,11 @@ namespace Novacoin
             {
                 // Handle trasactions
 
+                if (!block.vtx[i].VerifyScripts())
+                {
+                    return false;
+                }
+
                 var nTxOffset = itemTemplate.nBlockPos + block.GetTxOffset(i);
                 TxType txnType = TxType.TX_USER;
 
@@ -522,7 +527,7 @@ namespace Novacoin
             uint nHeight = prevBlockCursor.nHeight + 1;
 
             // Check timestamp against prev
-            if (NetUtils.FutureDrift(block.header.nTime) < prevBlockHeader.nTime)
+            if (NetInfo.FutureDrift(block.header.nTime) < prevBlockHeader.nTime)
             {
                 // block's timestamp is too early
                 return false;
@@ -743,7 +748,7 @@ namespace Novacoin
                     // Free other state (managed objects).
 
                     reader.Dispose();
-                    writer.Dispose();
+                    reader.Dispose();
                 }
 
                 if (dbConn != null)
index d1de265..83d2a09 100644 (file)
@@ -244,9 +244,9 @@ namespace Novacoin
             }
             if (nBlockTime == 0)
             {
-                nBlockTime = NetUtils.GetAdjustedTime();
+                nBlockTime = NetInfo.GetAdjustedTime();
             }
-            if (nLockTime < (nLockTime < NetUtils.nLockTimeThreshold ? nBlockHeight : nBlockTime))
+            if (nLockTime < (nLockTime < NetInfo.nLockTimeThreshold ? nBlockHeight : nBlockTime))
             {
                 return true;
             }
index 7558f46..c5cb553 100644 (file)
@@ -63,6 +63,8 @@
     <CodeContractsRuntimeCheckingLevel>Full</CodeContractsRuntimeCheckingLevel>
     <CodeContractsReferenceAssembly>Build</CodeContractsReferenceAssembly>
     <CodeContractsAnalysisWarningLevel>0</CodeContractsAnalysisWarningLevel>
+    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <PlatformTarget>AnyCPU</PlatformTarget>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>full</DebugType>
     <Compile Include="CScriptID.cs" />
     <Compile Include="Hash.cs" />
     <Compile Include="Interop.cs" />
-    <Compile Include="NetUtils.cs" />
+    <Compile Include="NetInfo.cs" />
     <Compile Include="RIPEMD160.cs" />
     <Compile Include="ScryptHash256.cs" />
     <Compile Include="SHA1.cs" />
     <Compile Include="CKeyStore.cs" />
   </ItemGroup>
   <ItemGroup>
-    <None Include="app.config" />
     <None Include="packages.config" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />