From 4c45f0efb0bd8451c8b9a02833ce007477534751 Mon Sep 17 00:00:00 2001 From: CryptoManiac Date: Mon, 31 Aug 2015 12:02:40 +0300 Subject: [PATCH] Block serialization + copile error fixes. --- Novacoin/CBlock.cs | 4 ++-- Novacoin/CBlockStore.cs | 15 ++++++++++----- Novacoin/CTransaction.cs | 4 ++-- Novacoin/Novacoin.csproj | 5 +++-- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/Novacoin/CBlock.cs b/Novacoin/CBlock.cs index 01bdb27..30350b7 100644 --- a/Novacoin/CBlock.cs +++ b/Novacoin/CBlock.cs @@ -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; } diff --git a/Novacoin/CBlockStore.cs b/Novacoin/CBlockStore.cs index 28706a5..8d77dc4 100644 --- a/Novacoin/CBlockStore.cs +++ b/Novacoin/CBlockStore.cs @@ -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) diff --git a/Novacoin/CTransaction.cs b/Novacoin/CTransaction.cs index d1de265..83d2a09 100644 --- a/Novacoin/CTransaction.cs +++ b/Novacoin/CTransaction.cs @@ -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; } diff --git a/Novacoin/Novacoin.csproj b/Novacoin/Novacoin.csproj index 7558f46..c5cb553 100644 --- a/Novacoin/Novacoin.csproj +++ b/Novacoin/Novacoin.csproj @@ -63,6 +63,8 @@ Full Build 0 + MinimumRecommendedRules.ruleset + AnyCPU full @@ -117,7 +119,7 @@ - + @@ -137,7 +139,6 @@ - -- 1.7.1