public async Task GetNetworkType()
        {
            var expected = "mijinTest";

            var a = await new NetworkHttp(host).GetNetworkType();

            Assert.AreEqual(NetworkType.GetNetwork(expected), a);
        }
        public object Create(string network)
        {
            var acc = Account.GenerateNewAccount(NetworkType.GetNetwork(network));

            return(new
            {
                acc.PrivateKey,
                acc.Address
            });
        }
Beispiel #3
0
        public async Task OnExecute()
        {
            var httpClient = new HttpClient();

            httpClient.DefaultRequestHeaders.Add("ApiKey", Key);

            var acc = Account.GenerateNewAccount(NetworkType.GetNetwork(Network ?? "mainnet"));

            var requestBody = JsonConvert.SerializeObject
                              (
                new
            {
                acc.PrivateKey,
                PublicAddress = acc.Address.Plain
            }
                              );

            var response = await httpClient.PostAsync($"{Url.TrimEnd('/')}/api/NEM/wallets/import", new StringContent(requestBody, Encoding.UTF8, "application/json"));

            response.EnsureSuccessStatusCode();

            Console.WriteLine($"Imported NEM {Network} address: {acc.Address.Plain}");
        }
        /// <summary>
        /// Generates the bytes.
        /// </summary>
        /// <returns>The transaction bytes.</returns>
        internal override byte[] GenerateBytes()
        {
            var builder = new FlatBufferBuilder(1);

            var signer          = TransferTransactionBuffer.CreatePublicKeyVector(builder, GetSigner());
            var recipientVector = TransferTransactionBuffer.CreateRecipientVector(builder, Encoding.UTF8.GetBytes(Address.Plain));

            if (Message == null)
            {
                Message = EmptyMessage.Create();
            }
            var messageBytePayload = Message.GetPayload();
            var payload            = MessageBuffer.CreatePayloadVector(builder, messageBytePayload);

            var messageBuff = new Offset <MessageBuffer> [1];

            MessageBuffer.StartMessageBuffer(builder);

            if (messageBytePayload.Length > 0)
            {
                MessageBuffer.AddType(builder, Message.GetMessageType().GetValue());
            }
            if (messageBytePayload.Length > 0)
            {
                MessageBuffer.AddPayloadLen(builder, messageBytePayload.Length);
            }
            if (messageBytePayload.Length > 0)
            {
                MessageBuffer.AddPayload(builder, payload);
            }

            messageBuff[0] = MessageBuffer.EndMessageBuffer(builder);

            var messageVector = TransferTransactionBuffer.CreateMessageVector(builder, messageBuff);

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

            for (var index = 0; index < Mosaics.Count; index++)
            {
                var mosaic           = Mosaics[index];
                var namespaceVector  = MosaicBuffer.CreateNamespaceStringVector(builder, Encoding.UTF8.GetBytes(mosaic.NamespaceName));
                var mosaicNameVector = MosaicBuffer.CreateMosaicIdStringVector(builder, Encoding.UTF8.GetBytes(mosaic.MosaicName));

                MosaicBuffer.StartMosaicBuffer(builder);

                var nsLen = Encoding.Default.GetBytes(mosaic.NamespaceName).Length;
                var msLen = Encoding.Default.GetBytes(mosaic.MosaicName).Length;

                MosaicBuffer.AddMosaicStructureLen(builder, 20 + nsLen + msLen);
                MosaicBuffer.AddMosaicIdStructureLen(builder, nsLen + msLen + 8);
                MosaicBuffer.AddNamespaceIdLen(builder, nsLen);
                MosaicBuffer.AddNamespaceString(builder, namespaceVector);
                MosaicBuffer.AddMosaicIdLen(builder, msLen);
                MosaicBuffer.AddMosaicIdString(builder, mosaicNameVector);
                MosaicBuffer.AddQuantity(builder, mosaic.Amount);

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

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

            TransferTransactionBuffer.StartTransferTransactionBuffer(builder);

            TransferTransactionBuffer.AddTransactionType(builder, TransactionType.GetValue());
            TransferTransactionBuffer.AddVersion(builder, BitConverter.ToInt16(new byte[] { ExtractVersion(Version), 0 }, 0));
            TransferTransactionBuffer.AddNetwork(builder, BitConverter.ToInt16(new byte[] { 0, NetworkType.GetNetwork() }, 0));
            TransferTransactionBuffer.AddTimestamp(builder, NetworkTime.EpochTimeInMilliSeconds());
            TransferTransactionBuffer.AddPublicKeyLen(builder, 32);
            TransferTransactionBuffer.AddPublicKey(builder, signer);
            TransferTransactionBuffer.AddFee(builder, Fee);
            TransferTransactionBuffer.AddDeadline(builder, Deadline.Ticks);
            TransferTransactionBuffer.AddRecipientLen(builder, 40);
            TransferTransactionBuffer.AddRecipient(builder, recipientVector);
            TransferTransactionBuffer.AddAmount(builder, 1000000);
            TransferTransactionBuffer.AddMessageFieldLen(builder, Message.GetLength() == 0 ? 0 : Message.GetLength() + 8);
            TransferTransactionBuffer.AddMessage(builder, messageVector);
            TransferTransactionBuffer.AddNoOfMosaics(builder, Mosaics.Count);
            TransferTransactionBuffer.AddMosaics(builder, mosaicsVector);

            var codedTransfer = TransferTransactionBuffer.EndTransferTransactionBuffer(builder);

            builder.Finish(codedTransfer.Value);

            return(new TransferTransactionSchema().Serialize(builder.SizedByteArray()));
        }
Beispiel #5
0
        internal override byte[] GenerateBytes()
        {
            var builder = new FlatBufferBuilder(1);

            var signer                    = MosaicDefinitionTransactionBuffer.CreatePublicKeyVector(builder, GetSigner());
            var creatorVector             = MosaicDefinitionTransactionBuffer.CreateCreatorPublicKeyVector(builder, Creator.PublicKey.FromHex());
            var descriptionVector         = MosaicDefinitionTransactionBuffer.CreateDescriptionStringVector(builder, Encoding.UTF8.GetBytes(Description));
            var nammespaceVector          = MosaicDefinitionTransactionBuffer.CreateNamespaceIdStringVector(builder, Encoding.UTF8.GetBytes(Mosaic.NamespaceId));
            var mosaicNameVector          = MosaicDefinitionTransactionBuffer.CreateMosaicNameStringVector(builder, Encoding.UTF8.GetBytes(Mosaic.Name));
            var feeSinkVector             = MosaicDefinitionTransactionBuffer.CreateFeeSinkAddressVector(builder, Encoding.UTF8.GetBytes(new Address("53e140b5947f104cabc2d6fe8baedbc30ef9a0609c717d9613de593ec2a266d3", NetworkType).Plain));
            var definitionStructureLength = 60 + Encoding.UTF8.GetBytes(Mosaic.NamespaceId).Length + Encoding.UTF8.GetBytes(Mosaic.Name).Length + Encoding.UTF8.GetBytes(Description).Length;

            var propertiesOffset = new Offset <MosaicPropertyBuffer> [4];

            foreach (var property in Properties.Properties)
            {
                var name  = Encoding.Default.GetBytes(property.Item1);
                var value = Encoding.Default.GetBytes(property.Item2.ToLower());

                definitionStructureLength += 12 + name.Length + value.Length;

                var nameVector  = MosaicPropertyBuffer.CreatePropertyNameVector(builder, name);
                var valueVector = MosaicPropertyBuffer.CreatePropertyValueVector(builder, value);

                MosaicPropertyBuffer.StartMosaicPropertyBuffer(builder);

                MosaicPropertyBuffer.AddLengthOfPropertyStructure(builder, 8 + name.Length + value.Length);
                MosaicPropertyBuffer.AddLengthOfPropertyName(builder, name.Length);
                MosaicPropertyBuffer.AddPropertyName(builder, nameVector);
                MosaicPropertyBuffer.AddLengthOfPropertyValue(builder, value.Length);
                MosaicPropertyBuffer.AddPropertyValue(builder, valueVector);

                propertiesOffset[Properties.Properties.IndexOf(property)] = MosaicPropertyBuffer.EndMosaicPropertyBuffer(builder);
            }

            var mosaicPropertyVector = MosaicDefinitionTransactionBuffer.CreatePropertiesVector(builder, propertiesOffset);

            var levyVector = new Offset <MosaicLevyBuffer> [1];

            if (MosaicLevy != null)
            {
                var mosaicName    = Encoding.UTF8.GetBytes(MosaicLevy.Name);
                var namespaceName = Encoding.UTF8.GetBytes(MosaicLevy.NamespaceId);
                var recipient     = Encoding.UTF8.GetBytes(MosaicLevy.Recipient.Plain);

                definitionStructureLength += 68 + namespaceName.Length + mosaicName.Length;

                var mosaicLevyNameVector    = MosaicLevyBuffer.CreateMosaicNameStringVector(builder, mosaicName);
                var namespaceLevyNameVector = MosaicLevyBuffer.CreateNamespaceIdStringVector(builder, namespaceName);
                var recipientVector         = MosaicLevyBuffer.CreateRecipientAddressVector(builder, recipient);

                MosaicLevyBuffer.StartMosaicLevyBuffer(builder);

                MosaicLevyBuffer.AddLengthOfLevyStructure(builder, 68 + namespaceName.Length + mosaicName.Length);
                MosaicLevyBuffer.AddFeeType(builder, MosaicLevy.FeeType);
                MosaicLevyBuffer.AddLengthOfRecipientAddress(builder, 40);
                MosaicLevyBuffer.AddRecipientAddress(builder, recipientVector);
                MosaicLevyBuffer.AddLengthOfMosaicIdStructure(builder, 8 + namespaceName.Length + mosaicName.Length);
                MosaicLevyBuffer.AddLengthOfMosaicNamespaceId(builder, namespaceName.Length);
                MosaicLevyBuffer.AddNamespaceIdString(builder, namespaceLevyNameVector);
                MosaicLevyBuffer.AddLengthMosaicNameString(builder, mosaicName.Length);
                MosaicLevyBuffer.AddMosaicNameString(builder, mosaicLevyNameVector);
                MosaicLevyBuffer.AddFeeQuantity(builder, MosaicLevy.Fee);
                levyVector[0] = MosaicLevyBuffer.EndMosaicLevyBuffer(builder);
            }
            else
            {
                MosaicLevyBuffer.StartMosaicLevyBuffer(builder);
                MosaicLevyBuffer.AddLengthOfLevyStructure(builder, 0);
                levyVector[0] = MosaicLevyBuffer.EndMosaicLevyBuffer(builder);
            }

            var levyVectorOffset = MosaicDefinitionTransactionBuffer.CreateMosaicLevyVector(builder, levyVector);

            MosaicDefinitionTransactionBuffer.StartMosaicDefinitionTransactionBuffer(builder);

            var namespaceBytes   = Encoding.UTF8.GetBytes(Mosaic.NamespaceId);
            var mosaicNameBytes  = Encoding.UTF8.GetBytes(Mosaic.Name);
            var descriptionBytes = Encoding.UTF8.GetBytes(Description);

            MosaicDefinitionTransactionBuffer.AddTransactionType(builder, TransactionType.GetValue());
            MosaicDefinitionTransactionBuffer.AddVersion(builder, BitConverter.ToInt16(new byte[] { ExtractVersion(Version), 0 }, 0));
            MosaicDefinitionTransactionBuffer.AddNetwork(builder, BitConverter.ToInt16(new byte[] { 0, NetworkType.GetNetwork() }, 0));
            MosaicDefinitionTransactionBuffer.AddTimestamp(builder, NetworkTime.EpochTimeInMilliSeconds());
            MosaicDefinitionTransactionBuffer.AddPublicKeyLen(builder, 32);
            MosaicDefinitionTransactionBuffer.AddPublicKey(builder, signer);
            MosaicDefinitionTransactionBuffer.AddFee(builder, Fee);
            MosaicDefinitionTransactionBuffer.AddDeadline(builder, Deadline.TimeStamp);
            MosaicDefinitionTransactionBuffer.AddMosaicDefinitionStructureLength(builder, definitionStructureLength);
            MosaicDefinitionTransactionBuffer.AddLengthCreatorPublicKey(builder, 32);
            MosaicDefinitionTransactionBuffer.AddCreatorPublicKey(builder, creatorVector);
            MosaicDefinitionTransactionBuffer.AddLengthOfMosaicIdStructure(builder, 8 + namespaceBytes.Length + mosaicNameBytes.Length);
            MosaicDefinitionTransactionBuffer.AddLengthOfNamespaceIdString(builder, namespaceBytes.Length);
            MosaicDefinitionTransactionBuffer.AddNamespaceIdString(builder, nammespaceVector);
            MosaicDefinitionTransactionBuffer.AddLengthOfMosaicNameString(builder, mosaicNameBytes.Length);
            MosaicDefinitionTransactionBuffer.AddMosaicNameString(builder, mosaicNameVector);
            MosaicDefinitionTransactionBuffer.AddLengthOfDescription(builder, descriptionBytes.Length);
            MosaicDefinitionTransactionBuffer.AddDescriptionString(builder, descriptionVector);
            MosaicDefinitionTransactionBuffer.AddNoOfProperties(builder, 4);
            MosaicDefinitionTransactionBuffer.AddProperties(builder, mosaicPropertyVector);
            MosaicDefinitionTransactionBuffer.AddMosaicLevy(builder, levyVectorOffset);
            MosaicDefinitionTransactionBuffer.AddLenFeeSinkAddress(builder, 40);
            MosaicDefinitionTransactionBuffer.AddFeeSinkAddress(builder, feeSinkVector);
            MosaicDefinitionTransactionBuffer.AddFeeQuantity(builder, 10000000);

            var transction = MosaicDefinitionTransactionBuffer.EndMosaicDefinitionTransactionBuffer(builder);

            builder.Finish(transction.Value);

            var temp = new MosaicDefinitionTransactionSchema().Serialize(builder.SizedByteArray());

            return(MosaicLevy == null?temp.Take(temp.Length - 61).Concat(temp.Skip(temp.Length - 52)).ToArray() : temp);  // hackery to remove default flatbuffers values when no levy is included.
        }
Beispiel #6
0
        internal override byte[] GenerateBytes()
        {
            var builder          = new FlatBufferBuilder(1);
            var mosaicName       = Encoding.UTF8.GetBytes(MosaicId.Name);
            var namespaceName    = Encoding.UTF8.GetBytes(MosaicId.NamespaceId.Name);
            var signerVector     = SupplyChangeBuffer.CreatePublicKeyVector(builder, GetSigner());
            var namespaceVector  = SupplyChangeBuffer.CreateNamespaceIdstringVector(builder, namespaceName);
            var mosaicNameVector = SupplyChangeBuffer.CreateMosaicNameStringVector(builder, mosaicName);

            SupplyChangeBuffer.StartSupplyChangeBuffer(builder);

            SupplyChangeBuffer.AddTransactionType(builder, TransactionType.GetValue());
            SupplyChangeBuffer.AddVersion(builder, BitConverter.ToInt16(new byte[] { ExtractVersion(Version), 0 }, 0));
            SupplyChangeBuffer.AddNetwork(builder, BitConverter.ToInt16(new byte[] { 0, NetworkType.GetNetwork() }, 0));
            SupplyChangeBuffer.AddTimestamp(builder, NetworkTime.EpochTimeInMilliSeconds());
            SupplyChangeBuffer.AddPublicKeyLen(builder, 32);
            SupplyChangeBuffer.AddPublicKey(builder, signerVector);
            SupplyChangeBuffer.AddFee(builder, Fee);
            SupplyChangeBuffer.AddDeadline(builder, Deadline.Ticks);
            SupplyChangeBuffer.AddLengthOfMosaicIdStructure(builder, 8 + namespaceName.Length + mosaicName.Length);
            SupplyChangeBuffer.AddLengthOfNamespaceIdString(builder, namespaceName.Length);
            SupplyChangeBuffer.AddNamespaceIdstring(builder, namespaceVector);
            SupplyChangeBuffer.AddLengthOfMosaicNameString(builder, mosaicName.Length);
            SupplyChangeBuffer.AddMosaicNameString(builder, mosaicNameVector);
            SupplyChangeBuffer.AddSupplyType(builder, SupplyType);
            SupplyChangeBuffer.AddDelta(builder, Delta);

            var codedTransfer = ImportanceTransferBuffer.EndImportanceTransferBuffer(builder);

            builder.Finish(codedTransfer.Value);

            return(new SupplyChangeTransactionSchema().Serialize(builder.SizedByteArray()));
        }
Beispiel #7
0
        internal override byte[] GenerateBytes()
        {
            var builder = new FlatBufferBuilder(1);
            var signer  = ProvisionNamespaceTransactionBuffer.CreatePublicKeyVector(builder, GetSigner());
            var sink    = ProvisionNamespaceTransactionBuffer.CreateSinkAddressStringVector(builder, GetFeeSinkAddress());
            var newPart = ProvisionNamespaceTransactionBuffer.CreateNewPartStringVector(builder, Encoding.UTF8.GetBytes(NewPart));

            var parent = new VectorOffset();

            if (Parent != null)
            {
                parent = ProvisionNamespaceTransactionBuffer.CreateParentStringVector(builder, Encoding.UTF8.GetBytes(Parent));
            }

            ProvisionNamespaceTransactionBuffer.StartProvisionNamespaceTransaction(builder);

            ProvisionNamespaceTransactionBuffer.AddTransactionType(builder, TransactionType.GetValue());
            ProvisionNamespaceTransactionBuffer.AddVersion(builder, BitConverter.ToInt16(new byte[] { ExtractVersion(Version), 0 }, 0));
            ProvisionNamespaceTransactionBuffer.AddNetwork(builder, BitConverter.ToInt16(new byte[] { 0, NetworkType.GetNetwork() }, 0));
            ProvisionNamespaceTransactionBuffer.AddTimestamp(builder, NetworkTime.EpochTimeInMilliSeconds());
            ProvisionNamespaceTransactionBuffer.AddPublicKeyLen(builder, 32);
            ProvisionNamespaceTransactionBuffer.AddPublicKey(builder, signer);
            ProvisionNamespaceTransactionBuffer.AddFee(builder, Fee);
            ProvisionNamespaceTransactionBuffer.AddDeadline(builder, Deadline.Ticks);
            ProvisionNamespaceTransactionBuffer.AddSinkAddressLength(builder, 40);
            ProvisionNamespaceTransactionBuffer.AddSinkAddressString(builder, sink);
            ProvisionNamespaceTransactionBuffer.AddRentalFee(builder, Parent == null ? 0x5F5E100 : 0x989680);
            ProvisionNamespaceTransactionBuffer.AddNewPartLength(builder, Encoding.UTF8.GetBytes(NewPart).Length);
            ProvisionNamespaceTransactionBuffer.AddNewPartString(builder, newPart);
            ProvisionNamespaceTransactionBuffer.AddParentLength(builder, Parent == null ? 4294967295 : (uint)Encoding.UTF8.GetBytes(Parent).Length); // 14
            if (Parent != null)
            {
                ProvisionNamespaceTransactionBuffer.AddParentString(builder, parent);
            }

            var codedTransfer = ProvisionNamespaceTransactionBuffer.EndProvisionNamespaceTransaction(builder);

            builder.Finish(codedTransfer.Value);

            var tempBytes = new ProvisionNamespaceSchema().Serialize(builder.SizedByteArray());

            return(Parent == null?tempBytes.Take(tempBytes.Length - 1).ToArray() : tempBytes);
        }
Beispiel #8
0
        internal override byte[] GenerateBytes()
        {
            var innerTransactionBytes = InnerTransaction.GenerateBytes();
            var builder          = new FlatBufferBuilder(1);
            var signer           = MultisigTransactionBuffer.CreatePublicKeyVector(builder, GetSigner());
            var innerTransaction = MultisigTransactionBuffer.CreateInnerTransactionBytesVector(builder, innerTransactionBytes);

            MultisigTransactionBuffer.StartMultisigTransactionBuffer(builder);

            MultisigTransactionBuffer.AddTransactionType(builder, TransactionType.GetValue());
            MultisigTransactionBuffer.AddVersion(builder, BitConverter.ToInt16(new byte[] { ExtractVersion(Version), 0 }, 0));
            MultisigTransactionBuffer.AddNetwork(builder, BitConverter.ToInt16(new byte[] { 0, NetworkType.GetNetwork() }, 0));
            MultisigTransactionBuffer.AddTimestamp(builder, NetworkTime.EpochTimeInMilliSeconds());
            MultisigTransactionBuffer.AddPublicKeyLen(builder, 32);
            MultisigTransactionBuffer.AddPublicKey(builder, signer);
            MultisigTransactionBuffer.AddFee(builder, Fee);
            MultisigTransactionBuffer.AddDeadline(builder, Deadline.Ticks);
            MultisigTransactionBuffer.AddInnerTransactionLength(builder, innerTransactionBytes.Length);
            MultisigTransactionBuffer.AddInnerTransactionBytes(builder, innerTransaction);

            var codedTransfer = MultisigTransactionBuffer.EndMultisigTransactionBuffer(builder);

            builder.Finish(codedTransfer.Value);

            return(new MultisigTransactionSchema().Serialize(builder.SizedByteArray()));
        }
        internal override byte[] GenerateBytes()
        {
            var builder = new FlatBufferBuilder(1);
            var signer  = SignatureTransactionBuffer.CreatePublicKeyVector(builder, GetSigner());
            var hash    = SignatureTransactionBuffer.CreateHashVector(builder, OtherHash.FromHex());
            var address = SignatureTransactionBuffer.CreateMultisigAddressVector(builder, Encoding.UTF8.GetBytes(MultisigAddress.Plain));

            SignatureTransactionBuffer.StartSignatureTransactionBuffer(builder);

            SignatureTransactionBuffer.AddTransactionType(builder, TransactionType.GetValue());
            SignatureTransactionBuffer.AddVersion(builder, BitConverter.ToInt16(new byte[] { ExtractVersion(Version), 0 }, 0));
            SignatureTransactionBuffer.AddNetwork(builder, BitConverter.ToInt16(new byte[] { 0, NetworkType.GetNetwork() }, 0));
            SignatureTransactionBuffer.AddTimestamp(builder, NetworkTime.EpochTimeInMilliSeconds());
            SignatureTransactionBuffer.AddPublicKeyLen(builder, 32);
            SignatureTransactionBuffer.AddPublicKey(builder, signer);
            SignatureTransactionBuffer.AddFee(builder, Fee);
            SignatureTransactionBuffer.AddDeadline(builder, Deadline.Ticks);
            SignatureTransactionBuffer.AddHashObjLength(builder, 0x24);
            SignatureTransactionBuffer.AddSha3HashLength(builder, 0x20);
            SignatureTransactionBuffer.AddHash(builder, hash);
            SignatureTransactionBuffer.AddAddressLength(builder, 0x28);
            SignatureTransactionBuffer.AddMultisigAddress(builder, address);

            var result = SignatureTransactionBuffer.EndSignatureTransactionBuffer(builder);

            builder.Finish(result.Value);

            return(new SignatureTransactionSchema().Serialize(builder.SizedByteArray()));
        }
        internal override byte[] GenerateBytes()
        {
            var builder = new FlatBufferBuilder(1);
            var signer  = ImportanceTransferBuffer.CreatePublicKeyVector(builder, GetSigner());
            var remote  = ImportanceTransferBuffer.CreateRemotePublicKeyVector(builder, RemoteAccount.PublicKey.FromHex());

            ImportanceTransferBuffer.StartImportanceTransferBuffer(builder);

            ImportanceTransferBuffer.AddTransactionType(builder, TransactionType.GetValue());
            ImportanceTransferBuffer.AddVersion(builder, BitConverter.ToInt16(new byte[] { ExtractVersion(Version), 0 }, 0));
            ImportanceTransferBuffer.AddNetwork(builder, BitConverter.ToInt16(new byte[] { 0, NetworkType.GetNetwork() }, 0));
            ImportanceTransferBuffer.AddTimestamp(builder, NetworkTime.EpochTimeInMilliSeconds());
            ImportanceTransferBuffer.AddPublicKeyLen(builder, 32);
            ImportanceTransferBuffer.AddPublicKey(builder, signer);
            ImportanceTransferBuffer.AddFee(builder, Fee);
            ImportanceTransferBuffer.AddDeadline(builder, Deadline.TimeStamp);
            ImportanceTransferBuffer.AddMode(builder, Mode.GetValue());
            ImportanceTransferBuffer.AddRemotePublicKeyLen(builder, 32);
            ImportanceTransferBuffer.AddRemotePublicKey(builder, remote);

            var codedTransfer = ImportanceTransferBuffer.EndImportanceTransferBuffer(builder);

            builder.Finish(codedTransfer.Value);

            return(new ImportanceTransferSchema().Serialize(builder.SizedByteArray()));
        }
Beispiel #11
0
        internal override byte[] GenerateBytes()
        {
            var builder = new FlatBufferBuilder(1);
            var signer  = MultisigAggregateModificationBuffer.CreatePublicKeyVector(builder, GetSigner());

            var mods = new Offset <ModificationBuffer> [Modifications.Count];

            for (var index = 0; index < Modifications.Count; index++)
            {
                var cosig = ModificationBuffer.CreateCosignatoryPublicKeyVector(builder, Modifications[index].CosignatoryPublicKey.PublicKey.FromHex());

                ModificationBuffer.StartModificationBuffer(builder);

                ModificationBuffer.AddStructureLength(builder, 0x28);
                ModificationBuffer.AddModificationType(builder, Modifications[index].ModificationType.GetValue());
                ModificationBuffer.AddCosignatoryPublicKeyLen(builder, 32);
                ModificationBuffer.AddCosignatoryPublicKey(builder, cosig);

                mods[index] = ModificationBuffer.EndModificationBuffer(builder);
            }

            var modificationsVector = MultisigAggregateModificationBuffer.CreateModificationsVector(builder, mods);

            MultisigAggregateModificationBuffer.StartMultisigAggregateModificationBuffer(builder);

            MultisigAggregateModificationBuffer.AddTransactionType(builder, TransactionType.GetValue());
            MultisigAggregateModificationBuffer.AddVersion(builder, BitConverter.ToInt16(new byte[] { ExtractVersion(Version), 0 }, 0));
            MultisigAggregateModificationBuffer.AddNetwork(builder, BitConverter.ToInt16(new byte[] { 0, NetworkType.GetNetwork() }, 0));
            MultisigAggregateModificationBuffer.AddTimestamp(builder, NetworkTime.EpochTimeInMilliSeconds());
            MultisigAggregateModificationBuffer.AddPublicKeyLen(builder, 32);
            MultisigAggregateModificationBuffer.AddPublicKey(builder, signer);
            MultisigAggregateModificationBuffer.AddFee(builder, Fee);
            MultisigAggregateModificationBuffer.AddDeadline(builder, Deadline.Ticks);
            MultisigAggregateModificationBuffer.AddNumerOfModifications(builder, Modifications.Count);
            MultisigAggregateModificationBuffer.AddModifications(builder, modificationsVector);
            MultisigAggregateModificationBuffer.AddMinimumCosignatoriesLength(builder, RelativeChange == 0 ? 0 : 0x04);
            if (RelativeChange > 0)
            {
                MultisigAggregateModificationBuffer.AddRelativeChange(builder, RelativeChange);
            }

            var codedTransfer = MultisigAggregateModificationBuffer.EndMultisigAggregateModificationBuffer(builder);

            builder.Finish(codedTransfer.Value);

            var bytes = new MultisigAggregateModificationSchema().Serialize(builder.SizedByteArray());

            return(RelativeChange > 0 ? bytes : bytes.Take(0, bytes.Length - 1)); // flatbuffers is appending 0x00 to the stream as a default value due to the missing relative change when its not included in the transaction so im just cutting off the 0x00 as a short term fix. will fix sometime this decade.
        }
Beispiel #12
0
 /// <summary>
 /// Get current network type.
 /// </summary>
 /// <returns>an IObservable of NetworkTypeDTO</returns>
 public IObservable <NetworkType.Types> GetNetworkType()
 {
     return(Observable.FromAsync(async ar => await NetworkRoutesApi.GetNetworkTypeAsync()).Select(e => NetworkType.GetNetwork(e.Name)));
 }