From: CryptoManiac Date: Mon, 31 Aug 2015 22:08:51 +0000 (+0300) Subject: Replace CTransaction constructor with MemoryStream based implementation. X-Git-Url: https://git.novaco.in/?p=NovacoinLibrary.git;a=commitdiff_plain;h=81161d627f4f1f60dc15d64a73a794e9e66ec87b Replace CTransaction constructor with MemoryStream based implementation. --- diff --git a/Novacoin/CTransaction.cs b/Novacoin/CTransaction.cs index e67ed45..5cbd54c 100644 --- a/Novacoin/CTransaction.cs +++ b/Novacoin/CTransaction.cs @@ -269,12 +269,13 @@ namespace Novacoin { try { - var wBytes = new ByteQueue(ref txBytes); + var stream = new MemoryStream(txBytes); + var reader = new BinaryReader(stream); - nVersion = BitConverter.ToUInt32(wBytes.Get(4), 0); - nTime = BitConverter.ToUInt32(wBytes.Get(4), 0); + nVersion = reader.ReadUInt32(); + nTime = reader.ReadUInt32(); - int nInputs = (int)wBytes.GetVarInt(); + int nInputs = (int)VarInt.ReadVarInt(ref reader); vin = new CTxIn[nInputs]; for (int nCurrentInput = 0; nCurrentInput < nInputs; nCurrentInput++) @@ -282,28 +283,28 @@ namespace Novacoin // Fill inputs array vin[nCurrentInput] = new CTxIn(); - vin[nCurrentInput].prevout = new COutPoint(wBytes.Get(36)); + vin[nCurrentInput].prevout = new COutPoint(reader.ReadBytes(36)); - int nScriptSigLen = (int)wBytes.GetVarInt(); - vin[nCurrentInput].scriptSig = new CScript(wBytes.Get(nScriptSigLen)); + int nScriptSigLen = (int)VarInt.ReadVarInt(ref reader); + vin[nCurrentInput].scriptSig = new CScript(reader.ReadBytes(nScriptSigLen)); - vin[nCurrentInput].nSequence = BitConverter.ToUInt32(wBytes.Get(4), 0); + vin[nCurrentInput].nSequence = reader.ReadUInt32(); } - int nOutputs = (int)wBytes.GetVarInt(); + int nOutputs = (int)VarInt.ReadVarInt(ref reader); vout = new CTxOut[nOutputs]; for (int nCurrentOutput = 0; nCurrentOutput < nOutputs; nCurrentOutput++) { // Fill outputs array vout[nCurrentOutput] = new CTxOut(); - vout[nCurrentOutput].nValue = BitConverter.ToUInt64(wBytes.Get(8), 0); + vout[nCurrentOutput].nValue = reader.ReadUInt64(); - int nScriptPKLen = (int)wBytes.GetVarInt(); - vout[nCurrentOutput].scriptPubKey = new CScript(wBytes.Get(nScriptPKLen)); + int nScriptPKLen = (int)VarInt.ReadVarInt(ref reader); + vout[nCurrentOutput].scriptPubKey = new CScript(reader.ReadBytes(nScriptPKLen)); } - nLockTime = BitConverter.ToUInt32(wBytes.Get(4), 0); + nLockTime = reader.ReadUInt32(); } catch (Exception e) {