public void SerializeTo(byte[] destination, int offset = 0) { if (destination == null) { throw new ArgumentNullException(nameof(destination)); } var cursor = new ByteCursor(destination, offset); cursor.WriteInt32(Version); cursor.WriteCompact((ulong)Inputs.Length); foreach (var input in Inputs) { cursor.Write(input.PreviousOutpoint.Hash); cursor.WriteUInt32(input.PreviousOutpoint.Index); cursor.WriteVarBytes(input.SignatureScript); cursor.WriteUInt32(input.Sequence); } cursor.WriteCompact((ulong)Outputs.Length); foreach (var output in Outputs) { cursor.WriteInt64(output.Amount); cursor.WriteVarBytes(output.PkScript); } cursor.WriteUInt32(LockTime); }
public void SerializeTo(byte[] destination, int offset = 0) { var cursor = new ByteCursor(destination, offset); cursor.WriteInt32(Version); cursor.WriteCompact((ulong)Inputs.Length); foreach (var input in Inputs) { cursor.Write(input.PreviousOutpoint.Hash); cursor.WriteUInt32(input.PreviousOutpoint.Index); cursor.WriteVarBytes(input.SignatureScript); cursor.WriteUInt32(input.Sequence); } cursor.WriteCompact((ulong)Outputs.Length); foreach (var output in Outputs) { cursor.WriteInt64(output.Amount); cursor.WriteVarBytes(output.PkScript); } cursor.WriteUInt32(LockTime); }
public void SerializeTo(byte[] destination, int offset = 0) { if (destination == null) throw new ArgumentNullException(nameof(destination)); var cursor = new ByteCursor(destination, offset); cursor.WriteInt32(Version); // Serialize prefix cursor.WriteCompact((ulong)Inputs.Length); foreach (var input in Inputs) { cursor.Write(input.PreviousOutpoint.Hash); cursor.WriteUInt32(input.PreviousOutpoint.Index); cursor.WriteByte(input.PreviousOutpoint.Tree); cursor.WriteUInt32(input.Sequence); } cursor.WriteCompact((ulong)Outputs.Length); foreach (var output in Outputs) { cursor.WriteInt64(output.Amount); cursor.WriteUInt16(output.Version); cursor.WriteVarBytes(output.PkScript); } cursor.WriteUInt32(LockTime); cursor.WriteUInt32(Expiry); // Serialize witness cursor.WriteCompact((ulong)Inputs.Length); foreach (var input in Inputs) { cursor.WriteInt64(input.InputAmount); cursor.WriteUInt32(input.BlockHeight); cursor.WriteUInt32(input.BlockIndex); cursor.WriteVarBytes(input.SignatureScript); } }