public void ReadFromPayload(byte[] data, int offset) { Size = 8; Version = BitConverter.ToUInt32(data, offset); TxInCount = new VarInt(0); TxInCount.ReadFromPayload(data, offset + 4); TxIn = new TxIn[TxInCount]; int txInOffset = offset + 4 + TxInCount.Size; for (var x = 0; x < TxInCount; x++) { var tx = new TxIn(); tx.ReadFromPayload(data, txInOffset); TxIn[x] = tx; txInOffset += tx.Size; Size += tx.Size; } TxOutCount = new VarInt(0); TxOutCount.ReadFromPayload(data, txInOffset); TxOut = new TxOut[TxOutCount]; int txOutOffset = txInOffset + TxOutCount.Size; for (var x = 0; x < TxOutCount; x++) { var tx = new TxOut(); tx.ReadFromPayload(data, txOutOffset); TxOut[x] = tx; txOutOffset += tx.Size; Size += tx.Size; } LockTime = BitConverter.ToUInt32(data, txOutOffset); Size += TxInCount.Size + TxOutCount.Size; }