Beispiel #1
0
 public TransactionHttpTests()
 {
     _transactionHttp = new TransactionHttp(BaseUrl)
     {
         NetworkType = NetworkType.MIJIN_TEST
     };
 }
        public async Task Get_Embedded_transaction()
        {
            var transactionHttp = new TransactionHttp(BaseUrl)
            {
                NetworkType = NetworkType.TEST_NET
            };

            using (var httpTest = new HttpTest())
            {
                var fakeJson = TestHelper.LoadJsonFileToObject(@"Testdata\\Transactions\TransferTransactionWithSecureMessage.json");

                httpTest.RespondWithJson(fakeJson);

                const string transactionHash    = "C517CE2E84289A7BD6BF211F0288BD4462C3B4E69DFB1183E1EFCD5F262C46E5";
                const string receiverPrivateKey = "60ab183da625b86aff8d48b2eda22275cff31070b5e80f28663582fdcacf7425";
                const string senderPublicKey    = "F06FE22FBA1E116B8F0E673BA4EE424B16BD6EA7548ED259F3DCEBF8D74C49B9";
                var          transaction        = await transactionHttp.GetTransaction(transactionHash);

                // transaction.Should().BeNull();

                transaction.Should().BeOfType <TransferTransaction>();
                var transferTransaction = ((TransferTransaction)transaction);
                var messageType         = MessageTypeExtension.GetRawValue(transferTransaction.Message.GetMessageType());
                messageType.Should().BeEquivalentTo(MessageType.SECURED_MESSAGE);

                var securedMessage = (SecureMessage)transferTransaction.Message;
                var payload        = securedMessage.DecryptPayload(receiverPrivateKey, senderPublicKey);
                payload.Should().BeEquivalentTo("Test secure message");
            }
        }
Beispiel #3
0
        public async Task Get_Transfer_Transaction_With_Secure_Message()
        {
            var transactionHttp = new TransactionHttp(BaseUrl)
            {
                NetworkType = NetworkType.MIJIN_TEST
            };

            using (var httpTest = new HttpTest())
            {
                var fakeJson = TestHelper.LoadJsonFileToObject(@"Testdata\\Transactions\TransferTransactionWithSecureMessage.json");

                httpTest.RespondWithJson(fakeJson);

                const string transactionHash    = "1C296D86E85C0C80981FCD8302A96E41D9229316E1EE329E7BFECC4BF0282120";
                const string receiverPrivateKey = "EA947AB9CA50C31CFCD60B2C172173EAA7B0C56B173DDF235078A9A59AD218C5";
                const string senderPublicKey    = "D03918E35573C66578B5A0EED723FE2A46208783E13498751D9315115CA06D4B";
                var          transaction        = await transactionHttp.GetTransaction(transactionHash);

                transaction.Should().BeOfType <TransferTransaction>();
                var transferTransaction = ((TransferTransaction)transaction);
                var messageType         = MessageTypeExtension.GetRawValue(transferTransaction.Message.GetMessageType());
                messageType.Should().BeEquivalentTo(MessageType.SECURED_MESSAGE);

                var securedMessage = (SecureMessage)transferTransaction.Message;
                var payload        = securedMessage.DecryptPayload(receiverPrivateKey, senderPublicKey);
                payload.Should().BeEquivalentTo("Test secure message");
            }
        }
Beispiel #4
0
        public static async Task <bool> SendFromNewAccount(String message, Account newAcc)
        {
            KeyPair keyPair = KeyPair.CreateFromPrivateKey(newAcc.PrivateKey);

            var transaction = TransferTransaction.Create(
                NetworkType.Types.TEST_NET,
                Deadline.CreateHours(2),
                Address.CreateFromEncoded(Config.Address),
                new List <Mosaic> {
                Mosaic.CreateFromIdentifier("nem:xem", 10)
            },
                SecureMessage.Create(message, newAcc.PrivateKey, Config.PublicKey)
                );

            TransactionHttp   transactionHttp   = new TransactionHttp("http://" + Config.Domain + ":7890");
            SignedTransaction signedTransaction = transaction.SignWith(keyPair);

            Thread.Sleep(2000);
            await transactionHttp.Announce(signedTransaction);

            Thread.Sleep(2000);
            Console.WriteLine(signedTransaction.Hash);
            Console.WriteLine(Config.Address + " recve something from : " + newAcc.Address.Plain);

            return(true);
        }
