/// <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())); }
/// <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())); }
/// <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())); }
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())); }
/// <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())); }
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())); }
/// <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())); }