/// <summary>
        /// Generates the bytes.
        /// </summary>
        /// <returns>System.Byte[].</returns>
        internal override byte[] GenerateBytes()
        {
            byte flags = 0;

            if (Properties.IsSupplyMutable)
            {
                flags += 1;
            }

            if (Properties.IsTransferable)
            {
                flags += 2;
            }

            if (Properties.IsLevyMutable)
            {
                flags += 4;
            }

            var builder = new FlatBufferBuilder(1);

            // create vectors
            var signatureVector  = MosaicCreationTransactionBuffer.CreateSignatureVector(builder, new byte[64]);
            var signerVector     = MosaicCreationTransactionBuffer.CreateSignerVector(builder, GetSigner());
            var feeVector        = MosaicCreationTransactionBuffer.CreateFeeVector(builder, Fee.ToUInt8Array());
            var deadlineVector   = MosaicCreationTransactionBuffer.CreateDeadlineVector(builder, Deadline.Ticks.ToUInt8Array());
            var parentIdVector   = MosaicCreationTransactionBuffer.CreateParentIdVector(builder, NamespaceId.Id.ToUInt8Array());
            var mosaicIdVector   = MosaicCreationTransactionBuffer.CreateMosaicIdVector(builder, MosaicId.Id.ToUInt8Array());
            var mosaicNameVector = MosaicCreationTransactionBuffer.CreateMosaicNameVector(builder, Encoding.UTF8.GetBytes(MosaicId.MosaicName));
            var durationVector   = MosaicCreationTransactionBuffer.CreateDurationVector(builder, Properties.Duration.ToUInt8Array());

            ushort version = ushort.Parse(NetworkType.GetNetworkByte().ToString("X") + "0" + Version.ToString("X"), System.Globalization.NumberStyles.HexNumber);


            // add vectors to buffer
            MosaicCreationTransactionBuffer.StartMosaicCreationTransactionBuffer(builder);
            MosaicCreationTransactionBuffer.AddSize(builder, (uint)(149 + Encoding.UTF8.GetBytes(MosaicId.MosaicName).ToHexLower().Length / 2));
            MosaicCreationTransactionBuffer.AddSignature(builder, signatureVector);
            MosaicCreationTransactionBuffer.AddSigner(builder, signerVector);
            MosaicCreationTransactionBuffer.AddVersion(builder, version);
            MosaicCreationTransactionBuffer.AddType(builder, TransactionTypes.Types.MosaicDefinition.GetValue());
            MosaicCreationTransactionBuffer.AddFee(builder, feeVector);
            MosaicCreationTransactionBuffer.AddDeadline(builder, deadlineVector);
            MosaicCreationTransactionBuffer.AddMosaicId(builder, mosaicIdVector);
            MosaicCreationTransactionBuffer.AddParentId(builder, parentIdVector);
            MosaicCreationTransactionBuffer.AddNameLength(builder, (byte)(Encoding.UTF8.GetBytes(MosaicId.MosaicName).ToHexLower().Length / 2));
            MosaicCreationTransactionBuffer.AddNumOptionalProperties(builder, 1);
            MosaicCreationTransactionBuffer.AddFlags(builder, flags);
            MosaicCreationTransactionBuffer.AddDivisibility(builder, (byte)Properties.Divisibility);
            MosaicCreationTransactionBuffer.AddMosaicName(builder, mosaicNameVector);
            MosaicCreationTransactionBuffer.AddIndicateDuration(builder, 2);
            MosaicCreationTransactionBuffer.AddDuration(builder, durationVector);

            // Calculate size
            var codedNamespace = NamespaceCreationTransactionBuffer.EndNamespaceCreationTransactionBuffer(builder);

            builder.Finish(codedNamespace.Value);

            return(new MosaicCreationTransactionSchema().Serialize(builder.SizedByteArray()));
        }
        /// <summary>
        /// Generates the bytes.
        /// </summary>
        /// <returns>System.Byte[].</returns>
        internal override byte[] GenerateBytes()
        {
            var builder = new FlatBufferBuilder(1);

            // create vectors
            var signatureVector = MosaicSupplyChangeTransactionBuffer.CreateSignatureVector(builder, new byte[64]);
            var signerVector    = MosaicSupplyChangeTransactionBuffer.CreateSignerVector(builder, GetSigner());
            var feeVector       = MosaicSupplyChangeTransactionBuffer.CreateFeeVector(builder, Fee.ToUInt8Array());
            var deadlineVector  = MosaicSupplyChangeTransactionBuffer.CreateDeadlineVector(builder, Deadline.Ticks.ToUInt8Array());
            var mosaicIdVector  = MosaicSupplyChangeTransactionBuffer.CreateMosaicIdVector(builder, MosaicId.Id.ToUInt8Array());
            var deltaVector     = MosaicSupplyChangeTransactionBuffer.CreateFeeVector(builder, Delta.ToUInt8Array());

            ushort version = ushort.Parse(NetworkType.GetNetworkByte().ToString("X") + "0" + Version.ToString("X"), System.Globalization.NumberStyles.HexNumber);

            // add vectors to buffer
            MosaicSupplyChangeTransactionBuffer.StartMosaicSupplyChangeTransactionBuffer(builder);
            MosaicSupplyChangeTransactionBuffer.AddSize(builder, 137);
            MosaicSupplyChangeTransactionBuffer.AddSignature(builder, signatureVector);
            MosaicSupplyChangeTransactionBuffer.AddSigner(builder, signerVector);
            MosaicSupplyChangeTransactionBuffer.AddVersion(builder, version);
            MosaicSupplyChangeTransactionBuffer.AddType(builder, TransactionTypes.Types.MosaicSupplyChange.GetValue());
            MosaicSupplyChangeTransactionBuffer.AddFee(builder, feeVector);
            MosaicSupplyChangeTransactionBuffer.AddDeadline(builder, deadlineVector);
            MosaicSupplyChangeTransactionBuffer.AddMosaicId(builder, mosaicIdVector);
            MosaicSupplyChangeTransactionBuffer.AddDirection(builder, SupplyType.GetValue());
            MosaicSupplyChangeTransactionBuffer.AddDelta(builder, deltaVector);


            // end build
            var codedTransfer = TransferTransactionBuffer.EndTransferTransactionBuffer(builder);

            builder.Finish(codedTransfer.Value);

            return(new MosaicSupplyChangeTransactionSchema().Serialize(builder.SizedByteArray()));
        }
        internal override byte[] GenerateBytes()
        {
            var builder = new FlatBufferBuilder(1);

            // create vectors
            var signatureVector = SecretProofTransactionBuffer.CreateSignatureVector(builder, new byte[64]);
            var signerVector    = SecretProofTransactionBuffer.CreateSignerVector(builder, GetSigner());
            var feeVector       = SecretProofTransactionBuffer.CreateFeeVector(builder, Fee.ToUInt8Array());
            var deadlineVector  = SecretProofTransactionBuffer.CreateDeadlineVector(builder, Deadline.Ticks.ToUInt8Array());
            var secretVector    = SecretProofTransactionBuffer.CreateSecretVector(builder, Secret);
            var proofVector     = SecretProofTransactionBuffer.CreateProofVector(builder, Proof);

            ushort version = ushort.Parse(NetworkType.GetNetworkByte().ToString("X") + "0" + Version.ToString("X"), System.Globalization.NumberStyles.HexNumber);

            // add vectors
            SecretProofTransactionBuffer.StartSecretProofTransactionBuffer(builder);
            SecretProofTransactionBuffer.AddSize(builder, (uint)(187 + Proof.Length));
            SecretProofTransactionBuffer.AddSignature(builder, signatureVector);
            SecretProofTransactionBuffer.AddSigner(builder, signerVector);
            SecretProofTransactionBuffer.AddVersion(builder, version);
            SecretProofTransactionBuffer.AddType(builder, TransactionTypes.Types.SecretProof.GetValue());
            SecretProofTransactionBuffer.AddFee(builder, feeVector);
            SecretProofTransactionBuffer.AddDeadline(builder, deadlineVector);
            SecretProofTransactionBuffer.AddHashAlgorithm(builder, HashAlgo.GetHashTypeValue());
            SecretProofTransactionBuffer.AddSecret(builder, secretVector);
            SecretProofTransactionBuffer.AddProofSize(builder, (ushort)Proof.Length);
            SecretProofTransactionBuffer.AddProof(builder, proofVector);

            // end build
            var codedTransfer = SecretProofTransactionBuffer.EndSecretProofTransactionBuffer(builder);

            builder.Finish(codedTransfer.Value);

            return(new SecretProofTransactionSchema().Serialize(builder.SizedByteArray()));
        }