Beispiel #5
0
        public TransactionClient(BlockchainNetworkConnection blockchainNetworkConnection)
        {
            TransactionHttp = new TransactionHttp(blockchainNetworkConnection.RestApiUrl);
            var uri = new Uri(blockchainNetworkConnection.RestApiUrl);

            BlockchainRestApiHost = uri.Host;
            BlockchainRestApiPort = uri.Port;
        }
        public TransactionHttpTests(ITestOutputHelper log)
        {
            Log = log;

            _transactionHttp = new TransactionHttp(BaseUrl)
            {
                NetworkType = NetworkType.TEST_NET
            };
        }
        public TransactionClient(BlockchainNetworkConnection blockchainNetworkConnection)
        {
            TransactionHttp = new TransactionHttp(blockchainNetworkConnection.RestApiUrl);
            BlockHttp       = new BlockHttp(blockchainNetworkConnection.RestApiUrl);
            var uri = new Uri(blockchainNetworkConnection.RestApiUrl);

            BlockchainRestApiHost = uri.Host;
            BlockchainRestApiPort = uri.Port;
            UseSSL = blockchainNetworkConnection.HttpProtocol == HttpProtocol.Https;
        }
 /// <summary>
 ///     Initializes a new instance of the <see cref="SiriusClient" /> class.
 /// </summary>
 /// <param name="host">The network host</param>
 public SiriusClient(string host = @"http://localhost:3000")
 {
     Host            = host;
     NetworkHttp     = new NetworkHttp(host);
     AccountHttp     = new AccountHttp(host, NetworkHttp);
     BlockHttp       = new BlockHttp(host, NetworkHttp);
     ChainHttp       = new ChainHttp(host, NetworkHttp);
     MetadataHttp    = new MetadataHttp(host, NetworkHttp);
     MosaicHttp      = new MosaicHttp(host, NetworkHttp);
     NamespaceHttp   = new NamespaceHttp(host, NetworkHttp);
     TransactionHttp = new TransactionHttp(host, NetworkHttp);
     NodeHttp        = new NodeHttp(host, NetworkHttp);
 }
        public string Announce(SignedTransaction signedTransaction, Address address)
        {
            CheckParameter(signedTransaction != null, "signedTransaction is required");
            CheckParameter(address != null, "address is required");

            var listener = GetListener();

            lock (listener)
            {
                listener.Open().Wait();
                try
                {
                    var failedTransactionStatusOb =
                        GetAddedFailedTransactionStatus(address, signedTransaction.Hash, listener);
                    var unconfirmedTransactionStatusOb =
                        GetAddedUnconfirmedTransactionStatus(address, signedTransaction.Hash, listener);

                    var firstTxnStatusTask = failedTransactionStatusOb.Merge(unconfirmedTransactionStatusOb).Select(
                        status =>
                    {
                        if (status.Equals(StatusForSuccessfulUnconfirmedTransaction))
                        {
                            return(status);
                        }
                        else
                        {
                            throw new AnnounceBlockchainTransactionFailureException(
                                $"Failed to announce transaction with status {status}");
                        }
                    }).FirstAsync().ToTask();

                    TransactionHttp.Announce(signedTransaction).Wait();
                    firstTxnStatusTask.Wait();
                    return(firstTxnStatusTask.Result);
                }
                catch (AnnounceBlockchainTransactionFailureException e)
                {
                    throw e;
                }
                catch (Exception e)
                {
                    throw new AnnounceBlockchainTransactionFailureException("Failed to announce transaction", e);
                }
                finally
                {
                    this.CloseListener(listener);
                }
            }
        }
        public async Task Get_transaction_by_group()
        {
            var transactionHttp = new TransactionHttp(BaseUrl)
            {
                NetworkType = NetworkType.TEST_NET
            };

            using (var httpTest = new HttpTest())
            {
                var fakeJson = TestHelper.LoadJsonFileToObject(@"Testdata\\Transactions\\GetTransactionByGroup.json");

                httpTest.RespondWithJson(fakeJson);

                var transaction = await transactionHttp.SearchTransactions(TransactionGroupType.confirmed, "04BEBF85816911E0DFEAA673B6A4141B28B8BC783A994BE074C7E65C9F98DECA");

                transaction.Should().NotBeNull();
            }
        }
