示例#1
0
        private TransactionOutput ReadTransactionOutput(LoggedBinaryReader binaryReader)
        {
            var amount       = binaryReader.ReadBytes(OutputAmountLength);
            var scriptPubKey = _hexReader.ReadVarString(binaryReader);

            return(new TransactionOutput(amount, scriptPubKey));
        }
示例#2
0
        private TransactionInput ReadTransactionInput(LoggedBinaryReader binaryReader)
        {
            var transactionHash = binaryReader.ReadBytes(InputTransactionHashLength);
            var outputIndex     = binaryReader.ReadUInt32();
            var scriptSig       = _hexReader.ReadVarString(binaryReader);
            var sequence        = binaryReader.ReadUInt32();

            return(new TransactionInput(transactionHash, outputIndex, scriptSig, sequence));
        }
示例#3
0
        public Block ReadBlock(LoggedBinaryReader binaryReader)
        {
            var blockHeader    = binaryReader.ReadBytes(80);
            var nbTransactions = _hexReader.ReadVarInt(binaryReader, Endian.Little, out var sizeOfNbTransactions);

            // todo: use transactions pool here.
            var transactions = new Transaction[nbTransactions];

            for (var i = 0; i < nbTransactions; i++)
            {
                binaryReader.Reset();
                transactions[i] = ReadTransaction(binaryReader);
            }

            return(new Block(blockHeader, sizeOfNbTransactions, transactions));
        }