Пример #4
0
        /// <summary>
        /// Generates the bytes.
        /// </summary>
        /// <returns>System.Byte[].</returns>
        internal override byte[] GenerateBytes()
        {
            var builder = new FlatBufferBuilder(1);

            // Create modifications vector
            var modificationsArray = new Offset <CosignatoryModificationBuffer> [Modifications.Length];

            for (var index = 0; index < Modifications.Length; index++)
            {
                var modification = Modifications[index];

                var cosignatoryPublicKeyVector = CosignatoryModificationBuffer.CreateCosignatoryPublicKeyVector(builder, modification.PublicAccount.PublicKey.FromHex());
                CosignatoryModificationBuffer.StartCosignatoryModificationBuffer(builder);
                CosignatoryModificationBuffer.AddType(builder, modification.Type.GetValue());
                CosignatoryModificationBuffer.AddCosignatoryPublicKey(builder, cosignatoryPublicKeyVector);
                modificationsArray[index] = CosignatoryModificationBuffer.EndCosignatoryModificationBuffer(builder);
            }

            // create vectors
            var signatureVector    = MosaicCreationTransactionBuffer.CreateSignatureVector(builder, new byte[64]);
            var signerVector       = MosaicCreationTransactionBuffer.CreateSignerVector(builder, GetSigner());
            var feeVector          = MosaicCreationTransactionBuffer.CreateFeeVector(builder, Fee.ToUInt8Array());
            var deadlineVector     = MosaicCreationTransactionBuffer.CreateDeadlineVector(builder, Deadline.Ticks.ToUInt8Array());
            var modificationVector = MultisigModificationTransactionBuffer.CreateModificationsVector(builder, modificationsArray);

            ushort version = ushort.Parse(NetworkType.GetNetworkByte().ToString("X") + "0" + Version.ToString("X"), System.Globalization.NumberStyles.HexNumber);

            MultisigModificationTransactionBuffer.StartMultisigModificationTransactionBuffer(builder);
            MultisigModificationTransactionBuffer.AddSize(builder, (uint)(123 + 33 * Modifications.Length));
            MultisigModificationTransactionBuffer.AddSignature(builder, signatureVector);
            MultisigModificationTransactionBuffer.AddSigner(builder, signerVector);
            MultisigModificationTransactionBuffer.AddVersion(builder, version);
            MultisigModificationTransactionBuffer.AddType(builder, TransactionTypes.Types.ModifyMultisigAccount.GetValue());
            MultisigModificationTransactionBuffer.AddFee(builder, feeVector);
            MultisigModificationTransactionBuffer.AddDeadline(builder, deadlineVector);
            MultisigModificationTransactionBuffer.AddMinRemovalDelta(builder, (byte)MinRemovalDelta);
            MultisigModificationTransactionBuffer.AddMinApprovalDelta(builder, (byte)MinApprovalDelta);
            MultisigModificationTransactionBuffer.AddNumModifications(builder, (byte)Modifications.Length);
            MultisigModificationTransactionBuffer.AddModifications(builder, modificationVector);

            // end build
            var codedTransfer = TransferTransactionBuffer.EndTransferTransactionBuffer(builder);

            builder.Finish(codedTransfer.Value);

            return(new MultisigModificationTransactionSchema().Serialize(builder.SizedByteArray()));
        }
