示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
            }
        }