예제 #1
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()));
        }
        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()));
        }