Пример #5
0
        /// <summary>
        /// Generates the bytes.
        /// </summary>
        /// <returns>System.Byte[].</returns>
        internal override byte[] GenerateBytes()
        {
            var builder = new FlatBufferBuilder(1);

            var namespaceNameLength = (uint)Encoding.UTF8.GetBytes(NamespaceId.Name).Length;

            // create vectors
            var signatureVector  = NamespaceCreationTransactionBuffer.CreateSignatureVector(builder, new byte[64]);
            var signerVector     = NamespaceCreationTransactionBuffer.CreateSignerVector(builder, GetSigner());
            var feeVector        = NamespaceCreationTransactionBuffer.CreateFeeVector(builder, Fee.ToUInt8Array());
            var deadlineVector   = NamespaceCreationTransactionBuffer.CreateDeadlineVector(builder, Deadline.Ticks.ToUInt8Array());
            var durationParentId = ParentId == null?Duration.ToUInt8Array() : ParentId.Id.ToUInt8Array();

            var durationParentIdVector = NamespaceCreationTransactionBuffer.CreateDurationParentIdVector(builder, durationParentId);
            var namespaceIdVector      = NamespaceCreationTransactionBuffer.CreateNamespaceIdVector(builder, IdGenerator.GenerateId(NamespaceType == 0x00 ? 0 : IdGenerator.GenerateId(0, ParentId.Name), NamespaceId.Name).ToUInt8Array());

            var    name    = NamespaceCreationTransactionBuffer.CreateNamespaceNameVector(builder, Encoding.UTF8.GetBytes(NamespaceId.Name));
            ushort version = ushort.Parse(NetworkType.GetNetworkByte().ToString("X") + "0" + Version.ToString("X"), System.Globalization.NumberStyles.HexNumber);

            // Add to buffer
            NamespaceCreationTransactionBuffer.StartNamespaceCreationTransactionBuffer(builder);
            NamespaceCreationTransactionBuffer.AddSize(builder, 138 + namespaceNameLength);
            NamespaceCreationTransactionBuffer.AddSignature(builder, signatureVector);
            NamespaceCreationTransactionBuffer.AddSigner(builder, signerVector);
            NamespaceCreationTransactionBuffer.AddVersion(builder, version);
            NamespaceCreationTransactionBuffer.AddType(builder, TransactionTypes.Types.RegisterNamespace.GetValue());
            NamespaceCreationTransactionBuffer.AddFee(builder, feeVector);
            NamespaceCreationTransactionBuffer.AddDeadline(builder, deadlineVector);
            NamespaceCreationTransactionBuffer.AddNamespaceType(builder, NamespaceType.GetValue());
            NamespaceCreationTransactionBuffer.AddDurationParentId(builder, durationParentIdVector);
            NamespaceCreationTransactionBuffer.AddNamespaceId(builder, namespaceIdVector);
            NamespaceCreationTransactionBuffer.AddNamespaceNameSize(builder, (byte)namespaceNameLength);
            NamespaceCreationTransactionBuffer.AddNamespaceName(builder, name);

            // Calculate size
            var codedNamespace = NamespaceCreationTransactionBuffer.EndNamespaceCreationTransactionBuffer(builder);

            builder.Finish(codedNamespace.Value);

            return(new NamespaceCreateionTransactionSchema().Serialize(builder.SizedByteArray()));
        }
