X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=Novacoin%2FCBlockStore.cs;h=cf6c515c7faba2fec3e96f82c9c7b36e6ae0f474;hb=fc063813ad58cf02f32eb73b86fb79b956054e86;hp=11190a9f3f0595c994c88715ce594489645a409d;hpb=b9ed15dff6232d8f95c1f6becb3ebe8867044305;p=NovacoinLibrary.git
diff --git a/Novacoin/CBlockStore.cs b/Novacoin/CBlockStore.cs
index 11190a9..cf6c515 100644
--- a/Novacoin/CBlockStore.cs
+++ b/Novacoin/CBlockStore.cs
@@ -273,7 +273,7 @@ namespace Novacoin
/// Result
public bool ReadFromFile(ref Stream reader, out CTransaction tx)
{
- var buffer = new byte[250000]; // Max transaction size is 250kB
+ var buffer = new byte[CTransaction.nMaxTxSize];
tx = null;
try
@@ -340,30 +340,6 @@ namespace Novacoin
///
private ConcurrentDictionary txMap = new ConcurrentDictionary();
- private CBlock genesisBlock = new CBlock(
- Interop.HexToArray(
- "01000000" + // nVersion=1
- "0000000000000000000000000000000000000000000000000000000000000000" + // prevhash is zero
- "7b0502ad2f9f675528183f83d6385794fbcaa914e6d385c6cb1d866a3b3bb34c" + // merkle root
- "398e1151" + // nTime=1360105017
- "ffff0f1e" + // nBits=0x1e0fffff
- "d3091800" + // nNonce=1575379
- "01" + // nTxCount=1
- "01000000" + // nVersion=1
- "398e1151" + // nTime=1360105017
- "01" + // nInputs=1
- "0000000000000000000000000000000000000000000000000000000000000000" + // input txid is zero
- "ffffffff" + // n=uint.maxValue
- "4d" + // scriptSigLen=77
- "04ffff001d020f274468747470733a2f2f626974636f696e74616c6b2e6f72672f696e6465782e7068703f746f7069633d3133343137392e6d736731353032313936236d736731353032313936" + // scriptSig
- "ffffffff" + // nSequence=uint.maxValue
- "01" + // nOutputs=1
- "0000000000000000" + // nValue=0
- "00" + // scriptPubkeyLen=0
- "00000000" + // nLockTime=0
- "00" // sigLen=0
- ));
-
public static CBlockStore Instance;
///
@@ -394,6 +370,30 @@ namespace Novacoin
dbConn.CreateTable(CreateFlags.AutoIncPK);
dbConn.CreateTable(CreateFlags.ImplicitPK);
+ var genesisBlock = new CBlock(
+ Interop.HexToArray(
+ "01000000" + // nVersion=1
+ "0000000000000000000000000000000000000000000000000000000000000000" + // prevhash is zero
+ "7b0502ad2f9f675528183f83d6385794fbcaa914e6d385c6cb1d866a3b3bb34c" + // merkle root
+ "398e1151" + // nTime=1360105017
+ "ffff0f1e" + // nBits=0x1e0fffff
+ "d3091800" + // nNonce=1575379
+ "01" + // nTxCount=1
+ "01000000" + // nVersion=1
+ "398e1151" + // nTime=1360105017
+ "01" + // nInputs=1
+ "0000000000000000000000000000000000000000000000000000000000000000" + // input txid is zero
+ "ffffffff" + // n=uint.maxValue
+ "4d" + // scriptSigLen=77
+ "04ffff001d020f274468747470733a2f2f626974636f696e74616c6b2e6f72672f696e6465782e7068703f746f7069633d3133343137392e6d736731353032313936236d736731353032313936" + // scriptSig
+ "ffffffff" + // nSequence=uint.maxValue
+ "01" + // nOutputs=1
+ "0000000000000000" + // nValue=0
+ "00" + // scriptPubkeyLen=0
+ "00000000" + // nLockTime=0
+ "00" // sigLen=0
+ ));
+
// Write block to file.
var itemTemplate = new CBlockStoreItem()
{
@@ -589,14 +589,20 @@ namespace Novacoin
// TODO: Limited duplicity on stake and reserialization of block signature
- // Preliminary checks
if (!block.CheckBlock(true, true, true))
{
- return true;
+ // Preliminary checks failure.
+ return false;
}
if (block.IsProofOfStake)
{
+ if (!block.SignatureOK || !block.vtx[1].VerifyScripts())
+ {
+ // Proof-of-Stake signature validation failure.
+ return false;
+ }
+
// TODO: proof-of-stake validation
}
@@ -661,7 +667,7 @@ namespace Novacoin
var nOffset = 0L;
- var buffer = new byte[1000000]; // Max block size is 1Mb
+ var buffer = new byte[CBlock.nMaxBlockSize]; // Max block size is 1Mb
var intBuffer = new byte[4];
var fStream2 = File.OpenRead(BlockFile);