Beispiel #11
0
        public static async void CreateTransaction(Account receiverAcc, String message)
        {
            KeyPair keyPair = KeyPair.CreateFromPrivateKey(Config.PrivateKeyMain);

            var transaction = TransferTransaction.Create(
                NetworkType.Types.TEST_NET,
                Deadline.CreateHours(2),
                Address.CreateFromEncoded(receiverAcc.Address.Plain),
                new List <Mosaic> {
                Mosaic.CreateFromIdentifier("nem:xem", 2000000)
            },
                SecureMessage.Create(message, Config.PrivateKeyMain, receiverAcc.PublicKey)
                );
            TransactionHttp   transactionHttp   = new TransactionHttp("http://" + Config.Domain + ":7890");
            SignedTransaction signedTransaction = transaction.SignWith(keyPair);

            Thread.Sleep(2000);
            await transactionHttp.Announce(signedTransaction);

            Console.WriteLine(signedTransaction.Hash);
            Console.WriteLine(receiverAcc.Address.Plain + " recve something from : " + Config.Address);
            Thread.Sleep(2000);
        }
Beispiel #12
0
        public static async Task <bool> CreateTransaction()
        {
            KeyPair keyPair = KeyPair.CreateFromPrivateKey(Config.PrivateKeyMain);

            var transaction = TransferTransaction.Create(
                NetworkType.Types.TEST_NET,
                Deadline.CreateHours(2),
                Address.CreateFromEncoded("TCPCAZ-7XJ2X4-SWR6AG-6BUEKS-6DQ7DL-Z2D6QB-5M2V"),
                new List <Mosaic> {
                Mosaic.CreateFromIdentifier("nem:xem", 10)
            },
                SecureMessage.Create("hello", Config.PrivateKeyMain, "d72f89db8d0a3655168c9d2abe8de2910aaf4506a47d46e22ca48c7e0442e8ef")
                );

            TransactionHttp   transactionHttp   = new TransactionHttp("http://" + Config.Domain + ":7890");
            SignedTransaction signedTransaction = transaction.SignWith(keyPair);

            Thread.Sleep(2000);
            await transactionHttp.Announce(signedTransaction);

            Console.WriteLine(signedTransaction.Hash);
            Thread.Sleep(2000);
            return(true);
        }
        public async Task Get_MosaicLevy_transaction()
        {
            var transactionHttp = new TransactionHttp(BaseUrl)
            {
                NetworkType = NetworkType.TEST_NET
            };

            using (var httpTest = new HttpTest())
            {
                var fakeJson = TestHelper.LoadJsonFileToObject(@"Testdata\\Transactions\\MosaicLevyTransaction.json");

                httpTest.RespondWithJson(fakeJson);

                const string transactionHash = "02D2E02F6162A4CBDAD8703085A2D9DE8E7C938A969071D76D0189858761CD8E";

                var transaction = await transactionHttp.GetTransaction(transactionHash);

                transaction.Should().NotBeNull();

                transaction.Should().BeOfType <ModifyMosaicLevyTransaction>();
                transaction.TransactionType.Should().BeEquivalentTo(EntityType.MODIFY_MOSAIC_LEVY);
                transaction.Signature.Should().BeEquivalentTo("DD7089233EC1899A2596EF2CB611F8EBDD7338006483EE936D6FC6EAF53EE29FB938BC4FC502C726C91E78B6F2981EDFA135F8811C0395729C1770CBE1D6CA09");
            }
        }
 internal TransactionClient(TransactionHttp transactionHttp, Listener listener)
 {
     TransactionHttp = transactionHttp;
     Listener        = listener;
 }
        public IObservable <Transaction> GetTransaction(string transactionHash)
        {
            CheckParameter(transactionHash != null, "transactionHash is required");

            return(TransactionHttp.GetTransaction(transactionHash));
        }