Пример #6
0
        internal override byte[] GenerateBytes()
        {
            var builder = new FlatBufferBuilder(1);

            // create vectors
            var signatureVector = SecretLockTransactionBuffer.CreateSignatureVector(builder, new byte[64]);
            var signerVector    = SecretLockTransactionBuffer.CreateSignerVector(builder, GetSigner());
            var feeVector       = SecretLockTransactionBuffer.CreateFeeVector(builder, Fee.ToUInt8Array());
            var deadlineVector  = SecretLockTransactionBuffer.CreateDeadlineVector(builder, Deadline.Ticks.ToUInt8Array());
            var mosaicId        = SecretLockTransactionBuffer.CreateMosaicIdVector(builder, Mosaic.MosaicId.Id.ToUInt8Array());
            var mosaicAmount    = SecretLockTransactionBuffer.CreateMosaicAmountVector(builder, Mosaic.Amount.ToUInt8Array());
            var duration        = SecretLockTransactionBuffer.CreateDurationVector(builder, Duration.ToUInt8Array());
            var secretVector    = SecretLockTransactionBuffer.CreateSecretVector(builder, Secret);

            var    recipientVector = SecretLockTransactionBuffer.CreateRecipientVector(builder, Recipient.Plain.FromBase32String());
            ushort version         = ushort.Parse(NetworkType.GetNetworkByte().ToString("X") + "0" + Version.ToString("X"), System.Globalization.NumberStyles.HexNumber);

            // add vectors
            SecretLockTransactionBuffer.StartSecretLockTransactionBuffer(builder);
            SecretLockTransactionBuffer.AddSize(builder, 234);
            SecretLockTransactionBuffer.AddSignature(builder, signatureVector);
            SecretLockTransactionBuffer.AddSigner(builder, signerVector);
            SecretLockTransactionBuffer.AddVersion(builder, version);
            SecretLockTransactionBuffer.AddType(builder, TransactionTypes.Types.SecretLock.GetValue());
            SecretLockTransactionBuffer.AddFee(builder, feeVector);
            SecretLockTransactionBuffer.AddDeadline(builder, deadlineVector);
            SecretLockTransactionBuffer.AddMosaicId(builder, mosaicId);
            SecretLockTransactionBuffer.AddMosaicAmount(builder, mosaicAmount);
            SecretLockTransactionBuffer.AddDuration(builder, duration);
            SecretLockTransactionBuffer.AddHashAlgorithm(builder, HashAlgo.GetHashTypeValue());
            SecretLockTransactionBuffer.AddSecret(builder, secretVector);
            SecretLockTransactionBuffer.AddRecipient(builder, recipientVector);

            // end build
            var codedTransfer = SecretLockTransactionBuffer.EndSecretLockTransactionBuffer(builder);

            builder.Finish(codedTransfer.Value);

            return(new SecretLockTransactionSchema().Serialize(builder.SizedByteArray()));
        }
