/// <summary> /// Read vout list from byte sequence. /// </summary> /// <param name="wBytes">Reference to binary reader</param> /// <returns>Outputs array</returns> internal static CTxOut[] ReadTxOutList(ref BinaryReader reader) { int nOutputs = (int)VarInt.ReadVarInt(ref reader); var vout =new CTxOut[nOutputs]; for (int nIndex = 0; nIndex < nOutputs; nIndex++) { // Fill outputs array vout[nIndex] = new CTxOut(); vout[nIndex].nValue = reader.ReadInt64(); int nScriptPKLen = (int)VarInt.ReadVarInt(ref reader); vout[nIndex].scriptPubKey = new CScript(reader.ReadBytes(nScriptPKLen)); } return vout; }
/// <summary> /// Initialize new CTxOut instance as a copy of another instance. /// </summary> /// <param name="o">CTxOut instance.</param> public CTxOut(CTxOut o) { nValue = o.nValue; scriptPubKey = o.scriptPubKey; }
/// <summary> /// Create serialized representation of outputs array. /// </summary> /// <param name="vout">Outputs array</param> /// <returns>Byte array</returns> public static byte[] SerializeOutputsArray(CTxOut[] vout) { var stream = new MemoryStream(); var writer = new BinaryWriter(stream); writer.Write(VarInt.EncodeVarInt(vout.Length)); foreach (var o in vout) { writer.Write(o); } var resultBytes = stream.ToArray(); writer.Close(); return resultBytes; }