Ejemplo n.º 1
0
        private TransferTransaction CreateTransaction(Address recipientAddress, int transactionDeadline,
                                                      List <Mosaic> transactionMosaics, IMessage message)
        {
            var mosaics = (transactionMosaics == null || transactionMosaics.Count <= 0) ? new List <Mosaic> {
                NetworkCurrencyMosaic.CreateRelative(0)
            } : transactionMosaics;

            var recipient = Recipient.From(recipientAddress);

            var builder = new TransferTransactionBuilder();

            var transferTransaction = builder
                                      .SetNetworkType(BlockchainNetworkConnection.NetworkType)
                                      .SetDeadline(Deadline.Create(transactionDeadline))
                                      .SetMosaics(mosaics)
                                      .SetRecipient(recipient)
                                      .SetMessage(message)
                                      .SetFeeCalculationStrategy(BlockchainNetworkConnection.FeeCalculationStrategy)
                                      .Build();

            return(transferTransaction);
        }
        public async Task Should_Announce_Transfer_Transaction_With_Default_Fee()
        {
            var account = Account.GenerateNewAccount(Fixture.NetworkType);
            var mosaic  = NetworkCurrencyMosaic.CreateRelative(10);
            var message = PlainMessage.Create("Test message");

            var builder = new TransferTransactionBuilder();

            var transferTransaction = builder
                                      .SetNetworkType(Fixture.NetworkType)
                                      .SetDeadline(Deadline.Create())
                                      .SetMosaics(new List <Mosaic>()
            {
                mosaic
            })
                                      .SetRecipient(Recipient.From(account.Address))
                                      .SetMessage(message)
                                      .SetFeeCalculationStrategy(FeeCalculationStrategyType.LOW)
                                      .Build();


            var signedTransaction = Fixture.SeedAccount.Sign(transferTransaction, Fixture.GenerationHash);

            Fixture.WatchForFailure(signedTransaction);

            //Log.WriteLine($"Going to announce transaction {signedTransaction.Hash}");

            var tx = Fixture.SiriusWebSocketClient.Listener.ConfirmedTransactionsGiven(Fixture.SeedAccount.Address).Take(1);

            await Fixture.SiriusClient.TransactionHttp.Announce(signedTransaction);

            var result = await tx;

            Log.WriteLine($"Transaction confirmed {result.TransactionInfo.Hash}");
            result.TransactionInfo.Hash.Should().NotBeNullOrWhiteSpace();
            //result.TransactionType.Should().Be(EntityType.TRANSFER);
            ((TransferTransaction)result).Message.GetMessageType().Should().Be(MessageType.PLAIN_MESSAGE.GetValueInByte());
        }