Пример #7
0
        /// <summary>
        /// Generates the bytes.
        /// </summary>
        /// <returns>System.Byte[].</returns>
        internal override byte[] GenerateBytes()
        {
            var builder = new FlatBufferBuilder(1);

            // create vectors
            var signatureVector = HashLockTransactionBuffer.CreateSignatureVector(builder, new byte[64]);
            var signerVector    = HashLockTransactionBuffer.CreateSignerVector(builder, GetSigner());
            var feeVector       = HashLockTransactionBuffer.CreateFeeVector(builder, Fee.ToUInt8Array());
            var deadlineVector  = HashLockTransactionBuffer.CreateDeadlineVector(builder, Deadline.Ticks.ToUInt8Array());
            var mosaicId        = HashLockTransactionBuffer.CreateIdVector(builder, Mosaic.MosaicId.Id.ToUInt8Array());
            var mosaicAmount    = HashLockTransactionBuffer.CreateAmountVector(builder, Mosaic.Amount.ToUInt8Array());
            var duration        = HashLockTransactionBuffer.CreateDurationVector(builder, Duration.ToUInt8Array());
            var hash            = HashLockTransactionBuffer.CreateHashVector(builder, Transaction.Hash.FromHex());

            ushort version = ushort.Parse(NetworkType.GetNetworkByte().ToString("X") + "0" + Version.ToString("X"), System.Globalization.NumberStyles.HexNumber);

            // add vectors
            HashLockTransactionBuffer.StartTestBuffer(builder);
            HashLockTransactionBuffer.AddSize(builder, 176);
            HashLockTransactionBuffer.AddSignature(builder, signatureVector);
            HashLockTransactionBuffer.AddSigner(builder, signerVector);
            HashLockTransactionBuffer.AddVersion(builder, version);
            HashLockTransactionBuffer.AddType(builder, TransactionTypes.Types.LockFunds.GetValue());
            HashLockTransactionBuffer.AddFee(builder, feeVector);
            HashLockTransactionBuffer.AddDeadline(builder, deadlineVector);
            HashLockTransactionBuffer.AddId(builder, mosaicId);
            HashLockTransactionBuffer.AddAmount(builder, mosaicAmount);
            HashLockTransactionBuffer.AddDuration(builder, duration);
            HashLockTransactionBuffer.AddHash(builder, hash);

            // end build
            var codedTransfer = HashLockTransactionBuffer.EndTestBuffer(builder);

            builder.Finish(codedTransfer.Value);

            return(new HashLockTransactionSchema().Serialize(builder.SizedByteArray()));
        }
Пример #8
0
        internal override byte[] GenerateBytes()
        {
            var builder = new FlatBufferBuilder(1);

            var transactionsBytes = new byte[0];

            transactionsBytes = InnerTransactions.Aggregate(transactionsBytes, (current, innerTransaction) => current.Concat(innerTransaction.ToAggregate()).ToArray());

            // Create Vectors
            var signatureVector    = AggregateTransactionBuffer.CreateSignatureVector(builder, new byte[64]);
            var signerVector       = AggregateTransactionBuffer.CreateSignerVector(builder, GetSigner());
            var deadlineVector     = AggregateTransactionBuffer.CreateDeadlineVector(builder, Deadline.Ticks.ToUInt8Array());
            var feeVector          = AggregateTransactionBuffer.CreateFeeVector(builder, Fee.ToUInt8Array());
            var transactionsVector = AggregateTransactionBuffer.CreateTransactionsVector(builder, transactionsBytes);

            ushort version = ushort.Parse(NetworkType.GetNetworkByte().ToString("X") + "0" + Version.ToString("X"), System.Globalization.NumberStyles.HexNumber);

            // add vectors
            AggregateTransactionBuffer.StartAggregateTransactionBuffer(builder);
            AggregateTransactionBuffer.AddSize(builder, (uint)(120 + 4 + transactionsBytes.Length));
            AggregateTransactionBuffer.AddSignature(builder, signatureVector);
            AggregateTransactionBuffer.AddSigner(builder, signerVector);
            AggregateTransactionBuffer.AddVersion(builder, version);
            AggregateTransactionBuffer.AddType(builder, TransactionType.GetValue());
            AggregateTransactionBuffer.AddFee(builder, feeVector);
            AggregateTransactionBuffer.AddDeadline(builder, deadlineVector);
            AggregateTransactionBuffer.AddTransactionsSize(builder, (uint)transactionsBytes.Length);
            AggregateTransactionBuffer.AddTransactions(builder, transactionsVector);

            // end build
            var codedTransaction = AggregateTransactionBuffer.EndAggregateTransactionBuffer(builder).Value;

            builder.Finish(codedTransaction);

            return(new AggregateTransactionSchema().Serialize(builder.SizedByteArray()));
        }
Пример #9
0
        /// <summary>
        /// Generates the bytes.
        /// </summary>
        /// <returns>The transaction bytes.</returns>
        internal override byte[] GenerateBytes()
        {
            var builder = new FlatBufferBuilder(1);

            // create vectors
            var signatureVector = TransferTransactionBuffer.CreateSignatureVector(builder, new byte[64]);
            var signerVector    = TransferTransactionBuffer.CreateSignerVector(builder, GetSigner());
            var feeVector       = TransferTransactionBuffer.CreateFeeVector(builder, Fee.ToUInt8Array());
            var deadlineVector  = TransferTransactionBuffer.CreateDeadlineVector(builder, Deadline.Ticks.ToUInt8Array());
            var recipientVector = TransferTransactionBuffer.CreateRecipientVector(builder, Address.Plain.FromBase32String());

            ushort version = ushort.Parse(NetworkType.GetNetworkByte().ToString("X") + "0" + Version.ToString("X"), System.Globalization.NumberStyles.HexNumber);

            if (Message == null)
            {
                Message = EmptyMessage.Create();
            }

            // create message vector
            var bytePayload = Message.GetPayload();
            var payload     = MessageBuffer.CreatePayloadVector(builder, bytePayload);

            MessageBuffer.StartMessageBuffer(builder);
            if (bytePayload != null)
            {
                MessageBuffer.AddType(builder, Message.GetMessageType());
            }
            MessageBuffer.AddPayload(builder, payload);
            var message = MessageBuffer.EndMessageBuffer(builder);

            // create mosaics vector
            var mosaics = new Offset <MosaicBuffer> [Mosaics.Count];

            for (var index = 0; index < Mosaics.Count; index++)
            {
                var mosaic       = Mosaics[index];
                var idPayload    = MosaicBuffer.CreateIdVector(builder, mosaic.MosaicId.Id.ToUInt8Array());
                var amountVector = MosaicBuffer.CreateAmountVector(builder, mosaic.Amount.ToUInt8Array());
                MosaicBuffer.StartMosaicBuffer(builder);
                MosaicBuffer.AddId(builder, idPayload);
                MosaicBuffer.AddAmount(builder, amountVector);

                mosaics[index] = MosaicBuffer.EndMosaicBuffer(builder);
            }

            var mosaicsVector = TransferTransactionBuffer.CreateMosaicsVector(builder, mosaics);

            // add vectors
            TransferTransactionBuffer.StartTransferTransactionBuffer(builder);
            TransferTransactionBuffer.AddSize(builder, (uint)(/*fixed size*/ 148 + 16 * Mosaics.Count + Message.GetLength()));
            TransferTransactionBuffer.AddSignature(builder, signatureVector);
            TransferTransactionBuffer.AddSigner(builder, signerVector);
            TransferTransactionBuffer.AddVersion(builder, version);
            TransferTransactionBuffer.AddType(builder, TransactionTypes.Types.Transfer.GetValue());
            TransferTransactionBuffer.AddFee(builder, feeVector);
            TransferTransactionBuffer.AddDeadline(builder, deadlineVector);
            TransferTransactionBuffer.AddRecipient(builder, recipientVector);
            TransferTransactionBuffer.AddNumMosaics(builder, (byte)Mosaics.Count);
            TransferTransactionBuffer.AddMessageSize(builder, (byte)Message.GetLength());
            TransferTransactionBuffer.AddMessage(builder, message);
            TransferTransactionBuffer.AddMosaics(builder, mosaicsVector);

            // end build
            var codedTransfer = TransferTransactionBuffer.EndTransferTransactionBuffer(builder);

            builder.Finish(codedTransfer.Value);

            return(new TransferTransactionSchema().Serialize(builder.SizedByteArray()));
        }